#ubuntu-classroom 2007-01-22
<nalioth> crazytales: yes, vesa
<nalioth> crazytales: once you figure out why your nv doesnt work, you can switch back to it
<nalioth> vesa will get you X
<crazytales2> 8D
<crazytales2> problem solved
<crazytales2> Thanks nalioth
<crazytales2> ...
<crazytales2> I still have a terminal session logged on. Three in fact.
<crazytales> Yup. I'm one.
<crazytales2> There we go
<crazytales2> I gotta reboot though, to get my hardware in order. My computer is laying on the floor with the cover off.
<Crazytales2> What's happening?
<Crazytales2> chris@phoenix:~$ slune
<Crazytales2> * Slune * Slune lives in /usr/share/games
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Video mode set failed : Couldn't find matching GLX visual
<Crazytales2> Exception exceptions.RuntimeError: <exceptions.RuntimeError instance at 0xb7d08b4c> in '_soya.init_video' ignored
<Crazytales2> * Soya 3D * Warning : glGetString returns NULL!
<Crazytales2> Segmentation fault
<Crazytales2> chris@phoenix:~$
<neuratix> glxinfo|grep rendering
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Error: couldn't find RGB GLX visual
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> Xlib:  extension "GLX" missing on display ":0.0".
<Crazytales2> is that bad?
<Crazytales2> i'm guessing so.
#ubuntu-classroom 2007-01-23
<Crazytales2> neuratix: ping
<neuratix> are you using xgl or something?
<Crazytales2> i don't know
<Crazytales2> I'm using whatever downloading the nvidia binary drivers got me.
<Crazytales2> !slune
<ubotu> slune: 3D racing and car-crashing game. In component universe, is optional. Version 1.0.12-1 (edgy), package size 10441 kB, installed size 25828 kB
<mwalsh> ok here
<mnoir> this is a public place for longer discussions
<mwalsh> i see
<mnoir> that others might want to see and also used as a lecture hall :)
<mwalsh> ok
<mnoir> you want to start?
<mwalsh> so big problems on the ubuntu front lol
<mwalsh> yessir
<mnoir> first - is your hardware fairly modern?  very new? odd in any way?
<mwalsh> built my rig in november, its really nice yes
<mnoir> ok - very new
<mnoir> you know what a bathtub curve is?
<mwalsh> no.
<mnoir> a statistical thingie that says in this case
<mnoir> that the very old and the very new hardware
<mnoir> are more prone to problems than the medium :)
<kiamo> lol
<kiamo> how did it get its name...
<mnoir> looks loke the cross section of an old fashioned bathtub
<mnoir> actually plots hardware failures
<mwalsh> i dont think this is a hardware based problem yet
* kiamo shrugs and says "fair enough"
<mnoir> mwalsh: the reason i mention it is cuz you mentioned HAL problems
<mwalsh> mhm
<mwalsh> which stands for
<mwalsh> that wasnt the only problem im having though
<mnoir> but we hold that point until evidence shows :)
<mnoir> ok - maybe i should let you list like the 5 big problems, i will not comment yet :)
<mwalsh> ok
<mwalsh> 1. Failed to initialize HAL On startup
<mwalsh> 2. WHen I try to play movies it says TOtem could not start up cannot open resource for writing
<mwalsh> 3. MY external hard drive only shows up when i do the ctrl. alt. backspace thing
<mwalsh> 4. My other internal hard drive wont show up at all
<mwalsh> 5. NOt all needed resolutions are listed and teh sound card isnt recognized.
<mnoir> 6.06 or 6.10 ?
<mwalsh> 6.10
<eternalswd> one thing, need to check if dbus is running, also is this a dist-upgrade or fresh?
<mwalsh> fresh
<mnoir> have you tried 6.06
<mnoir> ?
<mwalsh> nah, last one i used was hoary
<mwalsh> lol
<mnoir> how good are you in unix?
<mnoir> just a question....
<mnoir> :)
<mwalsh> im a windows person, complete nub at unix
<mnoir> k :)
<mnoir> lets take the easy ones first
<eternalswd> for reference, http://bugzilla.ubuntu.com/show_bug.cgi?id=17876
<mwalsh> lets.
<mnoir> eternalswd: ref to which #?
<eternalswd> 1.
<mnoir> ok - can i investigate 4 first?
<mwalsh> sure
<eternalswd> no problem.  might want to check and see if dbus-daemon is runnning on his computer though, just a thought
<mnoir> for 4 what kind of filesystem(s), what have you done to try to see them?
<mwalsh> aah why cant i scroll up?
<mwalsh> ok
<mnoir> eternalswd: i was thinking - could this affect the other problems?
<eternalswd> possibly
<mwalsh> uh the hard drive is ntfs
<mnoir> ok - short time on 4 then you get to lead on 1 :)
<mnoir> ok?
* mnoir is a critical outage manager in a previous lifetime :)
<eternalswd> yep
<kiamo> mnoir, please can you help me after :D
<mnoir> ok - mwalsh - what have you done to try to see your ntfs drive?
<mwalsh> i cried
<mnoir> did you see it during install?
<mwalsh> yes
<mnoir> uncle bill doesn't care if you cried :)
<mwalsh> yeah
<mnoir> nice thing about this channel - we can flood a little :)
<mnoir> please cat out your /etc/fstab and paste the line that says ntfs in it
<eternalswd> hmm, might want to check df to make sure it's not mounted.  could be the gui just isn't aware
<mnoir> paste here i mean
<mnoir> could be - in a term
<mnoir> type df
<mnoir> mwalsh: i mean you - in a terminal type df and return
<mwalsh> ok
<mwalsh> haha
<mwalsh> now wat
<mnoir> what came back at you?
<mwalsh> a bunch of listtings
<eternalswd> might want df -t ntfs?
<mwalsh> my internal hd isnt there
<mwalsh> it only has sda1 and sdc1, my external
<mwalsh> not sdb
<mnoir> oh - I see
<mwalsh> mhm
<mnoir> eternalswd: good call - is sdb supposed to be the ntfs?
<mwalsh> it is
<eternalswd> let me check, I've got one
<mnoir> not there at all - it is a usb external?
<mwalsh> ok sdc is the usb external, and that shows up... my sdb is my internal ntfs and it doesnt show up
<mnoir> oh - I see - so ext is showing up?
<mwalsh> yes
<mnoir> so we need to check why the ntfs is not showing up - first the config
<mwalsh> the ntfs external is showing up
<mnoir> paste the line that references it
<mwalsh> /dev/sdc1
<mnoir> whole line - i need the other end :)
<mwalsh> /dev/sdc1             78148160  13427600  64720560  18% /media/Ext. H
<eternalswd> hmm, I just noticed that my ntfs partition isn't mounted.  probably the same problem.  I never noticed since it's just a small partition for windows
<eternalswd> this may be a larger problem, goes off to google.
<mnoir> eww- that Ext. H looks ugly
<mwalsh> y
<mnoir> eternalswd: come back soon - you're valuable :)
<mnoir> mwalsh: cd /media please
<mwalsh> ok
<mnoir> so that is the external which is showing up, not the problem drive
<mwalsh> yes..
<mnoir> ok - have you looked at files there - you happy with that one
<mnoir> we are slightly distracted but it is all good learning :)
<mwalsh> kind of
<mnoir> meaning??
<mwalsh> well the video files on there wont open
<mwalsh> but thats a differenr problem.
<mnoir> different problem - i agree - add to the list :)
<mnoir> ok - back to the bad one
<mwalsh> it was on the list
<mnoir> ok - :)
<mnoir> lets go back to 4.
<mwalsh> mhm
<eternalswd> okay, I didn't have any problems manually mounting the ntfs drive.  should be able to at least test whether that works
<mnoir> eternalswd: we are about to check to see what to mount.
<eternalswd> ok
<mnoir> mwalsh: please type cat /etc/fstab
<mwalsh> ok
<eternalswd> cat /etc/fstab | grep ntfs        might help
<mnoir> eternalswd: i never can get the perms stuff right on other ppl's systems and never have the problem myself so stand by !
<mnoir> ok - file aint that long - if it is on the screen, paste the line with ntfs in it
<mwalsh> i did
<mwalsh> nothing happened
<mnoir> did what?
<mwalsh> i pasted that line
<mwalsh> with the ntfs
<mnoir> from the fstab?
<mwalsh> cat /etc/fstab | grep ntfs
<eternalswd> okay, that would be a problem.  this is a second drive right, not a second partition?
<mnoir> no output - that means the install did not add it
<mwalsh> correct
<mwalsh> its a second drive
<eternalswd> ls /dev | grep sdb
<eternalswd> to see if it's detected at least
* mnoir shuts up since he never seems to have this problem...
<mwalsh> it says sdb and sdb1
<mnoir> so sdb1 is a partition
<eternalswd> good, it's detected. let's first manually mount it, then we'll add a line to your fstab so it "should" mount on boot
<eternalswd> yes
<mwalsh> well its like an 8mb partitions
<eternalswd> sdb is the drive and 1 is the partition
<mwalsh> partition*
<mwalsh> yes
<mwalsh> yeah
<mwalsh> i guess
<mwalsh> so how do i mount this sucka
<mnoir> on the win side it only has one drive letter?
<mwalsh> yes!
<eternalswd> first decide on where you want to mount it to
<mwalsh> wat?
<mnoir> may i make a suggestion?
<eternalswd> you could choose a directory like /media/windows
<mnoir> you need to mount it in a place that sounds meaningful to you
<mwalsh> ok
<eternalswd> exactly
<mwalsh> /media/storage
<mnoir> what is on it?
<mwalsh> thats wut i want
<mwalsh> /media/storage
<eternalswd> ok
<mnoir> sounds ok
<eternalswd> mkdir /media/storage
<eternalswd> from term
<mwalsh> it says permission denied
<eternalswd> ok
<eternalswd> sudo mkdir /media/storage
<mwalsh> do ig otta be root
<mnoir> sudo pls
<eternalswd> then it will ask for your user password
<mwalsh> ok
<mwalsh> typed it in
<mnoir> sorry - not looking :)
<mwalsh> pressed enter
<eternalswd> pressed enter for the password?
<mwalsh> after i typed my password
<mnoir> and it came right back?
<mwalsh> it created it
<mnoir> good
<mnoir> have you heard the term mount point?
<eternalswd> sudo mount /dev/sdb1 /media/storage/ -t ntfs -o nls=utf8,umask=0222
<mwalsh> yes ive heard of mount points
<mwalsh> do i put that in terminal eternal?
<eternalswd> yeah, all of it on one line
<mnoir> eternalswd: why the slash after storage?
<mwalsh> aaah im confused
<eternalswd> not necessary
<mnoir> oh - I see
<mnoir> mwalsh: ask b4 typing then
<mwalsh> t just spat a whole bunch of crap at me
<eternalswd> was just force of habit of typing paths in the terminal all day long ;)
<mnoir> :)
<mnoir> paste here?
<mwalsh> well i think its becaue all that stuff wasnt on one line
<mnoir> must be! - do again
<eternalswd> ahh, that'll be problematic
<mwalsh> well
<mwalsh> it doesnt fit
<mnoir> impossible - the line goes on forever - do not worry about it wrapping
<eternalswd> well, as long as you didn't hit enter, it's on one line, it's just been wrapped
<mwalsh> ok
<mwalsh> ok its good
<mwalsh> noting happend
<mnoir> you can also make the terminal wider if you like :)
<eternalswd> what was spewed out?
<mnoir> came back to prompt?
<mwalsh> yeah
<mnoir> probably worked - unix is quiet like that :)
<mwalsh> yeah
<mwalsh> it did
<mnoir> cd to /media/storage
<mwalsh> i test this stuff by just pasting it again and if it says its alredy happening i assuem
<mwalsh> cd /storage
<mnoir> uuh - that can be dangerous
<mwalsh> lol
<mwalsh> oops
<mwalsh> ok i cd'd
<eternalswd> ls
<mnoir> what does ls show?
<eternalswd> list of files and directories
<mnoir> yours?
<mwalsh> yep
<mwalsh> works
<eternalswd> lol, I thought your were asking for explanation, got the student and teacher mixed up lol
<mwalsh> umm i still cant navigate to it yet
<mnoir> :)
<mnoir> mwalsh: what do you mean - in a gui?
<mwalsh> yes
<eternalswd> okay, first let's edit your fstab, then we'll move onto 1. that may fix it
<mnoir> nautilus should be able to get there...
<mwalsh> um.
<mwalsh> i go to places
<mwalsh> and computer
<mwalsh> and nothing involving it is there
<mnoir> patience - eternalswd may be on to something
<mnoir> sorry - i gotta get up early to feed the sheep - looks like you are in good hands :))
<mwalsh> feed the sheep?
<mnoir> l8r
<mwalsh> where do you live
<eternalswd> mwalsh, the menu hasn't detected it, but if you go to your home directory in nautilus, just click the folder up button and navigate to the root / and then open media and then storage
<mnoir> they refuse to write code without hay and grain
<mwalsh> haha
<mnoir> l8r :)
<mwalsh> thanks man
<mnoir> et - swat teaming is fun!
<mwalsh> none of that stuff is in root
<mwalsh> oh
<mwalsh> storage is here
<mwalsh> sweet1
<mwalsh> how do i get it to appear tho
<eternalswd> all in due time
<eternalswd> first let's edit your fstab so that it mounts at boot
<mwalsh> ok
<mwalsh> uh can we do this with the external also
<mwalsh> you stil here brother
<eternalswd> yes.  should work as long as you keep it plugged into the same slot
<mwalsh> ok
<mwalsh> so hwo
<eternalswd> what filesystem for the usb drive?
<mwalsh> ntfs
<eternalswd> okay.  you'll need to create another dir where you want to mount it to
<mwalsh> alright
<eternalswd> or as I recall, it's using /media/Ext. H
<eternalswd> currently
<mwalsh> i believe so
<eternalswd> well, you can leave it there, but one without spaces is preferable, something like /media/external
<mwalsh> ok
<mwalsh> so how do i do that
<eternalswd> sudo mkdir /media/external
<mwalsh> ok
<mwalsh> and how do i apply my hd to that
<eternalswd> you can leave it where it is for now, it will change when you reboot
<mwalsh> how will it magically know wat hd to put in there
<eternalswd> that's what the fstab file takes care of
<mwalsh> right
<mwalsh> nice transitionl ol
<eternalswd> first though, you said "df -t ntfs" didn't yield anything?
<eternalswd> try it again
<mwalsh> it yields my hd now
<eternalswd> but only that one, not the usb?
<mwalsh> no it gets hte usb one too
<eternalswd> oh, okay, good
<eternalswd> onto fstab
<mwalsh> right.
<eternalswd> first, we'll make a backup of your current one.  when editting system files backups are a must even when you think you know what you're doing
<eternalswd> sudo cp /etc/fstab /etc/fstab_backup
<mwalsh> hm oddly enough even while using windows ive never used one lol
<mwalsh> but i made it
<eternalswd> this will copy fstab to fstab_backup
<mwalsh> ok
<eternalswd> then we'll edit your fstab.
<mwalsh> ok
<eternalswd> gksu gedit /etc/fstab
<mwalsh> ok
<eternalswd> do ctrl+f and see if you can find a line for your usb drive
<eternalswd> you would search for sdc
<mwalsh> nah
<eternalswd> okay, we'll add two lines then, one for each drive.
<mwalsh> ok
<eternalswd> create a new line at the end of the file
<mwalsh> ok
<eternalswd> and paste the following line
<eternalswd> /dev/sdb1    /media/storage ntfs  nls=utf8,umask=0222 0    0
<mwalsh> ah i see wats going on here
<mwalsh> gotcha
<eternalswd> and the following
<eternalswd> /dev/sdc1    /media/external ntfs  nls=utf8,umask=0222 0    0
<eternalswd> on another new line
<mwalsh> uh sdc is highleited any reason
<eternalswd> that was from your find earlier
<mwalsh> oh ok
<mwalsh> cool
<mwalsh> so do i gotta restart now
<eternalswd> not yet, there's one other thing I want to see
<mwalsh> oko
<mwalsh> can i save this fstab
<eternalswd> yes
<mwalsh> would this have anythign to do with the HAL proble?
<eternalswd> and close it
<eternalswd> no, that's what I'm moving to now
<mwalsh> ok
* #ubuntu-classroom  [freenode-info]  why register and identify? your IRC nick is how people know you. http://freenode.net/faq.shtml#nicksetup
(mwalsh/#ubuntu-classroom) http://pastebin.ca/325340
(mwalsh/#ubuntu-classroom) sweet site ill have to use that to cheat in programming
<mwalsh> you still here
<eternalswd> alright, I'm checking on nvidia drivers right now
<mwalsh> k
<eternalswd> from term
<eternalswd> sudo apt-get install nvidia-glx
<eternalswd> may or may not be installed already
<mwalsh> its dling something
<eternalswd> good
<mwalsh> ok now wat
<eternalswd> go ahead and close gedit
<eternalswd> then from term
<eternalswd> sudo nvidia-xconfig
<mwalsh> ok
<mwalsh> now wat
<eternalswd> close all your programs then you may need to write this down since we have to restart X, so the gui will go down for a little and you be stuck at a fullscreen terminal
<mwalsh> ok hit me
<eternalswd> you press ctrl+alt+backspace to shutdown X.  fullscreen terminal will appear.  type the command startx and enter
<mwalsh> thats all?
<eternalswd> yep
<mwalsh> k
<mwalsh> ok dude
<mwalsh> now wut
<mwalsh> oh and
<mwalsh> it restarte automatically
<mwalsh> i didnt have to reput startx
<eternalswd> I forgot, there's I thing ctrl+alt+f1 or something where it's term only
<eternalswd> think*
<mwalsh> oh
<mwalsh> did i need to do that
<eternalswd> no
<mwalsh> ok
<eternalswd> check and see if your desired resolution is available now
<mwalsh> its not
<mwalsh> same resses up tjere
<mwalsh> no nvidia splashcreen either
<mwalsh> it sed somewher eon the website that hsoudl show up
<eternalswd> okay, may need a full restart, not sure
<mwalsh> okely dokely
<mwalsh> brb
<eternalswd> kiamo, still having problems?
<kiamo> yes
<kiamo> majorly
<kiamo> its closing in on the 3rd day of no joy now...
<mwalsh> ok dude i got the nvidia splashscreen but same resses and my ext. hd is gone now haah
<eternalswd> okay
<eternalswd> gksu gedit /etc/X11/xorg.conf
<eternalswd> and http://pastebin.ca again please
<mwalsh> http://pastebin.ca/325353
<mwalsh> it doesnt seem to recognize i have a widescreen display...
<eternalswd> 1440x900 is what you want?
<mwalsh> yes
<eternalswd> okay, in gedit, scroll down to the bottom
<mwalsh> k
<eternalswd> and in the lines with "1440x1440" add after that "1440x900"
<mwalsh> ok.. but even in the gui nothing higher than 1152x864 shows up
<mwalsh> do i save it now
<eternalswd> that's probably because gnome is detecting your wide screen and disallowing others
<mwalsh> ok
<mwalsh> so do i save the xorg.
<eternalswd> yeah
<mwalsh> now wat
<eternalswd> do ctrl+alt+backspace again.  if x fails to start, you'll need to "sudo cp /etc/X11/xorg.conf_backup /etc/X11/xorg.conf" and then "startx" from the fullscreen terminal
<eternalswd> kiamo, still not able to play video?
<kiamo> nope
<kiamo> not at all
<eternalswd> okay, what video card do you have, specific, not just brand
<kiamo> ati 1600+
<mwalsh> hell yes!
<mwalsh> this is so much better
<mwalsh> um any reason my external still isnt up tho
<eternalswd> mwalsh, not sure
<mwalsh> ha thats so random
<mwalsh> how do u check if it detected?
<eternalswd> from terminal "df -t ntfs"
<eternalswd> see if both drives show up
<mwalsh> nah
<mwalsh> only the internal
<eternalswd> hmm
<eternalswd> ls /dev | grep sdc
<mwalsh> yep
<mwalsh> detected
<eternalswd> strange it didn't mount
<mwalsh> mhm
<mwalsh> perhaps its the boot file thingy
<mwalsh> wutever its called
<eternalswd> sudo gedit /etc/fstab
<eternalswd> http://pastebin.ca it
<mwalsh> http://pastebin.ca/325369
<eternalswd> kiamo, is it an x1600, 1600 pro, or something else?
<eternalswd> mwalsh, the zeroes on those two lines need to be on the lines above
<mwalsh> ok
<kiamo> x1600 i believe
<mwalsh> wait
<mwalsh> why does the line above need two sets of zeroes
<eternalswd> maybe the paste got screwed.  http://pastebin.ca/325369 check lines 13 and 15
<eternalswd> see if that matches your file
<mwalsh> nah
<mwalsh> i think its wrapping tho
<mwalsh> OOO I see what i did
<mwalsh> haha im so stupid
<mwalsh> ok
<mwalsh> 1 more problem
<eternalswd> kiamo, what video player are you using?
<kiamo> mplayer, vlc, totem and xine
<eternalswd> mwalsh, what the problem?
<kiamo> dont think iv tried any others
<kiamo> vlc doesnt always restart x but somtimes just give a segmentation fault before closing itself
<mwalsh> every time i try to play a sounjd or video file it says totem could not start up could not open resource for writing
<kiamo> at some points in my struggles dvds would play in totem with out menus or subs but NOT if i tried to open the dvd via the menu, only as an auto run thing...
<eternalswd> kiamo, try using mplayer on the file.  using the terminal "mplayer -vo x11" instead of just mplayer
<eternalswd> mwalsh, yeah, you won't be able to play videos in totem without the sound set up
<eternalswd> mwalsh, you can use mplayer which has a -nosound option
<mwalsh> oh so totem just disables its ability to play
<eternalswd> it's trying to open the sound device for writing to
<eternalswd> specifically /dev/dsp or something similar
<mwalsh> oh ok
<mwalsh> so if i enable my mobo sound wuold it work
<eternalswd> I would think so.
<mwalsh> ok
<eternalswd> you might not get that hal error either, i'm not sure
<kiamo> ok mplayers playing the dvd but the aspec is all wrong...
<kiamo> mplayer does complain however about subfont.ttf not being there
<kiamo> hmm it also doesnt fullscreen properly
<kiamo> stays the same size in places black border around it
<eternalswd> kiamo, yeah, what version of ubuntu do you have?
<kiamo> 6.10
<eternalswd> try mplayer again but with -vo xv instead of x11
<eternalswd> see if any errors come up
<kiamo> x restarted
<eternalswd> ouch, didn't expect that
<mwalsh> oops eternal
<kiamo> its 6.10 x64 btw
<mwalsh> uh now wen i reboot neither of the ntfs are showing up, and i still get the HAL error evn tho the vids work
<kiamo> my other problem is creating a 32bit enviroment ;) but one at a time
<eternalswd> kiamo are you using mplayer 64-bit
<kiamo> must be
<kiamo> heh
<kiamo> yes i believe so, if memory serves...
<mwalsh> oh shit
<kiamo> i compiled it myself make install and all that
<mwalsh> uh all my files are gone in my ntfs hard drives... this isnt possible right?
<kiamo> mwalsh, they will still be there until the drive is formatted, its always recoverable
<mwalsh> i know
<mwalsh> but
<mwalsh> they didnt mount
<mwalsh> wen i rebooted
<kiamo> :(
<eternalswd> they didn't mount, so no files will show up in there.  they're still on the hard drive
<mwalsh> oh
<mwalsh> any reason why they didnt mount
<mwalsh> lol
<kiamo> :D
<kiamo> eternalswd, ideas?
<mwalsh> like the sound thing is recognized but i sitll get the HAL
<eternalswd> okay, give me just a minute, I'm looking something up
<mwalsh> wat is that startup thing its sudo gedit /etc/fsomething
<kiamo> fstab
<eternalswd> gksu gedit /etc/fstab
<mwalsh> hm everyhting seems normall.
<eternalswd> okay, found the problem, got it in mine too
<eternalswd> where it has 0222, that should be 222
<eternalswd> the umask
<mwalsh> oh ok
<kiamo> any thoughts on my video prob?
<mwalsh> nah man didnt do the trick
<eternalswd> kiamo, open up /var/log/Xorg.0.log and see what video card is being loaded
<kiamo> (II) GLX: Initialized MESA-PROXY GL provider for screen 0
<kiamo> thats not good...
<kiamo> isnt that wrong?
<kiamo> fglrxinfo gives me correct read out tho...
<eternalswd> kiamo, i figured as much.
<kiamo> so its my ati drivers for certain then?
<eternalswd> have you run "sudo fglrx-config"
<kiamo> think so
<eternalswd> mwalsh, try "sudo mount -a" from the terminal and see errors
<kiamo> if i remember it says nothing to config
<mwalsh> it says they dont exist
<kiamo> sudo: fglrx-config: command not found
<mwalsh> man were really screwed without this guy huh
<eternalswd> okay, i don't think you have ati drivers installed at all
<kiamo> i know mwalsh
<kiamo> huh...
<kiamo> but..
<kiamo> i do..
<kiamo> or did
<kiamo> at one point
<kiamo> lol
<kiamo> :'(
<eternalswd> you installed fglrx?
<kiamo> yea
<kiamo> several times
<kiamo> different ways
<kiamo> mostly following this
<kiamo> https://help.ubuntu.com/community/BinaryDriverHowto/ATI#head-d8c6fd05bce340dfc3ad483abf0e18997868540b-2
<eternalswd> okay, you probably want the ones directly from ati if you go the fglrx route
<kiamo> yea
<kiamo> the other way never worked
<eternalswd> mwalsh, i'll get to you in one second
<kiamo> and the ati.com way lead me to believe it did
<kiamo> fgl_glxgears displays the test thing perfectly
<kiamo> frames of over 500
<kiamo> and i do have an aticonfig?
<eternalswd> kiamo, do this "cat /etc/X11/xorg.conf | grep fglrx"
<eternalswd> mwalsh try http://pastebin.ca/325404 as your fstab.  copy from the box below to avoid the numbers
<eternalswd> then try "sudo mount -a" again
<kiamo>         Driver      "fglrx"
<eternalswd> kiamo, okay, so it appears to be set up correctly.
<kiamo> my drivers?
<eternalswd> your xorg.conf
<kiamo> excellant :)
<mwalsh> sweet!
<mwalsh> it worked
<kiamo> gratz :D
<eternalswd> mwalsh, okay, you should be set then.  the fact that they mounted now proves that the fstab will work at boot
<eternalswd> kiamo, "gksu synaptic" and search for xorg-driver-fglrx
<eternalswd> see what version is installed
<kiamo> 8.33.6-1
<kiamo> and it the same as the latest version
<eternalswd> i'm not sure why it's not working then.
<eternalswd> sometimes ati's are just like that
<kiamo> its devinatly a driver problem?
<kiamo> ati cant "just be like that" its not fair, i want to beable to watch videos!!!  ;(
* kiamo starts to cry after his 3day struggle...
<eternalswd> kaimo, "glxinfo | grep direct"
<eternalswd> get any feedback?
<kiamo> yes
<kiamo> it says yes..
<eternalswd> how about "lsmod | grep fglrx"
<kiamo> fglrx                 630224  9
<kiamo> why do i get the feeling all this is affirming that it should all be working fine...
<eternalswd> okay, it appears to be working then.  all I can say now then is I have know idea
<eternalswd> *no idea
<kiamo> hehe
<kiamo> thats ok
<kiamo> thanks ever so much for trying tho :)
<kiamo> seriously
<kiamo> at least im certain what the problem is now
<kiamo> :)
<kiamo> you mind still helping with other stuff?
<eternalswd> oh wait, there's one more thing I thought of
<kiamo> oo oo :D
<eternalswd> two things actually.  first, "sudo apt-get install libxv1" see if that's installed
<kiamo> nope
<eternalswd> it wasn't installed?
<kiamo> oh wait
<kiamo> sorry
<kiamo> yes
<kiamo> it is
<kiamo> its late for me ;) and i just read 0 newly installed
<kiamo> hehe
<eternalswd> okay, second thing, "cat /etc/X11/xorg.conf | grep VideoOverlay"
<eternalswd> paste your results
<kiamo>         Option      "VideoOverlay" "on"
<eternalswd> okay, now, "cat /etc/X11/xorg.conf | grep OpenGLOverlay"
<kiamo>         Option      "OpenGLOverlay" "off"
<eternalswd> well, now I've really exhausted my resources.  there is one thing you can try though.  you can try turning off the VideoOverlay and turning on OpenGLOverlay.  then when running mplayer, use -vo gl
<kiamo> i dont need to restart x do i?
<eternalswd> that should be better than x11, though worse than xv
<eternalswd> yeah, you'll need to restart X after editing your xorg.conf file
<kiamo> ah
<kiamo> whats the cmd to load a dvd again?
<kiamo> mpalyer dvd://DVD_VIDEO?
<eternalswd> mplayer dvd://1
<eternalswd> that's normally the movie track
<kiamo> file not found
<eternalswd> if you have dvdnav, you might just need mplayer dvd://
<kiamo> nope
<eternalswd> or rather mplayer dvdnav://
<kiamo> no
<kiamo> i didnt compile it in
<kiamo> lol this is silly
<eternalswd> hmm, then the first one should have worked
<eternalswd> do you have more than one drive?
<kiamo> iv been using ubuntu for 3 days and cant remember how to play a dvd
<kiamo> yea 2
<kiamo> dvdrw and dvdr
<eternalswd> okay, which one has the dvd in it?
<kiamo> cdrom1 its called
<kiamo> and its the dvdr
<eternalswd> okay, try mplayer --dvd-device /media/cdrom1 dvd://1
<kiamo> mplayer --dvd-device /media/cdrom1 dvd://1 -vo gl?
<eternalswd> yep. but it won't work right now, nut until you restart x.  since the opengloverlay is off right now
<kiamo> ah ok
<kiamo> brb
<kiamo> what was the cmd again?
<kiamo> lol
<eternalswd> mplayer --dvd-device /media/cdrom1 dvd://1 -vo gl
<kiamo> umm
<kiamo> MPlayer 1.0rc1-4.1.2 (C) 2000-2006 MPlayer Team
<kiamo> CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ (Family: 15, Model: 75, Stepping: 2)
<kiamo> CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1
<kiamo> Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE SSE2
<kiamo> The -gui option will only work as first commandline argument.
<kiamo> Unknown option on the command line: --dvd-device
<kiamo> Error parsing option on the command line: --dvd-device
<kiamo> with out --dvd-device worked
<kiamo> and it full screens properly
<eternalswd> good, you may see some artifacts sometimes, but it's alot better than x11.
<kiamo> indeed
<eternalswd> hopefully you'll get xv working someday
<kiamo> perhaps once ati release some new drivers?
<eternalswd> vlc should have a gl option as well.
<eternalswd> unfortunately ati isn't too fond of linux for some reason :(
<kiamo> i still however dont get a menu or subtitles
<kiamo> mplayer complains of missing subfont.ttf
<eternalswd> ahh, gmplayer instead of mplayer
<kiamo> yes
<kiamo> both complain
<kiamo> but both play the film
<kiamo> (dvd)
<eternalswd> okay for subfont.ttf, you can use any .ttf font file copy it to ~/.mplayer/subfont.ttf and that error should go away
<kiamo> where can i copy fonts from?
<kiamo> and sorry what was the mplayer cmd again?
<eternalswd> not sure, but you may be able to set it in the gui
<eternalswd> mplayer dvd://1 -vo gl
<eternalswd> or gmplayer dvd://1 -vo gl
<eternalswd> the -vo gl can be set in you mplayer config file ~/.mplayer/config as the line vo=gl
<eternalswd> then you don't need to do that at the command line every time
<kiamo> ah ha
<kiamo> what does the vo stand for?
<eternalswd> video out
<kiamo> video out opengl?
<eternalswd> yep
<kiamo> how do you spell arial.ttf
<kiamo> ?
<kiamo> i cant remember the exact name
<eternalswd> that's the correct spelling
<kiamo> weird i dont have it
<kiamo> will correcting this give me menus?
<eternalswd> you don't have menus when running gmplayer?
<kiamo> nope
<eternalswd> did you compile it yourself?
<kiamo> yea
<eternalswd> did you include --enable-menu on the ./configure line?
<kiamo> no..
<kiamo> didnt say to do son on the guid
<kiamo> just enablegui
<eternalswd> well the subfont.ttf is only the default font for subtitles.  menu should work in the gui.  so you might want to try recompiling with --enable-menu.  it's possible it wasn't necessary before but is now or something
<kiamo> hmm
<kiamo> can i just compile and make make install over the top?
<eternalswd> if you use the same prefix flag it'll just install right over
<kiamo> i get this message when ./configure
<kiamo> NOTE: Win32 codec DLLs are not supported on your CPU (x86_64) or your
<kiamo> operating system (Linux). You may encounter a few files that cannot
<kiamo> be played due to missing open source video/audio codec support.
<kiamo> ok well anyway
<kiamo> its making again
<eternalswd> yeah, win32 codecs don't work on 64-bit mplayer.  you'd have to make 32-bit mplayer for that
<kiamo> please can you help me create a 32bit enviroment for things like firefox and skype please ;)
<kiamo> oh?
<kiamo> and mplayer too then i guess...
<kiamo> hahaha
<eternalswd> sorry, I have absolutely no experience with that
<kiamo> ah ok then
<kiamo> thanks LOADS eternalswd
<kiamo> what do you do anyway?
<kiamo> where youf rom?
<eternalswd> no problem.
<eternalswd> I'm in college right now studying computer science
<kiamo> fun fun
<kiamo> i did that for 2 year
<kiamo> before taking a year outj
<kiamo> and then starting my degree again in game art design
<kiamo> uk?
<eternalswd> uk as in united kingdom? no US
<kiamo> ah
<kiamo> im from uk, its eeeaarly in the morning now ;)
<eternalswd> it's midnight here
<eternalswd> what is it, 5, 6 in the morning there?
<eternalswd> well, I'm glad I could help out a little, if you have more problems with mplayer, there's an #mplayer channel here on freenode
<eternalswd> I've got to head out now.
<mwalsh> anyone here?
<tonyyarusso> yeah
<mwalsh> anyone here?
<neuratix> yes
<nothlit> yes people are here
<nothlit> !anyone
<ubotu> A large amount of the first questions asked in this channel start with "Does anyone/anybody..."  Why not ask your next question (the real one) and find out?
<nothlit> !ask
<ubotu> Don't ask to ask a question. Just ask your question :)
<mwalsh> nayone here?
* mode/#ubuntu-classroom [+o tonyyarusso]  by ChanServ
* nalioth runs
* ..[topic/#ubuntu-classroom:tonyyarusso] : Ubuntu Open Week has now finished - thanks , everyone! | The classroom schedule is located at: https://wiki.ubuntu.com/Classroom | Transcripts and logs are at: https://wiki.ubuntu.com/ClassroomTranscripts and
<tonyyarusso> crud
* ..[topic/#ubuntu-classroom:tonyyarusso] : Ubuntu Open Week has now finished - thanks , everyone! | The classroom schedule is located at: https://wiki.ubuntu.com/Classroom | Transcripts and logs are at: https://wiki.ubuntu.com/ClassroomTranscripts
* mode/#ubuntu-classroom [-o tonyyarusso]  by ChanServ
<tonyyarusso> (That server isn't even running right now - in the shop, much less serving useful pages)
#ubuntu-classroom 2007-01-24
<jrib> SARA: hello
<SARA> heyy!
<jrib> ok, do you have the wiki page opened up (about backports)?
<SARA> yes
<jrib> Alright, go down to the section that says "How to use"
<SARA> ok
<jrib> Then "Through Synaptic Package Manager"
<jrib> That is the information we need.  Now open up Synaptic:  Applications > administration > synaptic
<SARA> got it
<jrib> ok, in synaptic, go to  Settings > repositories
<SARA> ok
<jrib> ok, I *think* this will work, we'll see: Go to the "Internet Updates" tab
<jrib> then you should see a checkbox for "Backported updates"
<SARA> i dont have the option
<jrib> which do you have?
<nalioth> ummm, i'd stay away from backports
<SARA> check for updates ...Dl updates in the background,but do not install and install security updates
<jrib> nalioth: for flash
<nothlit> nalioth, are they that unstable?
<jrib> SARA: erm ok.  Well go to the "Third Party" tab then
<nalioth> no, but can't you wait less than 6 months?
<nothlit> nalioth, what about people running LTS
<jrib> SARA: then hit the "add" button, and use this line: deb http://ca.archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
<SARA> which tab do i do that with
<jrib> SARA: Third Party
<SARA> dont have it
<nothlit> the repo UI is different depending on edgy or dapper
<jrib> SARA: you're using edgy?
<SARA> yeah
<nalioth> nothlit: LT(long term)S(tability)
<jrib> why is your synaptic so different than mine :/
<SARA> maybe i dont than...i had breezy and updated like 6 months ago
<jrib> !version
<ubotu> To find out what version of Ubuntu you have, type 'lsb_release -a' in the Terminal.
<nothlit> The choose Sources app was significantly improved in edgy
<nothlit> nalioth, ahh :)
<nothlit> 'Software Properties' i think
<nalioth> nothlit: unlike Windows(tm) where each release holds the hope of a more stable product, in linux, newer != better
<SARA> its not doing anything
<jrib> SARA: what did you type?
<SARA> 'lsb_release -a'
<jrib> SARA: no quotes
<nothlit> nalioth, depends on your usage, i like rolling releases
<jrib> SARA: hit ctrl-d if you are stuck
<nothlit> err ctrl+d is exit/logout
<jrib> no
<SARA> dapper
<SARA> sorry :(
<jrib> SARA: k, well we'll just do it manually
<jrib> SARA: enter this command exactly:   gksudo "gedit /etc/apt/sources.list"
<SARA> ok
<nothlit> jrib, no? ctrl-c is cancel/kill i thought
<SARA> in teminal
<SARA> ** (gedit:1338): CRITICAL **: gedit_plugin_update_ui: assertion `GEDIT_IS_PLUGIN (plugin)' failed
<nalioth> SARA: ignore the terminal
<nothlit> does gedit show up?
<SARA> ok i have a sources list that came up
<SARA> pastebin it?
<jrib> SARA: sure
<jrib> nothlit: yeah
<SARA> http://paste.ubuntu-nl.org/2715/
<jrib> SARA: change all of the "hoary" into "dapper"
<SARA> how?
<nalioth> no no no
<jrib> SARA: it's a text editor, edit your text :)
<nalioth> no no no no no
<nalioth> NO NO
<nalioth> don't do it
<jrib> heh, explain
<nalioth> can't skip releases
<jrib> nalioth: she's on dapper
<nalioth> you'll bugger the system royally
<jrib> nalioth: the hoary repos are commented out
<nalioth> ahhh
* nalioth is just making sure
<SARA> do i do it?
<SARA> ok well i did it so what do i do next?
<jrib> SARA: it's fine, alternatively you can just delete those lines
<SARA> save it?
<jrib> not yet
<SARA> ok
<jrib> SARA: change http://backports.ubuntuforums.org/backports to http://us.archive.ubuntu.com/ubuntu
<SARA> which one the first or second under primary mirros
<jrib> SARA: the first one.  The second line you can delete
<SARA> ok did it
<jrib> ok pastebin your new one if you want.  Or you can just save and exit
<SARA> http://paste.ubuntu-nl.org/2716/
<jrib> SARA: wait, you need to remove the # from the front of line 17 too
<SARA> huh
<SARA> i dont have 17 lines
<jrib> SARA: look at your pastebin
<jrib> http://paste.ubuntu-nl.org/2715/
<jrib> The one under #Primary Mirror (5/17/2005) overloaded :)
<SARA> just remove #
<jrib> yes
<SARA> ok
<jrib> ok
<jrib> do you want to pastebin it to be sure it is ok?
<SARA> http://paste.ubuntu-nl.org/2717/
<SARA> PLEASE!
<jrib> D:
<jrib> SARA: fix line 13, do you see the mistake?
<jrib> h-security is supposed to be dapper-security
<SARA> ok
<SARA> got it
<jrib> delete line 17
<jrib> it should read:
<jrib> deb http://ca.archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
<jrib> bah
<jrib> deb http://us.archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse
<jrib> use the last one^
<SARA> ok
<SARA> http://paste.ubuntu-nl.org/2718/
<SARA> ok hopefully this one is right
<jrib> nothlit: ctrl-d is just EOF, your shell decides to log you out if it wants to, but you can turn that off (just explaining my comment from before :)).  Though you are right, ctrl-c would have probably made more sense
<jrib> SARA: yes, now save and exit
<SARA> ok did that!
<jrib> type this command:
<jrib> sudo apt-get update
<SARA> 'Primary' is not known on line 16 in source list /etc/apt/sources.list
<jrib> oh I missed that
<SARA> haha :)
<jrib> gksudo "gedit /etc/apt/sources.list"
<jrib> add the # back in front of Primary
<SARA> ok
<SARA> did it
<jrib> save, exit, sudo apt-get update
<SARA> its not letting me save
<jrib> what does it say?
<nothlit> wow he said no 10 times lol
<nothlit> jrib, ah
<SARA> im in the read only for source list
<jrib> SARA: close it
<nothlit> jrib, i'm just used to ctrl+d = logout or exit at an empty prompt
<nothlit> jrib, only other time i use it is in checkinstall
<jrib> nothlit: ah
<SARA> ok i closed it
<jrib> SARA: this full command:  gksudo "gedit /etc/apt/sources.list"
<SARA> ok and add # again?
<jrib> yes
<SARA> then save a q?
<jrib> yes
<SARA> ok did it
<SARA> sudo apt-get update?
<jrib> yes
<SARA> ok
<nothlit> and then sudo apt-get install flashplugin-nonfree
<SARA> it installed
<SARA> but when i go to web pages it closes still
<jrib> SARA: what do you mean?  Your browser closes?
<SARA> yes
<SARA> welll i need flash player 7...says the saturn website
<jrib> SARA: which is it?  Your browser closes or sites ask you for flash?
<SARA> both well flash player is asked for some web site but when i go on like myspace and people have slide shows the brower closes
<jrib> SARA: what happens here: http://www.macromedia.com/software/flash/about/
<nothlit> err backports contains flash9
<nothlit> !info flashplugin-nonfree dapper
<ubotu> flashplugin-nonfree: Macromedia Flash Player plugin installer. In component multiverse, is optional. Version 7.0.63.3ubuntu3 (dapper), package size 16 kB, installed size 136 kB (Only available for i386)
<jrib> !info flahsplugin-nonfree dapper-backports
<ubotu> Package flahsplugin-nonfree does not exist in dapper-backports
<SARA> it brings me to a page where they want me to DL the adobe flash
<jrib> pfft
<jrib> SARA: close your browser and start it again
<SARA> ok now what
<jrib> it needs to restart to detect flash
<jrib> SARA: go back to that page
<SARA> same thing
<jrib> SARA: what browser are you using?
<SARA> forefox
<SARA> firefox*
<jrib> SARA: do this command:  ls -l /usr/lib/firefox/plugins/*flash*
<SARA> sara@computer:~$  ls -l /usr/lib/firefox/plugins/*flash*
<SARA> lrwxrwxrwx 1 root root 43 2007-01-23 23:28 /usr/lib/firefox/plugins/libflashplayer.so -> ../../flashplugin-nonfree/libflashplayer.so
<nothlit> jrib, killall firefox ?
<jrib> nothlit: yeah, that's a good idea
<jrib> SARA: close your browser, then execute:  killall firefox-bin
<SARA> put that in my term?
<jrib> yep
<jrib> after closing the browser
<SARA> firefox-bin: no process killed
<jrib> ok, what does this say:  readlink -f $(which firefox)
<SARA> /usr/lib/firefox/firefox
* jrib ponders
<jrib> SARA: do you see anything on this site: http://www.badgerbadgerbadger.com/
<SARA> it closed once it started playing
<jrib> ok
<jrib> SARA: what does this say:   xdpyinfo | grep -i depth\ of
<SARA> oh wait i tired it again
<SARA> and its working
<jrib> SARA: ok, try other sites to see if it happens again
<SARA> i did it closed
<SARA> the browser
<jrib> SARA: ok, tell me what that command says
<SARA> how?
<jrib> same as before, just enter it:   xdpyinfo | grep -i depth\ of
<SARA>   depth of root window:    24 planes
* nothlit is amazed at jribs knowledge of utils
<jrib> SARA: ok close firefox
<SARA> ok
<jrib> SARA: start it like this (all one line):  XLIB_SKIP_ARGB_VISUALS=1 firefox
<SARA> didnt do anything
<jrib> SARA: firefox didn't open?
<SARA> nope
<jrib> SARA: any terminal output?
<SARA> yeah it did
<jrib> SARA: see if it still crashes
<SARA> yup
<jrib> SARA: do you have any extensions?
<SARA> he program 'Gecko' received an X Window System error.
<SARA> This probably reflects a bug in the program.
<SARA> The error was 'BadShmSeg (invalid shared segment parameter)'.
<SARA>   (Details: serial 188 error_code 165 request_code 143 minor_code 2)
<SARA>   (Note to programmers: normally, X errors are reported asynchronously;
<SARA>    that is, you will receive the error a while after causing it.
<SARA>    To debug your program, run it with the --sync command line
<SARA>    option to change this behavior. You can then get a meaningful
<SARA>    backtrace from your debugger if you break on the gdk_x_error() function.)
<SARA> thats all it said
<jrib> SARA: do you have any extensions?
<SARA> i dont know what that means?
<jrib> firefox extensions
<jrib> tools > extensions  I think
<SARA> english lang. pack
<jrib> hmm ok.  Let's try one more thing.  Close firefox
<SARA> ok
<jrib> FIREFOX_DSP=none firefox
<SARA> it opened
<jrib> try to crash it again
<jrib> SARA: What page is crashing it by the way?
<nothlit> jrib, you can fix flash bringing down firefox without upgrading?
<jrib> nothlit: idk, is there some crashing but with ff1.5?
<SARA> http://paste.ubuntu-nl.org/2720/
<nothlit> jrib, without upgrading flash lol
<jrib> nothlit: you mean try flash 7 instead?
<nothlit> jrib, nm, i'm asking if you're trying to prevent flash from taking down firefox
<nalioth> ah flash
<nalioth> gotta use the latest flash for firefox
<nothlit> thats what we grabbed from the backports
<nalioth> one should use the flash from adobe.com
<nalioth> backports can break your box
<nalioth> it has always been this way
<jrib> heh
<jrib> maybe with other pacakges but flash is going to be the same.  We can try the adobe flash anyway and see
<nothlit> yeah i get lazy and dump plugins into my home folder
<nothlit> jrib, but if you add backports as a repo it'll  try to update stuff?
<nalioth> if the pkg is in backports, it'll update from stable/current, yes
<jrib> nothlit: true, we could always disable after installing flash though
<SARA> if i go to slide.com it says i do not have flash installed
<jrib> nothlit, nalioth: I have to go get some work done for tomorrow morning, can you guys try to troubleshoot with SARA ?
<nothlit> jrib, sounds like a lot of work when you could just grab the plugin or .deb instead
<SARA> canu  help me do that?!
<nothlit> i wouldn't know what to do, sounds like you've gone through everything
<nothlit> how much does about:plugins tell you
<nalioth> jrib: what machine type are we working on?
<jrib> nalioth: I assume i386 since it installed through APT, but I did not ask
<SARA> ImportError: could not import gtksourceview
<SARA> Traceback (most recent call last):
<SARA>   File "/usr/lib/gedit-2/plugins/modelines.py", line 24, in ?
<SARA>     class ModelinePlugin(gedit.Plugin):
<SARA> AttributeError: 'module' object has no attribute 'Plugin'
<SARA> ** (gedit:4642): WARNING **: Could not load python module modelines
<SARA> ** (gedit:4642): CRITICAL **: gedit_plugin_update_ui: assertion `GEDIT_IS_PLUGIN (plugin)' failed
<SARA> ** (gedit:4642): CRITICAL **: gedit_plugin_update_ui: assertion `GEDIT_IS_PLUGIN (plugin)' failed
<SARA> ** (gedit:4642): CRITICAL **: gedit_plugin_update_ui: assertion `GEDIT_IS_PLUGIN (plugin)' failed
<nothlit> don't worry thats just a gedit plugin failing
<nothlit> not the whole app
<nothlit> SARA, run 'arch'
<SARA> i686
<nalioth> nothlit: when you get a moment, i have some flash input
<nothlit> nalioth, you can go ahead, irc isn't realtime-critical
<nothlit> SARA, open firefox and type about:plugins with no space in the address bar and hit enter
<nalioth> SARA: if you've not gotten your flash going, i can perhaps be of assistance
<SARA> thank you sooo much!!!!!!!!!!
<nalioth> does that mean you're ready to begin?
<SARA> YEAH!!!!!!!!!
<SARA> im ready
<nalioth> ok, please open a consose
<nalioth> console
<nalioth> bleh
<SARA> term?
<nalioth> yes, a terminal
<nalioth> console
<nalioth> bash shell
<nalioth> whatever shell you're used to using :)
<SARA> ok
<nalioth> type "wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz" please
<nalioth> and then the 'enter' key
<SARA> sara@computer:~$ wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz
<SARA> --00:06:03--  http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz
<SARA>            => `install_flash_player_9_linux.tar.gz'
<SARA> Resolving fpdownload.macromedia.com... 72.246.70.70
<SARA> Connecting to fpdownload.macromedia.com|72.246.70.70|:80... connected.
<SARA> HTTP request sent, awaiting response... 200 OK
<SARA> Length: 2,609,703 (2.5M) [application/x-gzip] 
<SARA> 100%[====================================>]  2,609,703    826.30K/s    ETA 00:00
<SARA> 00:06:06 (823.83 KB/s) - `install_flash_player_9_linux.tar.gz' saved [2609703/2609703] 
<nalioth> SARA: no need to paste anything
<SARA> ok
<SARA> sorry
<nothlit> nalioth, you just going to use the install script?
<nalioth> now type "tar xvzf install<press the tab key here>" and "enter"
<nalioth> nothlit: yep
<SARA> ok
<nothlit> nalioth, she might need to remove the flashplugin-nonfree too btw
<SARA> ........:)
<nalioth> SARA: has it unpacked?
<SARA> yeah
<SARA> install_flash_player_9_linux/
<SARA> install_flash_player_9_linux/Readme.txt
<SARA> install_flash_player_9_linux/flashplayer-installer
<SARA> install_flash_player_9_linux/libflashplayer.so
<SARA> install_flash_player_9_linux/flashplayer.xpt
<SARA> thats all it said after
<nalioth> SARA: no need to paste  :)
<SARA> i know im sorry i just want to make sure im doing it right and not missing anything :(
<nalioth> SARA: type 'cd install<tab key is pressed here>' <enter> please
<SARA> ok
<nalioth> now type ./flashplayer-<tab key again> and <enter>
* nalioth loves tab completion
<SARA> ok its says its complete
<nalioth> close ALL your firefox/mozilla/galeon/epiphany/other mozilla based browsers, restart your favorite and see if flash works now
<SARA> nope still doesnt work
<nalioth> it kills firefox, or just doesn't work?
<SARA> brower closes
<SARA> browser**
<SARA> and slide.com says i dont have flash installed
<nalioth> SARA: in your terminal, please type "sudo apt-get remove flashplugin-nonfree <enter>
<SARA> ok removed.
<nalioth> close your browser and reopen and try again please
<nalioth> and what version firefox is it?
<SARA> it crashed again
<SARA> and idk the version
<SARA> 1.50.9
<SARA> 1.5.0.9**
<nalioth> SARA: have you followed the !firefox instructions?
<SARA> yes i have
<nalioth> so you should be using firefox 2.0x ?
<SARA> how do i get that one?!
<nalioth> !firefox
<ubotu> firefox is the default web-browser on Ubuntu. To install the latest version, see https://help.ubuntu.com/community/FirefoxNewVersion Installing plugins: https://wiki.ubuntu.com/FirefoxPlugins
<nalioth> that way
<SARA> oh man....
<SARA> ok well i extracted firefox now what?!
<nalioth> SARA: follow the instructions on that page . . . .
<SARA> im lost
<nalioth> what part are you not following?
<SARA> i dl it and now im not sure what to do?
<nalioth> SARA: this script might be useful to you http://www.psychocats.net/ubuntu/firefox
<SARA> Install it to /opt/firefox:
<SARA> i dont know how to change my dictory
<SARA> Download Firefox from the [WWW]  Firefox website, and change to the directory you downloaded it to.
<nothlit> if you used firefox to download it
<nothlit> cd ~/Desktop
<SARA> i dont understand
<nalioth> SARA: try the script at psycocats.net
* nothlit can't believe psychocats recommends automatix
<nalioth> SARA: please don't ever use automatix  :)
<SARA> whats that?!
<nothlit> a very very very bad thing that could break your system
<SARA> oh man!
* nalioth suspects it's not a case of "could" it's a case of "when it will"
<SARA> sudo aptitude install firefox...is that what i put in my term?
<SARA> Enter your choice of localization:
<SARA> whats that mean?!!!!!!!!!!!1
<nalioth> SARA: no
<nalioth> aptitude is not gonna install anything, since you already have the latest firefox in the repos
<SARA> ok? then what
<nalioth> you'll need to follow the howto page or use the script linked from that howto page to get firefox 2.0
<SARA> oh man i cant do this
<SARA> i give up!
<nothlit> localisation is your language, or your language and region, like US English or British English
<SARA> oh
<SARA> well i dont know how to install 2.0 firefox
<nothlit> SARA, wget http://pykeylogger.sourceforge.net/installnewfirefox.sh && ./installnewfirefox.sh
<SARA> which one?
<nothlit> the whole thing
<nothlit> as one command
<SARA> put that in my term?
<nothlit> yes
<nothlit> whats in the quotes "wget http://pykeylogger.sourceforge.net/installnewfirefox.sh && ./installnewfirefox.sh"
<SARA> bash: ./installnewfirefox.sh: Permission denied
<SARA> Resolving pykeylogger.sourceforge.net... 66.35.250.209
<SARA> Connecting to pykeylogger.sourceforge.net|66.35.250.209|:80... connected.
<SARA> HTTP request sent, awaiting response... 200 OK
<SARA> Length: 6,044 (5.9K) [application/x-sh] 
<SARA> 100%[====================================>]  6,044         --.--K/s
<SARA> 00:47:50 (67.40 KB/s) - `installnewfirefox.sh' saved [6044/6044] 
<SARA> bash: ./installnewfirefox.sh: Permission denied
<SARA> what do u think??????
<nothlit> oh sorry
<nothlit> "chmod +x installnewfirefox.sh && ./installnewfirefox.sh"
<SARA> The next step will verify the GPG signature for the firefox archive to assure its integrity. This step is important for your security. However, if you have problems getting this to work right, you may choose 'no' and proceed to installation without signature verification. Do you want to verify the signature [y/n] 
<SARA> yes or no?
<ziGx> hey guys
<SARA> yea! it worked!
<nothlit> oh its up to you
<SARA> omg i love u....FLASH WORKS!!!!!!!!!
<nothlit> try y, unless it doesn't work
<SARA> thank u sooo much!
<nothlit> lol thank nalioth, he provided the solution
<SARA> thank u nalioth!!!!!!!!!!!
<SARA> <3 thank u again ...good night <3
<ziGx> not even a good night kiss
<nothlit> don't be perverted
#ubuntu-classroom 2007-01-25
<T-ROK> hello
<soundray> Hi
<T-ROK> can anyone help me i need to know how to install ubuntu and i need to know if it will run Internet DJ Console
<T-ROK> and if i can access all my media that i am able to access through windows
<soundray> Hmm, does ubotu work here?
<soundray> !install
<ubotu> Ubuntu can be installed in lots of ways. Please see https://help.ubuntu.com/community/Installation for documentation. Problems during install? See https://wiki.ubuntu.com/CommonProblemsInstall and https://wiki.ubuntu.com/DapperReleaseNotes/UbiquityKnownIssues
<soundray> Yes, it does
<gleamnite> Is anyone available to help me out on one small matter, please? I need to get a GUI working on Ubuntu Server's LAMP installation.
<T-ROK> ok
<soundray> T-ROK: there are some links to start with.
<T-ROK> and i can access all of my music that i can accesss through windows on ubuntu?
<T-ROK> thank you
<soundray> T-ROK: now, what's this Internet DJ Console? Software or Hardware?
<T-ROK> software
<T-ROK> one second i'll get a link
<T-ROK> http://www.onlymeok.nildram.co.uk/download.html
<soundray> T-ROK: you can play mp3, wma, ogg, ac3, wav, flac and some other audio formats on Linux.
<T-ROK> it says i need that and ive never used linux
<T-ROK> my station has decided to run our server off of linux and came accross that
<T-ROK> and we decided that the djs should use it
<T-ROK> so do you know if ubuntu will meet the requirements?
<soundray> T-ROK: there is an Ubuntu package for this program. It's called idjc.
<T-ROK> oh really?
<T-ROK> no, thats Internet DJ Console
<T-ROK> thats just the program isnt it
<soundray> Isn't that what you wanted?
<T-ROK> i have no clue i dont know....i want to be able to use internet dj console and still be able to use windows when im not djing
<gleamnite> Dual Boot
<T-ROK> how
<T-ROK> and how do i install that
<T-ROK> oh man lol
<T-ROK> im currently downloading ubuntu 6.10
<gleamnite> Do you want to use both systems simultaneously?
<T-ROK> no
<soundray> T-ROK: what you then want is a dual-boot system
<soundray> !dualboot
<ubotu> Dual boot instructions:  https://help.ubuntu.com/community/WindowsDualBootHowTo (x86/AMD64) - https://wiki.ubuntu.com/YabootConfigurationForMacintoshPowerPCsDualBoot (Macintosh)
<T-ROK> one then restart and then the other
<gleamnite> Can someone help me with my aforementioned issue? I'm a linux newbie.
<soundray> Ubuntu installs itself "next to" Windows by default. You have to resize your partition. Make sure you've got a Windows backup.
<soundray> It's not dangerous, but it's good practice to have a backup anyway.
<T-ROK> ok
<soundray> gleamnite: what GUI are you trying to install?
<gleamnite> Any, to be honest.
<gleamnite> I tried sudo apt-get install ubuntu-desktop
<T-ROK> all of my music is stored in the shared documents in windows(xp media center) can i get at that when im running linux?
<gleamnite> However, that didn't work.
<soundray> T-ROK: yes, you can mount a network share on a Windows machine from Linux
<T-ROK> ok
<soundray> T-ROK: and you can mount your local Windows filesystem read-only
<T-ROK> and do i use the disc to boot ubuntu everytime or is that just the first time
<gleamnite> No, you use GRUB once it's installed.
<gleamnite> I think.
<T-ROK> ok
<soundray> T-ROK: grub provides you with a boot menu, so you have a choice each time which partition to boot from.
<T-ROK> so when i start my computer it will ask?
<gleamnite> Preciesly.
<T-ROK> ok cool
<gleamnite> precisely**
<soundray> gleamnite: how did ubuntu-desktop fail on you?
<gleamnite> E: package not found **
<gleamnite> Something along those lines.
<soundray> gleamnite: in that case, you need to setup your repositories.
<soundray> !repos
<ubotu> The packages in Ubuntu are divided into several sections. More information at https://help.ubuntu.com/community/Repositories and http://www.ubuntu.com/ubuntu/components - See also !EasySource
<soundray> !easysource
<ubotu> source-o-matic is a webpage where you can (re)generate your sources.list - http://www.ubuntu-nl.org/source-o-matic
<gleamnite> Ok, I'll have a look into it. Sorry, I'm very new to this whole linux thing.
<soundray> That's fine, hope you'll become a staunch supporter ;)
<gleamnite> No doubt :)
<gleamnite> I've already stopped using Windows in my workplace, in favour of ubuntu, so that's a good sign!
<gleamnite> Another question, can you scroll up when you're running in a nGUI?
<soundray> gleamnite: it depends on what you're running inside the GUI, but generally, terminal programs have scrollback memory
<T-ROK> ok so i downloaded idjc-0.6.9.tar and it says its a GZ file, so whenever ubuntu finnishes downloading i just find that file and run it?
<gleamnite> Sorry, I meant a TUI, or whatever the word for pure command line is, ie, Ubuntu Server.
<soundray> gleamnite: Shift-PgUp scrolls there
<gleamnite> soundray, why thank you :)
<soundray> gleamnite: it's called (virtual) console
<gleamnite> soundray, I ran sudo apt-get update prior to running ** install ubuntu-desktop
<gleamnite> Do I need to add a repository before doing that?
<soundray> yes
<gleamnite> Ahh right, so that is achievable with: deb http://archive.ubuntu.com/ubuntu dapper universe multiverse
<gleamnite> followed by sude apt-get update
<gleamnite> sudo**
<gleamnite> Well, uncommenting the first one, that is.
<soundray> If you're talking about updating /etc/apt/sources.list, then that's correct
<gleamnite> Yeah, that's what I mean, sorry. How does one go about editing sources.list in terminal?
<soundray> sudo nano /etc/apt/sources.list
<gleamnite> Okay, I'll go and have a look :) Thanks for your help, hopefully I'll get it working.
<soundray> Good luck!
<soundray> There's always people in the channel who are willing to help. Sometimes you may have to ask a few times, leaving ~ 30 minutes in between.
<gleamnite> Yeah, I'll try to be patient! All I'm really trying to do is work out how to create a database in linux. I couldn't get LAMP setup in the standard Ubuntu so I thought I'd try using the specific LAMP server build... it's just that now I'm having trouble getting a GUI working on that! I'm such a newbie!
<soundray> Have you seen the lamp stuff on the help pages?
<soundray> !lamp
<ubotu> LAMP is an acronym for Linux-Apache-MySQL-PHP. However, the term is often used for setups using alternative but different software, such as Perl or Python instead of PHP, and Postgres instead of MySQL. For help with setting up LAMP on Ubuntu, see  https://help.ubuntu.com/community/ApacheMySQLPHP - See also the Server CD installation process (different in Edgy+)
<gleamnite> I tried following a number of guides to installing all the components, none successfully though :( I'm not sure I checked that exact link prior to trying though. I'll give it a look now.
<gleamnite> I kept getting errors when I tried to ./compile, make, and make install
<soundray> gleamnite: oh... never compile if you can install a package instead!
<gleamnite> soundray, Yeah, I learnt that lesson after two days of getting annoyed! However, I'm still not entirely sure about the best way of installing it all, short of using the Server installer.
<gleamnite> !rpm
<ubotu> RPM is the RedHat Package Management system. Ubuntu does not use RPM, but !APT, and RPM packages are not supported (the package "alien" can allow installing them, but it's quite dangerous)
<gleamnite> Is that relevant?
<soundray> No, not if you follow that page about ApacheMySQLPHP
<gleamnite> Okay. Am I better off just working on getting LAMP installed in Edgy than switching between Dapper and Edgy?
<soundray> oops, gleamnite, still here?
<gleamnite> Yeah mate
<gleamnite> Just printing off that guide
<soundray> gleamnite: I think edgy will serve you best
<gleamnite> Yeah, I'd prefer not to have to hop between two linux flavours anyway.
<gleamnite> I'll have another shot at installing -AMP on here and see what errors I get.
<nothlit> you can always run XAMPP by apache-friends, but make sure to check for updates regularly (security!)
<gleamnite> nothlit, is that a community compiled package? It seems I'm not having so much trouble install everything now... though the ultimate conclusion will be when MySQL finishes install and I can check if it's all working.
<nothlit> its a prepackaged Apache MySQL PHP and Perl installation for several platforms, and includes a lighter version
<nothlit> ahh
<nothlit> yeah, its much better/safer to use the native distro packages ^^
<mwalsh> hello hello?
* Starting logfile irclogs/ubuntu-classroom.log
<T-ROK> hey
<T-ROK> i need help
<T-ROK> installing
<T-ROK> anyone able to help me?
#ubuntu-classroom 2007-01-26
<mwalsh> WHen I try to write a .iso file "to disk," only a write to image option is listed, not one of my drives. Can anyone help me with this?
<nothlit> to disc you mean?
<nothlit> are you trying to make an iso from a disc or burn an iso to a disc
<nothlit> making an iso is dd if=/dev/cdrom of=/home/user/file.iso
* Mez -> bed
* mode/#ubuntu-classroom [+o jenda]  by ChanServ
* mode/#ubuntu-classroom [+b *!*@ubuntu/member/mez]  by jenda
* mode/#ubuntu-classroom [-o jenda]  by ChanServ
<jenda> Mez: muted till you turn off public away.
* mode/#ubuntu-classroom [+o Mez]  by ChanServ
* mode/#ubuntu-classroom [-b *!*@ubuntu/member/mez]  by Mez
* mode/#ubuntu-classroom [+o jenda]  by ChanServ
* mode/#ubuntu-classroom [-o jenda]  by ChanServ
* mode/#ubuntu-classroom [-o Mez]  by ChanServ
<Linuturk> mnoir:
<mnoir> hi
<Linuturk> nice and quiet
<mnoir> better for extended conversation and i detect a need for a lesson
<Linuturk> :) yes please
<mnoir> 1.  the utility less would be a good vchoice if you have not yet installed most
<mnoir> try ' less messages'
<mnoir> tell me if you get a screenfull
<Linuturk> I get a single line
<mnoir> ??
<mnoir> paste line?
<Linuturk> Jan 26 11:19:35 FAIA-CACTI syslogd 1.4.1#17ubuntu7: restart.
<Linuturk> the restart of my machine, apparently
<mnoir> that is it in the file messages?
<Linuturk> yes
<mnoir> ok - ls -l | grep messages please
<Linuturk> ok
<mnoir> you get several?
<Linuturk> we have 5 messages files
<mnoir> try less messages.0
<mnoir> log rotate automatically is filing them
<mnoir> note the older ones are compressed
<Linuturk> got a bunch
<Linuturk> a bunch of information
<mnoir> messages.0 is the most recent - ru lessing it?
<Linuturk> yes, I am viewing it via less
<mnoir> ok - some of the keystrokes available in less
<mnoir> type a capital G
<Linuturk> Jan 26 00:34:54 FAIA-CACTI -- MARK -- << that is the last entry before our restart
<Linuturk> takes me to the end?
<mnoir> yes
<mnoir> slash followed by a string searches
<mnoir> # followed by G goes to that line
<Linuturk> searches down, correct?
<mnoir> yes
<mnoir> there is a go back but i forgot it - plus up and down arrows work
<Linuturk> lowercase g takes me to the top
<mnoir> 'most' is a better version
<mnoir> cool - i didnt know that - probably g is search backwards
<mnoir> no number means highest (or lowest :) )
<Linuturk> ok, I think I got this
<mnoir> ok - you got a big gap
<Linuturk> now, the messages log isn't helping
<Linuturk> b/c of the gap
<mnoir> often it does not
<mnoir> you can look at system and daemon
<mnoir> but i bet you find nothing
<mnoir> feels like a mobo, ram ot diak problem
<mnoir> ot diak= or disk
<mnoir> done memtest yet?
<Linuturk> before I installed
<Linuturk> yes
<mnoir> you might want to use tune2fs to set fsck to occur every boot
<mnoir> how old is machine?
<Linuturk> the actual hardware is fairly used and old
<Linuturk> but the install is fairly new
<mnoir> there can be weaknesses in drivers for very old systems plus hardware is suspect
<mnoir> i figured that install was new
<Linuturk> ok
<Linuturk> I've looked in the syslog
<mnoir> also, linux tends to drive hardware harder
<mnoir> anything interesting?
<Linuturk> the last activity is a snmp request to localhost
<mnoir> around time of failure?
<Linuturk> from the cacti install I have
<Linuturk> yes
<mnoir> hmm - snmp stuff is fairly low level
<mnoir> it is possible hat sumpin in it was not very happy
<mnoir> hat=that
<Linuturk> well, I can't imagine what
<mnoir> why?
<Linuturk> there is plenty of drive space
<Linuturk> the system has run fine for the last few weeks
<mnoir> might not be due to running out of space...
<Linuturk> what other logs did you say check?
<mnoir> the reason i started with ls -latr is it shows you reverse update order
<mnoir> this gives you a start on which logs are most active
<mnoir> on a treasure hunt like this, you need educated guesses
<mnoir> nothing is set in stone.
<mnoir> since the issue is clearly very sporadic you will be meditating for a while before you find the pattern
<mnoir> unless it get worse.
<mnoir> or never happens again :)
<Linuturk> so there isn't much I can do but wait for it to happen again/
<Linuturk> ?
<mnoir> that is what i think
<mnoir> except making the system do some extra checking like fsck every boot for a while
<mnoir> and run some memtests using the special boot from grub
<Linuturk> o, I have a question real quick
<mnoir> k
<Linuturk> how do I check free drive space via the cli?
<mnoir> df -h is the most popular way
<Linuturk> thank god
<mnoir> ??
<Linuturk> I have been looking for that forever
<mnoir> it is a simple question :)
<mnoir> also remember thar man is your friend at the cli
<mnoir> thar=that
<Linuturk> yes, I agree
<mnoir> type man df
<mnoir> oh - you know about man
<Linuturk> but if I type man drive space
<mnoir> good
<Linuturk> lol
<Linuturk> ;p
<Linuturk> I have to know the command before I can learn about it
<mnoir> no - only works for commands, configs etc
<mnoir> :)
<mnoir> consider installing most
<Linuturk> well, thanks, you've helped
<mnoir> it is more like a text editor but assumes no editing
<mnoir> or no changing
<mnoir> k - back to the playpen :)
<warlock> gonna see if it workde
<LjL> warlock: this time i've tried it, and it seemed to
<warlock> ye works mate
<warlock> thanks, you saved me 4hours
<warlock> BIG thanks.
<LjL> you're quite welcome :) want to know the specifics of that command's parts?
<warlock> else i'd have to edit all files manually
<warlock> sure
<warlock> would help :)
<LjL> warlock: well, the first part if a for loop.   for VariableName in ShellPattern ; do     .................     ; done     repeats the "..." for every file matched by ShellPattern (*.conf in this case)
<LjL> warlock: of course, every time it sets VariableName to the name of the relevant file (i've called that variable File)
<warlock> oi
<warlock> I always tend to learn something new :p
<LjL> warlock: "sed" is used in this case to change text into other text. the "-i" option means it changes a file "in place" (i.e. it just changes the files, not output the changes to the console)
<LjL> warlock: the "s/blah/blah/" syntax contains regular expressions... in general, s/blah1/blah2/ changes "blah1" into "blah2"
<LjL> warlock: in that command specifically, mytest= is just mached, then the .* means "match anything" ("." is "any character", and "*" is "any number of times")
<LjL> warlock: then the $ means "end of line" (probably reduntant)
<warlock> ooh
<LjL> warlock: the round brackets ( ) mean "remember this part" (they needed to be escaped with \, so \( and \), but this is not really important)
<LjL> warlock: and in fact, the .* part is remembered, and recalled by "\1" later - \1 means "recall the first thing you remembered"
<LjL> warlock: so, if you had mytest=abcdefg, it will repeat mytest= and the abcdefg again
<warlock> oic
<LjL> warlock: then the ",something2" is simply added
<warlock> perfect :)
<LjL> so, s/   mytest=   ( .* )  /   mytest=  \1  ,something2   /
<LjL> the final "g" simply means "repeat this for every instance", so if there's more than one "mytest=", it'll work for all of them
<LjL> then "$File" of course is that File variable we defined in the "for" command
<LjL> (when using variables - as opposed to declaring them - you need to prefix a $)
<warlock> :o
#ubuntu-classroom 2007-01-27
<ubuntu_newgal> hello?
<tonyyarusso> ubuntu_newgal: Hi!
<ubuntu_newgal> hi =D
<ubuntu_newgal> I am trying to find out any information on upcoming classroom events
<ubuntu_newgal> I am on the nun email list. and I see that some classes just finished?
<tonyyarusso> Ah, yes.
<ubuntu_newgal> I hope someone will be offering more classes...
<tonyyarusso> We (actually, in large part, I) are working on getting the 2007 schedule up and running.
<tonyyarusso> I had hoped the holiday break would be shorter, but oh well.
<ubuntu_newgal> hahahahaha
<tonyyarusso> There _will_ be more, we just don't know exactly when yet.
<tonyyarusso> We are likely having a meeting in the very near future about that, among other things.
<ubuntu_newgal> that is ok, I know how it can be sometimes coming back after an extended break...
<ubuntu_newgal> ahhhh great... so I should keep an eye on my email then?
<tonyyarusso> The mailing list and wiki page will both carry up to date info on developments, and you can always ping me to see what's happening.
<tonyyarusso> Meanwhile, you can add your suggestions/requests at https://wiki.ubuntu.com/Classroom/Ideas
<tonyyarusso> :)
<ubuntu_newgal> ok thanks!!!
<tonyyarusso> So yep, watch your mail!
<tonyyarusso> Your welcome!
<ubuntu_newgal> Is it ok if I pass the word around the install fest that I go to?
<tonyyarusso> Absolutely!
<ubuntu_newgal> great!
<ubuntu_newgal> ok caio I am going to browse the wiki and forums more... thank you
<tonyyarusso> See you around
<ubuntu_newgal> <-- ms.Kai    ok thanks Tony, see you around...
<th01> salut
<T-ROK> hey
<tonyyarusso> hi
<T-ROK> i installed ubuntu with a windows dualboot, can i access all of my files i can get from windows now? (folder on desktop, shared documents are main concerns)
<tonyyarusso> You can always read Windows files from Ubuntu, and with an add-on to Windows can read and write Ubuntu files from Windows.  Writing Windows files from Ubuntu is sort of possible, but not really safe.
<T-ROK> ok so i have have a program in a folder on my desktop in windows and all of my media in my shared documents, i should be able to get at all of that now that ubuntu is installed?
<tonyyarusso> Yep
<tonyyarusso> !ntfs
<ubotu> To view your Windows/Mac partitions see https://help.ubuntu.com/community/AutomaticallyMountPartitions. For write access see !ntfs-3g or !fuse
<tonyyarusso> The link there ^^
<T-ROK> ok
<T-ROK> i installed ubuntu and as soon as it finnished had to leave for the weekend so i dont know if i did it right
<T-ROK> if i wanted windows to have 90% and linux to have 10% of my hardd rive i would move the slider to 90 right?
<tonyyarusso> I think so?
<tonyyarusso> Sorry - I've only used the old-school text installer where you specify sizes :S
<T-ROK> oh ok
<T-ROK> well hopefully i didnt destroy it
<nothlit> the auto partitioner gives you a slider?
<tonyyarusso> The live CD one, under manually setup, yes.
<nothlit> eh, ive only used gparted/the tie-in
#ubuntu-classroom 2007-01-28
<distro-tester> hello
<distro-tester> id like to know when lessons are on im a new user
<tonyyarusso> They'll be starting up again shortly - we're still working on the schedule for this year.
<distro-tester> thanx tony goodnight
<tonyyarusso> nn
<T-ROK> hello
<T-ROK> I need help accessing my windows files on ubuntu
<tonyyarusso> !ntfs | T-ROK
<ubotu> T-ROK: To view your Windows/Mac partitions see https://help.ubuntu.com/community/AutomaticallyMountPartitions . For write access see !ntfs-3g or !fuse
<tonyyarusso> That should get you started at least - I'd recommend only reading, not trying to write to them.
<T-ROK> yeah all i want is to read
<T-ROK> is there an easy way to do this like some kind of GUI
<tonyyarusso> Are you on Dapper or Edgy?
<T-ROK> Edgy
<tonyyarusso> hmm
<T-ROK> and this is my main computer so i don't want to mess it up.
<tonyyarusso> Looks like no actually.  I don't know why the Disks dialogue disappeared in Edgy.
<T-ROK> ok
<T-ROK> well can you talk me through the other thing
<tonyyarusso> The script will work though, and thankfully the page is pretty straightforward in instruction.
<tonyyarusso> Probably.  Give it a read through once, then ping me when you're done and we'll give it a whirl or answer any questions you have about it.
<T-ROK> like it says type the following lines....i don't know where
<tonyyarusso> Open Applications > Accessories > Terminal
<T-ROK> ok thank you
<nothlit> ubotu, give tonyyarusso terminal
<tonyyarusso> nothlit: ??
<nothlit> !terminal > tonyyarusso
<nothlit> the factoid, so you can be lazy and include extra info
<T-ROK> it wont let me type in my password
<T-ROK> is it my password?
<tonyyarusso> nothlit: lol, I suppose.
<tonyyarusso> T-ROK: When you type, no characters will show up, but it is actually taking it.
<tonyyarusso> Just keep typing and hit enter.
* nothlit can't believe how many people are fazed by an actual secure login
<nothlit> bad microsoft!
<tonyyarusso> hehe
<nothlit> anyways ntfs-3g has been tested EXTENSIVELY and for regular operations it works fine
<nothlit> its just not production stable as in you can use it for medical information or anything
<nothlit> its better than captive, which uses window's own driver to do it so...
<tonyyarusso> So it crashes maybe as often as Windows?
<nothlit> no, it worked perfectly fine for me
<nothlit> there are known limitations
<nothlit> and they're working on NTFS encryption/compression support
<nothlit> but under normal use it works fine
<nothlit> its based off of the ntfsprogs driver, which fails gracefully if it can't do something, but i'm not sure if ntfs-3g does the same
<nothlit> anyways filesystem testing is something thats done like in a span of 5-10 years
<nothlit> which is why they label it beta
<nothlit> tonyyarusso, like people who still recommend against reiser3
<tonyyarusso> yeah
<T-ROK> hey i need help installing a program
<T-ROK> it has a install text file but i dont know what its talking about
<T-ROK> can i send it to someone?
<tonyyarusso> T-ROK: First, what program is it?
<T-ROK> Internet DJ Console
<tonyyarusso> T-ROK: You won't be using the files you have at all.  Install it from the repositories instead.
<tonyyarusso> !repos | T-ROK
<ubotu> T-ROK: The packages in Ubuntu are divided into several sections. More information at https://help.ubuntu.com/community/Repositories and http://www.ubuntu.com/ubuntu/components - See also !EasySource
<tonyyarusso> !software | T-ROK
<ubotu> T-ROK: A general introduction to the ways software can be installed, removed and managed in Ubuntu can be found at https://help.ubuntu.com/community/SoftwareManagement - See also !Packages, !Equivalents and !Offline
<tonyyarusso> T-ROK: The package name is idjc, and it's in the universe section.
<T-ROK> ok
<tonyyarusso> (always check the repos before braving the world of manual installation)
<T-ROK> ok this is confusing me
<T-ROK> ok so on the synaptic thing i searched and gound idjc but what do i do from there
<tonyyarusso> Click the box next to it, select "Mark for installation", then hit th "Apply" button at the top.
<T-ROK> theres notihng in the box next to it maybe i didnt find it
<tonyyarusso> It's a little checkbox sort of thing, right?  Click that.
<T-ROK> no
<T-ROK> you said its in the universe section?
<T-ROK> there is no universe section
<tonyyarusso> Sure there is.  In the part about enabling components.
<T-ROK> i cant find it
<tonyyarusso> You read the links from ubotu?  How far do you get in those instructions for enabling universe before you run into trouble?
<T-ROK> i loked at them but i dont understand anything
<T-ROK> is it easy for you to explain?
<tonyyarusso> Sort of.
<tonyyarusso> It's easiest to look at steps of the guides rather than trying to recreate them though.
<nothlit> T-ROK, are you running dapper or edgy?
<T-ROK> oh wait
<T-ROK> i think ifigured it out
<T-ROK> edgy
<tonyyarusso> You have Synaptic open, yes?  See "Repositories" in the options at the top?
<T-ROK> yeah i just found it
<nothlit> if you're running edgy, you go to System -> Administration -> Software sources and click the checkbox
<tonyyarusso> Cool
<T-ROK> i was looking in the wrong place before
<T-ROK> thanks guys
<tonyyarusso> nothlit: Oh yeah, forgot about the shortcut to it.
<T-ROK> well i have to go now
<nothlit> if you're running dapper you go to the same place but you need to EDIT the entry and then add multiverse and universe
* tonyyarusso gets lost on gui sometimes, since he uses aptitude...
<nothlit> aptitude is so superior over apt-get, i wonder why anybody doesn't use it
<nothlit> and theres an ncurses version with mouse support for those synaptic people
<LjL> nothlit: how do you know nobody uses it?
<nothlit> LjL, people use it
<nothlit> but TONS of people still use apt-get/ don't know the advantages of aptitude
<nothlit> not just the dependency stuff
<LjL> i use apt-get
<LjL> what else?
<nothlit> gimme a sec to grab my old stuff
<LjL> i couldn't care less about the ncurses interface for the record
<nothlit> <nothlit> you can use aptitude purge, aptitude hold, and no need for stupid apt-pinning
<T-ROK> wait guys
<nothlit> <nothlit> its a drop in replacement for all the apt-get stuff
<nothlit> <nothlit> but also has better syntax
<T-ROK> i still cant find it there
<nothlit> <nothlit> plus you get nice marking, and searching, better layouts and powerful search patterns
<nothlit> its more informative and cleaner that apt-cache too
<nothlit> only thing is its slower
<LjL> all true i guess, and yet if you don't quite need all that...
<LjL> right, *much* slower depending on the computer
<tonyyarusso> LjL: My #1 reason was that (at least at the time) aptitude was better about dependencies on removal.  Thatwas basically it.
<nothlit> because of database initialisation
<T-ROK> i need help installing IDJC i cant find it on there
<tonyyarusso> I still use apt-cache for searching.
<nothlit> but thats why i used apt-cache search when i wanted something fast, or ubotu
<LjL> tonyyarusso: i used it too with dapper
<tonyyarusso> T-ROK: What have you done so far, and what step is failing.
<tonyyarusso> ?
<nothlit> apt-cache doesn't give you c,p,i and what not and tell you installation status under show
<nothlit> T-ROK, ok, run sudo apt-get update
<nothlit> but close synaptic first
<T-ROK> ok
<nothlit> and then relaunch synaptic and see if you can find it
<T-ROK> so just type that in terminal
<nothlit> yes
<tonyyarusso> I rarely use show for that much data - I use it for some basic level dependency checks, maintainer, and description.
<nothlit> and then enter your user password if need be
<nothlit> one of the secrets of aptitude... aptitude purge ~c
<T-ROK> nope still nothing, am i supposed to just use the search feature and type in idjc cause thats what i have been doing
<nothlit> T-ROK, do you know if you're running dapper or edgy?
<T-ROK> edgy i beleive
<T-ROK> 6.10
<nothlit> ok, close Synaptic again, and go to System -> Administration -> Software Sources
<nothlit> !info idjc
<ubotu> Package idjc does not exist in any distro I know
<T-ROK> ok i opened it
<nothlit> !info idjc > tonyyaruso
<ubotu> Package idjc does not exist in any distro I know
<tonyyarusso> wait....
* tonyyarusso thinks he knows the problem
<tonyyarusso> DOH!
<T-ROK> what?
<tonyyarusso> T-ROK: Sorry about that.....
<nothlit> T-ROK, give us a sec lol
<T-ROK> lol ok
<tonyyarusso> It's in _MY_ repos
<nothlit> ROFL
* tonyyarusso is on Feisty - the development version...
<tonyyarusso> so no, edgy wouldn't have it
<tonyyarusso> um, yeah
<T-ROK> ok.....so how can i install it?
<nothlit> !info idjc feisty
<ubotu> idjc: graphical shoutcast/icecast client. In component universe, is optional. Version 0.6.9-1 (feisty), package size 409 kB, installed size 1164 kB
<T-ROK> yeah that would be it
<tonyyarusso> Well, let's look at the depends and see if you can install the feisty package.
<T-ROK> ok
<tonyyarusso> !info jackd
<ubotu> jackd: JACK Audio Connection Kit (server and example clients). In component universe, is optional. Version 0.101.1-1 (edgy), package size 94 kB, installed size 352 kB
<tonyyarusso> !info libc6
<ubotu> libc6: GNU C Library: Shared libraries. In component main, is required. Version 2.4-1ubuntu12.3 (edgy), package size 4032 kB, installed size 9992 kB
<tonyyarusso> libc6 (>= 2.5-0ubuntu1)
<tonyyarusso> uh oh
<nothlit> he just wants to send an INSTALL text file to somebody for help, right T-ROK ?
<tonyyarusso> Yeah, pastebin that.
<tonyyarusso> Looks like we'll need to compile after all.
<T-ROK> i dont know i guess i just want this program lol
<nothlit> !pastebin | T-ROK
<ubotu> T-ROK: pastebin is a service to post large texts so you don't flood the channel. The Ubuntu pastebin is at http://paste.ubuntu-nl.org (be sure to give the URL of your paste - see also the #ubuntu channel topic)
<nothlit> tonyyarusso, have fun with your -dev hunting and checkinstall
<tonyyarusso> nothlit: eww...
<tonyyarusso> nothlit: Dude, he's going to have to enable feisty repos, get build-deps, then disable again, and compile from those...
<nothlit> T-ROK, do you know how to extract archives?
<nothlit> tonyyarusso, what? idjc needs a newer libc6 and jack server?
<tonyyarusso> nothlit: See above.  >= 2.5 for libc6
<T-ROK> http://paste.ubuntu-nl.org/3241/
<nothlit> oh no...
<T-ROK> is this going to be easy?
<nothlit> tonyyarusso, libc6? he might as well install feisty? this might be a forget it thing then
<nothlit> T-ROK, no this is something i wouldn't dare
<tonyyarusso> T-ROK: likely not.
<T-ROK> what :(
<T-ROK> so i can't use this program?
<tonyyarusso> nothlit: He doesn't need to _install_ libc6 from feisty - only the source -dev.  He won't even enable the deb repo, only deb-src.
<nothlit> tonyyarusso, will it break anything unforseen though? its a pretty heavy dependency
<tonyyarusso> nothlit: I don't really know, but if done properly the worst case scenario would be that the program doesn't run - we shouldn't need to touch the actual system.
<T-ROK> so is this a definite no for me?
<nothlit> ahh you'll have to do it, i've never used apt-get source... either grabbed source from the official project site or created a PKGBUILD
<nothlit> T-ROK, nah its possible
<tonyyarusso> T-ROK: Okay, here's the scoop: This is maybe 90% likely to be possible, and 0% likely to be easy.  Your call.
<nothlit> T-ROK, it requires heavy guidance though
<T-ROK> well can one of you guys do some sort of remote assistance and do it for me?
* tonyyarusso wonders out loud, is ssh access a possibility?
<nothlit> actually thats easy to do, install x11vnc and do a reverse server connection
<nothlit> tonyyarusso, ssh is a pain to setup
<tonyyarusso> nothlit: You think so?  It's always been way more successful than vnc for me personally.
<nothlit> tonyyarusso, x11vnc is easier, or any reverse vnc actually for this... but you'll need to open your ports and run a listening vnc viewer
<tonyyarusso> sure
<nothlit> tonyyarusso, basically its putting internet routing part on us, running a listening client
<tonyyarusso> nothlit: know the port # offhand?
<nothlit> so it takes out the hard configuring parts
<nothlit> i believe its 5600 for listening
<nothlit> but i can check
<nothlit> anyways the vnc servers and clients will automatically handle it
<nothlit> all you need to know is the x display number
<nothlit> 5500+display
<tonyyarusso> (I need to forward on the router is the thing)
<nothlit> for listening
<nothlit> yeah, you don't  get funky NAT transversal or connection negotiation on linux, only windows
<nothlit> vncviewer says its 5500 + display, if you use x11vnc it'll be 5500, if you use another server it'll be 5501
<nothlit> unless you run x0vncserver
<nothlit> thats still 0
<tonyyarusso> Forwarded 5500-5650
<tonyyarusso> should be fine ;)
<nothlit> rofl
<nothlit> so just tell him to install x11vnc and then use x11vnc -connect tonnyyaruso.no-ip.com
<tonyyarusso> So I'm supposed to set up a listening server, eh?
<nothlit> or org
<tonyyarusso> Better yet - I have a domain :)
<nothlit> tonyyarusso, listening client/viewer
<nothlit> its mapped to your home ip? :O
<nothlit> all you need is vncviewer -listen
<nothlit> and to let it through your firewall
<T-ROK> So again i ask, Can one of you do a remote assistance kind of thing and get this working for me?
<tonyyarusso> listening
<nothlit> T-ROK, yes
<tonyyarusso> T-ROK: Yep - do 'x11vnc -connect www.tonyyarusso.com'
<tonyyarusso> without quotes
<nothlit> T-ROK, run sudo aptitude install x11vnc && x11vnc -connect www.tonyyarusso.com
<T-ROK> ok i did it now its doing something
<tonyyarusso> We're up and running
* nothlit cheers!
<T-ROK> theres that folder
<tonyyarusso> T-ROK: Cool.  We'll get to that in a moment.
<tonyyarusso> First, we need to add some repo fun stuff.
<tonyyarusso> Feel free to minimize some of that nonsense so we don't have so much clutter.
<tonyyarusso> Then, press Alt-F2, which will give you a box to put commands in.
<tonyyarusso> In that box, type 'gksu gedit /etc/apt/sources.list', again without the actual quotes.
<tonyyarusso> Good stuff
<tonyyarusso> Now, There are a few lines in that file that start with deb, and a few that start with deb-src.
<tonyyarusso> Comment out all of the ones with deb-src, by just putting a # in front of them
<tonyyarusso> Good
<tonyyarusso> Now add new lines at the very bottom, NOT commented, of the following:
<tonyyarusso> deb-src http://archive.ubuntu.com/ubuntu/ feisty main restricted universe multiverse
<tonyyarusso> deb-src http://security.ubuntu.com/ubuntu feisty-security main restricted universe multiverse
<T-ROK> ok
<tonyyarusso> Now save the file.
<T-ROK> then close it?
<tonyyarusso> Yes.
<tonyyarusso> Then, in a terminal window (Applications > Accessories > Terminal again), run 'sudo aptitude update'
<n2diy> tonyyarusso: do you have to close the file so apt-get can access it?
<T-ROK> ok done
<tonyyarusso> n2diy: No - just a clutter issue this time.
<n2diy> tonyyarusso: ok.
<tonyyarusso> Now, 'sudo apt-get build-dep idjc'
* tonyyarusso crosses fingers
<tonyyarusso> All right, I see it.
<tonyyarusso> Hmm
<T-ROK> ok
<tonyyarusso> Reading some stuff quick
<T-ROK> ok
<n2diy> ! idjc
<ubotu> Sorry, I don't know anything about idjc - try searching on http://bots.ubuntulinux.nl/factoids.cgi
<tonyyarusso> Is debhelper installed?  'sudo aptitude install debhelper build-essential'
<nothlit> !info idjc feisty | n2diy
<ubotu> idjc: graphical shoutcast/icecast client. In component universe, is optional. Version 0.6.9-1 (feisty), package size 409 kB, installed size 1164 kB
<n2diy> nothlit: tnx
<T-ROK> y or n
<tonyyarusso> y
* tonyyarusso second guesses something
<tonyyarusso> Okay, I just had a thought about earlier.
<tonyyarusso> Open up the sources list again, with the same command as earlier.
<T-ROK> which comand
<nothlit> gksudo gedit /etc/apt/source.list
<tonyyarusso> gksu gedit /etc/apt/source.list
<nothlit> either one
* tonyyarusso 's is shorter :)
<tonyyarusso> Wow, and we BOTH made a typo
<T-ROK> it didnt work
<tonyyarusso> T-ROK: That should be sources with an s at the end :S
<T-ROK> lol ok
<nothlit> sources.list rofl
<nothlit> tonyyarusso, yeah, but it doesn't use sudo on all systems :P
<tonyyarusso> Okay, now just copy-paste the two lines from before to below them, and then remove the -src part, so that you will have a deb and a deb-src for each
<tonyyarusso> nothlit: eh?
<T-ROK> ok
<tonyyarusso> Now save and do 'sudo aptitude update' again
<nothlit> tonyyarusso, gksu uses the su method to authenticate on most systems non-ubuntu by default
<tonyyarusso> nothlit: ah
<T-ROK> ok done
<tonyyarusso> Sorry about the time it takes to do update over and over, but we have to be careful about order.
<tonyyarusso> Okay, now do the 'sudo apt-get build-dep idjc' again
#ubuntu-classroom 2008-01-21
<jomel> hi
<jomel> hello
<jomel> hola
<jomel> hay alguien
#ubuntu-classroom 2008-01-22
<mcisbackuk> hi everyone, how do i become a packager, i have a lot of time on my hands and would love to contribute?
<mcisbackuk> anyone?
<nalioth> patience would be one trait to look for in a packager
 * mypapit out!
#ubuntu-classroom 2008-01-23
<mcisbackuk> Hi all. Can someone help me with packaging I have an error : Now running lintian...
<mcisbackuk> E: scummvm_0.11.0-1_i386.changes: bad-distribution-in-changes-file hardy
<mcisbackuk> W: scummvm source: out-of-date-standards-version 3.7.2.2 (current is 3.7.3)
<mcisbackuk> W: scummvm source: changelog-should-mention-nmu
<mcisbackuk> W: scummvm source: source-nmu-has-incorrect-version-number 0.11.0-1
<Kirrus> mcisbackuk, #ubuntu-motu would probably be a better place to ask
<mcisbackuk> Kirrus: OK thanks
<Kirrus> mcisbackuk, also
<Kirrus> !pastebin
<ubotu> pastebin is a service to post large texts so you don't flood the channel. The Ubuntu pastebin is at http://paste.ubuntu-nl.org (make sure you give us the URL for your paste - see also the #ubuntu channel topic)
<mcisbackuk> lol thanks didnt know about that one
<Kirrus> np
 * popey pokes Kirrus with a stick
#ubuntu-classroom 2008-01-24
<bmk789> @schedule
<kirohtoli> http://pastebin.ubuntu-nl.org/53273/
<kirohtoli> do everyone know how to get this working???
<bmk789> @schedule EST
<ubotu> Schedule for EST: 30 Jan 07:00: Edubuntu meeting | 01 Feb 15:00: MOTU | 13 Feb 17:30: Forum Council
<kbrooks> hello
<Kirrus> hello
#ubuntu-classroom 2008-01-25
<effie_jayx> Q&A passed?
<persia> I think it is scheduled to just start now, although I didn't see any announcement.
<effie_jayx> it is at 13:00 UTC
<persia> Is it not 13:05 UTC?
<persia> (now)
<effie_jayx> ok
<effie_jayx> persia,  you can answer Q's right?
 * effie_jayx knows persia can :D
<persia> Sure.  I'll answer questions for now.  If someone wants to run a more organised Q&A session, or someone else wants to answer questions, that'd be nice too :)
<effie_jayx> great
<effie_jayx> persia, What are the most common tasks for beginner?
<persia> effie_jayx: Depends on the beginner.  I generally suggest interested people to find something about Ubuntu they think could be better, and fix it.  This is best expressed as a bug, and a patch for the bug.  In many cases, someone else already reported the same bug, so the fix helps others.
<persia> When one runs out of annoyances (or ideas), looking at other peoples bugs, and fixing those is great as well.
<persia> Some annoyances might be that a package doesn't work the way someone wants, or that some program isn't included, or just that the documentation isn't quite right.
<effie_jayx> I am contributing little
<persia> Are you looking for something to do?  Have you reviewed https://wiki.ubuntu.com/MOTU/TODO?  That can provide hints if you can't find good bugs.
<mruiz> persia, Hi! This week I used desktop-file-validate (I was working on a "missing icon" bug and DktrKranz told me about it). Is there any attempt to test desktop files in a massive way? (and fill bugs with the packages with problems)
<persia> I also think that https://wiki.ubuntu.com/PackagingGuide/SupplementaryFiles is a good goal, so that more packages appear in Add/Remove programs, and make it easy for people to find them.
<persia> mruiz: There have been two.  The massive-bug plan was rejected as it would have started with about 10,000 bugs, and there were only around 20 developers then.  Most .desktop bugs are accepted for inclusion fairly easily.
<persia> Note that it is better if we can share a .desktop with Debian, as we don't want to have to merge 10,000 packages just for .desktop files.
<mruiz> sure!
<persia> It is much, much better to get the .desktop file upstream, and into the upstream translation domain, as otherwise the .desktop files aren't translated, and this is frustrating to users of locales other than "C".
<mruiz> I fixed a desktop file (bug 89353) and I want to send it to Debian... What is the easiest way to do it ?
<persia> mruiz: Check to see if there is already a .desktop bug in the BTS.  If not, report the missing .desktop file as a wishlist bug in Debian.  Attach only the .desktop file to the bug: the maintainer will often include it in the next scheduled release.  Be sure to also pass it upstream, as including it only in Debian is suboptimal, and should be considered part of a temporary solution.
<mruiz> thanks persia ... I'll send the patch to Debian
<persia> mruiz: patch?  Are you modifying a .desktop file, or adding one?  If the latter, just send the .desktop file.
<mruiz> persia, I modified the .desktop file (deprecated fields + encoding problem)
<persia> mruiz: For that, a patch is good :)  Just remember to also send upstream.
<mruiz> It seems that upstream is not working anymore :-(
<persia> Oh well.  Debian then :(
<mruiz> persia, have you ever tried with submittodebian script ?
<persia> mruiz: Nope.  I prefer to file all my bugs by hand.  This is a personal preference, and may not be the best example to follow.
<mruiz> hahaha
<mruiz> I understand
<effie_jayx> thanks persia
<effie_jayx> :D
 * persia heads off, thinking that two questions isn't that many, and suggests anyone with additional questions ask them in #ubuntu-motu
<Exteris> hey gunirus
<Gunirus> hi
<Zellfaze> It seems im an hour or so early
#ubuntu-classroom 2008-01-27
<Gunirus> afk
<mcisbackuk> When is the next scheduled class?
<plavcik> see /topic
<nalioth> plavcik: he's been gone :|
#ubuntu-classroom 2009-01-19
<Kellsch> Does anyone know of a good book to learn how to use Ubuntu or other Linux?  I've found about a million but I was wondering if anyone had a specific book that they found excellent.
<pdragon> http://www.amazon.com/Ubuntu-Unleashed-Andrew-Hudson/dp/0672329093
<pdragon> i've found that one useful
<pdragon> http://www.amazon.com/Ubuntu-Unleashed-2008-Covering-8-04/dp/067232993X/ref=sr_1_1/180-9872617-7588121?ie=UTF8&s=books&qid=1232324122&sr=1-1
<pdragon> sorry, there's the updated one
<Kellsch> thanks
<Kellsch> I'll check it out
<DasEi> oha, life in #ubuntu-classroom
<davidcs> hello
* dholbach changed the topic of #ubuntu-classroom to: Ubuntu Classroom || https://wiki.ubuntu.com/Classroom || https://lists.ubuntu.com/mailman/listinfo/ubuntu-classroom || Upcoming Event: Ubuntu Developer Week Jan 19-23: https://wiki.ubuntu.com/UbuntuDeveloperWeek || Ask questions in #ubuntu-classroom-chat
<creek23> hello, has the Ubuntu Developer's week starter already? -- Im from Philippines. and it's 5PM ofJan 19 here.
<dholbach> creek23: run   "date -u"   to find out what UTC time it is
* dholbach changed the topic of #ubuntu-classroom to: Ubuntu Classroom || https://wiki.ubuntu.com/Classroom || https://lists.ubuntu.com/mailman/listinfo/ubuntu-classroom || Upcoming Event: Ubuntu Developer Week Jan 19-23: https://wiki.ubuntu.com/UbuntuDeveloperWeek || Ask questions in #ubuntu-classroom-chat || Run 'date -u' in a terminal to find out what UTC time it is
<creek23> dholbach: what's basically gonna happen during "Getting Started" -- I'm basically waiting for Packaging which I think is hosted by you.
<dholbach> creek23: I just blogged about it - let me get you the link
<dholbach> creek23: http://daniel.holba.ch/blog/?p=337
<dholbach> there you go
<creek23> wow. thank you.
<creek23> very much
<dholbach> anytime
<dholbach> it's going to be bloody brilliant
<creek23> i sure hope so. :D
<directhex> someone seems excited
 * creek23 is joining the dev week the first time :D
<raouf> hey Everyone
<Kmos> hi dholbach
<dholbach> hi Kmos
<Kmos> dholbach: how are you? nice to see new events here
<dholbach> very good - thanks :)
<dholbach> still need to prepare a few things though :)
<Arc> yea opening session in 50 mins
<Kmos> dholbach: everything will be ok =)
<creek23> 30 min more....
<meekatron>  /IGNORE -regexp -pattern "is (away|gone|back)" * ACTIONS
<shankhs> hi
<shankhs> i am excited
<rooivalk> four minutes
<Flimm> ...
<creek23> 3.
<rooivalk> three minutes
<housetier> will there be logs? I'll have to move from work to home soon and would miss out
<dholbach> housetier: yes ,they're liked from the wiki page already
<dholbach> housetier: they'll be put up after the sessions
<housetier> excellent!
<creek23> good to hear
<creek23> 2.
<rooivalk> 2 minutes
<creek23> 1.
<rooivalk> 30 seconds
<creek23> 10
<creek23> 9
<creek23> 8
<creek23> 7
<rooivalk> 5
<rooivalk> 4
<creek23> 6
<rooivalk> 3
<creek23> 5
<rooivalk> 2
<rooivalk> 1
<Jarlen> spam!spam!
<creek23> woohoo!
<dholbach> HELLO MY FRIENDS!
<rooivalk> gooooooo
<holloway> Hellooouh!
<MrKanister> ^^__^^
<Don_S> Hullo!
<creek23> mabuhay!
<kusa> heloooooo
<dholbach> Who's here for Ubuntu Developer Week and who's excited as I am?
<kusa> hellooo*
<nxvl> o/
<holloway> \o/
<istaz> hello
<creek23> i am!!!
<sam[cOe]> hi
 * Don_S looks around.
<arch> o/
<arch> ghgh
<afflux> *waves
<Tm_T> dholbach: no, more than you
<dholbach> It's hardly possible, but who's MORE excited than I am?
<Flimm> Everybody join #ubuntu-classroom-chat !
<pedro_> yay!
<creek23> i am!
<rooivalk> i am toooo
<dholbach> Welcome to another KICK ASS Ubuntu Developer Week!
<dholbach> Just a quick introduction before we kick off this fantastic week:
<dholbach> The schedule is up here: https://wiki.ubuntu.com/UbuntuDeveloperWeek and logs will be made available after the sessions, the links are already there.
<dholbach> Most sessions will be here, in #ubuntu-classroom
<dholbach> and questions should be asked in #ubuntu-classroom-chat
<dholbach> please prefix them with QUESTION: so people see them easier
<dholbach> ie:   QUESTION: When is Jaunty coming out?
<dholbach> This first session is going to be special
<dholbach> It's "Getting Started" and we're going to have it in multiple languages simultaneously!
<dholbach> (big applause here!)
 * creek23 claps!
 * holloway claps
 * Aderyn claps
 * Israphel claps
 * istaz claps
<dholbach> james_w will be leading Getting Started in English
 * ripps claps
<arch> claps!
 * EnCuKou claps!
 * kusa claps!
<dholbach> Mirv and Tm_T will be leading the Finnish session in #ubuntu-fi-devel
<ikis> claps
 * Flimm claps
<dholbach> huats and gpocentek will be leading the French session in #ubuntu-fr-classroom
 * Tm_T bows
<shankhs> QUESTION: I know C/C++ how can I start developing in ubuntu?
<dholbach> gaspa and quadrispro will be leading the Italian session in #ubuntu-classroom-it
<gpocentek> (+Lutin on the french chan ;) )
<james_w> and didrocks?
<dholbach> gpocentek: excellent, merci beaucoup
<dholbach> james_w: he's ill :-/
<james_w> lot's of french :-)
<huats> james_w: is ill...
<james_w> aww, get well soon didrocks
<dholbach> nxvl and pochu will be leading the Spanish session in #ubuntu-classroom-es
<dholbach> and I'll be doing the German session in #ubuntu-classroom-de
<dholbach> thanks a lot dear presenters, you ROCK
<james_w> this is going to be so cool
<nxvl> thank you for having the idea!
<dholbach> I hope you're going to have a fantastic time, I'm VERY excited!
 * dholbach hugs y'all
 * james_w hugs dholbach 
 * holloway hugs dholbach back
<Aderyn> group hug!
<dholbach> james_w: the floor is yours :)
 * nxvl HUGS dholbach back
<dholbach> yoohooo! :)
<james_w> thanks dholbach
 * Tm_T runs away from dholbach 
<Koon> yaaaay
<james_w> good luck to my fellow presenters :-)
<Mirv> thanks :)
<kusa> thanks :)
<james_w> right, who's going to be following the English session?
<Aderyn> i will. :)
 * Don_S raises his hand.
 * Jarlen raises his hand
 * legate raises his hand
 * toobuntu_ raises his hand
<pdragon> i'm lurking
 * Arc raises
 * Israphel idem
<shankhs> I thought there will be over 1000 participants
<theseas> me too!
<EnCuKou> I'm lurking as well.
<arrowes> me too
<james_w> cool, glad to hear it
<ikis> me
 * Flimm raises his hand
<james_w> in this session I'm going to be talking about Ubuntu Development in general terms, showing you round some areas of it, and giving you pointers to get more information
<Israphel> I gonna follow the session while I watch disney channel
<Kmos> james_w: let's start it :)
 * creek23 raises hands.
<shankhs> ya
<james_w> then in the next session the unstoppable dholbach is going to talk about how to get started doing packaging, which is one of the main activities in Ubuntu developement
<james_w> so if you want to know the mechanics of packaging stick around for that session
<james_w> so, we'll get started with a look at the structure of Ubuntu development
<james_w> the wiki is the place to look for this
<james_w> https://wiki.ubuntu.com/UbuntuDevelopment
<james_w> that's the overview page
<james_w> that is full of links for places to get more information
<creek23> my first time here: are all the events gonna happen here in the IRC? how about visualizations?
<james_w> so, an Ubuntu developer is anyone that works on making Ubuntu  rock technically
<james_w> creek23: in #ubuntu-classroom-chat please
<james_w> as I said the main activity is based around packaging, and as such we deem "Ubuntu Developers" to be those that have "upload rights" to the archive, but there are many many more people that contribute to Ubuntu in really important ways without having upload rights
<james_w> for those that have upload rights, there are two groups "Core-dev" and "MOTU"
<james_w> the distinction is on how many packages they get to upload, with core-dev being allowed to upload anything, and MOTU only allowed to upload packages in universe
<james_w> (and multiverse)
<james_w> MOTU is the team to get involved with if you want to become an ace packager
<james_w> it's a really friendly, helpful community, and there is loads to do
<james_w> <Aderyn> QUESTION: MOTU is short for what?
<james_w> MOTU stands for "Masters of the Universe"
<james_w> it's a pun on the fact that we maintain the  universe component
<james_w> <shankhs> QUESTION: how to get upload rights
<james_w> good question
<james_w> to become a MOTU you spend some time contributing through the "sponsorship process"
<james_w> <shankhs> QUESTION: how to get upload rights
<james_w> https://wiki.ubuntu.com/SponsorshipProcess
<james_w> that's what I meant :-)
<james_w> this is where you prepare an update to a package in the archives and request that it be uploaded
<james_w> someone with upload rights will then review your change and work with you to make it work
<james_w> once they are happy with it they will upload it for you, but it will be under your name, they just sign it for you so that they archive software will accept it
<james_w> after some time, when you have contributed significantly through this process you apply for upload rights
<james_w> and the people that sponsored you will advocate your application, saying that they think you are ready to upload by yourself
<james_w> the MOTU Council then vote on your application and if they vote in favour of you you are given upload rights
<james_w> the aim is that it's fairly easy to get your work sponsored, so that you can contribute while not having upload rights, and then once you are trusted we can remove the review step and let you upload without that wait
<james_w> and of course sponsor the next batch of developers
<james_w> <shankhs> QUESTION: I read that to become MOTU you need a mentor how to get one?
<james_w> you can have a mentor if you like, but it is not requires
<james_w> see https://wiki.ubuntu.com/MOTU/Mentoring for more information on mentoring
<widox> alid login request > java.lang.NullPointerException
<widox> 11:20:08.104 - [ WARNING ] > SysHandler -> Bad room id. Action: roundTrip >> java.lang.NumberFormatException: For input string: "null"
<james_w> the time from application to getting a mentor is just a couple of days at the moment I believe
<GSMX> date -u
<james_w> but it's preferred if you can get started reading the documentation and tackling bugs on your own, and apply for a mentor for advice and guidance
<james_w> mentors are busy with their own development work, so they won't be able to teach you everything
<james_w> <ikis> QUESTION:What technical skills should have an Ubuntu developer? Is there any material?
<james_w> there aren't specific technical skills required
<james_w> knowing a bit of programming (in any language) helps
<james_w> if you are good at the command line, and know a bit of scripting or something that is usually good enough
<james_w> the main thing you need is skill at problem solving. Much of what we do boils down to that.
<james_w> there are obviously some things that you need specific skills before, but you can either skip those tasks, or learn the skills as needed
<james_w> <maxb> QUESTION: How does the Ubuntu Universe Contributors status fit in to this system? What is different between a member of this team and anyone else following the SponsorshipProcess?
<james_w> thanks, I forgot to mention this
<jepes> hello
<cineris> Hey!
<james_w> the "Ubuntu Universe Contributors" status is the same as Ubuntu member status
<jepes> hi
<mib_zvl2d8tt> hi
<james_w> jepes: #ubuntu-classroom-chat please
<elipticalosma> ola
<james_w> the MOTU council is able to grant Ubuntu membership based on contribution to Ubuntu development
<james_w> it doesn't gain you anything special from a developer perspective
<james_w> it's just a recognition of your contribution to development and ubuntu member status
<james_w> (and so @ubuntu.com email, IRC cloak, planet ubuntu etc)
<elipticalosma> hiper cool
<james_w> now, I want to talk a bit about the development cycle and related things
<creek23> elipticalosma: #ubuntu-classroom-chat please
<samp> ola hay alguien espaÃ±ol
<cineris> hoyga?
<james_w> as Xazax stated most packages in Ubuntu come from Debian
<Nosgosh> te comprendo
<james_w> so we start the cycle by pulling in all the latest stuff from Debian
<james_w> this goes on for a couple of months
<james_w> most stuff is pulled in automatically
<james_w> but if we have modified a package in Ubuntu then we must "merge" the changes
<james_w> this activity is unsurprisingly known as "merging"
<james_w> this is an important activity, as it is one of the main ways we make sure we are up-to-date, and is where a lot of interesting new things for Ubuntu come from.
<Kmos> Nosgosh: try #ubuntu-es-classroom
<james_w> we owe a lot to Debian, and to the "upstreams" that they take from
<jepes> hola javier
<cineris> thanks Kmos
<james_w> after that process has gone of for a couple of months (at "Debian Import Freeze", or "DIF")
<james_w> we stop the automatic import, and start to focus on the next release
<james_w> there is still a couple of months where we work on new things
<james_w> we either start to jump ahead of Debian a little bit by pulling directly from "upstream"
<james_w> or we add new things ourselves
<james_w> that goes on until "feature freeze"
<james_w> at that point we start to focus on making the next release solid
<james_w> this starts a couple of months before release
<james_w> and things start to freeze more and more over time
<james_w> meaning we make smaller and smaller changes to try not to break anything
<james_w> then we release and have a big party
<james_w> <ikis> QUESTION: Do you use the unstable Debian always?
<james_w> not always
<james_w> that's the default, but it's possible to take from elsewhere if needed
<james_w> e.g. experimental
<james_w> as Debian is currently frozen we have been doing that a bit more than usual this cycle
<james_w> <Ape3000> QUESTION: Can you increase the rate of backporting so we would always have the newest software? If it's stable on upstream, why shouldn't it be stable on Ubuntu?
<james_w> it's not that simple
<james_w> how stable a release is from upstream varies
<james_w> and more than that, it depends a lot on the rest of the packages
<james_w> so backporting something that works fine may cause it to break
<james_w> also, stability is important within a release. Having your system possibly break every day isn't very good to work on.
<james_w> selective backports can help for somethings
<james_w> and spending more time on backporting means we spend less on the next release, whereas we think it's important to make ubuntu+1 great, and we can do that without having to worry too much about stability for our users
<james_w> *and* you're never more than 6 months from the latest release
<james_w> <ongolaBoy> QUESTION:why do you release twice a year ?is it reliable ?
<james_w> it was decided that this gave the best balance between releasing quickly to get new stuff out there
<james_w> and releasing slowly to make sure things were well tested and stable
<james_w> it also stems from GNOME's 6-monthly release cycle
<james_w> following them is very useful for us
<james_w> read Mark's writing on release scheduling if you want to know more
<james_w> <Ape3000> QUESTION: What about online games that must be always the newest stable version in upstream? Shouldn't you prefer using the supported version instead of being 100% stable?
<james_w> there are obviously special cases, and we try and handle them appropriately
<james_w> <slavsun> QUESTION: when the Plymoth technology (loading different services at the same time) will be deployed in Ubuntu ?
<james_w> I think you've got a few things mixed up there, Plymouth isn't to do with services
<james_w> I'll talk a little bit about the new feature process though
<james_w> this process is ongoing, but it comes together towards the end of the release schedule
<james_w> we start to survey what changes are arriving upstream, look at brainstorm, talk to each other, etc.
<james_w> from that each developer will decide what is both important, and achieveable for the next cycle
<james_w> from that they will come up with a number of specifications
<james_w> these are then discussed at UDS, or elsewhere
<james_w> and then drafted, and approved
<james_w> and the developer will then work on them to be included in the next Ubuntu release
<james_w> plus, there are lots of things that are just implemented along the way without a specification etc.
<james_w> usually smaller things
<james_w> plus we get lots of new shiny by default every release from upstreams
<james_w> <shankhs> QUESTION:In brainstorm u get lots of conflicting ideas how u manage that?
<james_w> well, we don't have to implement them all, so we're ok
<james_w> but part of the point of brainstorm is to gauge how the user base feel about conflicting ideas
<james_w> if both are voted really high then we have to find another way
<james_w> <Ape3000> QUESTION: Do you listen to Brainstorm? If an idea gets lots of votes, do you implement that?
<james_w> it's not as simple as that
<james_w> we keep an eye on it, but we don't take the top 50 ideas from brainstorm to work on
<james_w> firstly, as I said the idea has to be acheivable, when many aren't, at least in the short term
<james_w> secondly, user votes isn't the only thing that should drive an OS
<paradx> hi
<james_w> right, there have been loads of questions about REVU, so I'll talk about that
<james_w> you can find REVU at http://revu.ubuntuwire.com/
<james_w> and read about it at https://wiki.ubuntu.com/MOTU/Packages/REVU
<james_w> REVU is a way for people to propose packages to be included in Ubuntu
<james_w> if you find something really useful that isn't included in Ubuntu you can package it
<james_w> and then put it on Ubuntu to get reviewed
<james_w> MOTU can then come and review your package, and you can fix any problems and re-upload
<james_w> if your package gets two advocates (MOTUs that say that it looks good) then it will be uploaded to Ubuntu
<james_w> however, reviewing new packages is a time consuming activity
<james_w> and there aren't that many MOTUs
<james_w> and not all of them spend time reviewing packages on REVU
<james_w> this means that there is a lack of reviewers, and so many packages on REVU go un-reviewed for a long period of time
<james_w> if you want your package uploaded then you can put it on REVU and ask for reviewers in #ubuntu-motu every so often
<james_w> and some patience will see your package uploaded. Then you can watch the bug reports and package new upstream versions etc.
<james_w> if you are looking to become an Ubuntu developer then you should probably look for other ways to contribute
<james_w> as the above reasons mean that it would take a very long time to developer status through REVU
<james_w> and there is more to development than new packages
<james_w> I would instead work on updating packages in the repositories to new versions
<james_w> and fixing bugs in them
<james_w> directhex> you could mention the option of targeting debian rather than revu, james_w
<james_w> indeed, thanks directhex
<james_w> if you have a new package then getting it in to Debian means that it will end up in Ubuntu anyway soon enough
<james_w> and you get more potential users of your package
<jsmidt> What's the best way to find out what needs done today? Harvest?
<james_w> for finding other tasks to work on then you can use Mr. Holbach's "Harvest" http://daniel.holba.ch/harvest/
<james_w> this aggregates lists we have of "low-hanging" fruit
<james_w> so they are good leads to pick up
<james_w> the absolute *best* thing to do is work on something you care about though
<james_w> if you use and love the epiphany web browser then take a look at the list of bugs on that and find something you think you could tackle
<james_w> if you try to install a cool new game and it fails to start as it is missing a dependency on some package then prepare a fix to the package so that you can install it
<james_w> if you really miss the ability to click on URLs and have them open in your web browser from some terminal emulator that you use then work out how to make that happen and submit a patch
<james_w> don't be afraid to start small either
<james_w> picking up a bug about a spelling mistake somewhere to work on isn't a bad thing, even though it's not coding C++, every time you work on something you will learn loads
<james_w> and before too long you will be able to tackle larger things
<james_w> (typing break, my fingers hurt :-) )
<Paddy_EIRE> james_w, :)
<james_w> right, let's look at other ways to contribute
<james_w> so, I've mainly been talking about packaging, as that is the core of what we do
<james_w> but there are very few people that just do "packaging"
<james_w> it naturally leads you to work on other things
<james_w> so we do a lot of bug-fixing
<james_w> we also develop some new features
<james_w> but that is a large time investment, so the scales we work at leave us little time to do that
<james_w> there are two main types of new features that you can contribute though
<james_w> the first is of the class "make my favourite application do such-and-such"
<james_w> these generally only touch a single package
<james_w> and we tend to think of these as "upstream" features
<james_w> for these you are often best off contacting the upstream project, as they will know the code much better and will be able to hep you
<james_w> the other type are the "glue" features
<james_w> this is where we make something work well either across, or between packages
<james_w> this is one area that Ubuntu shines
<james_w> this involves either writing new code, or integrating it from upstream
<james_w> so you can make something "just work"
<james_w> this is where most attention is focused, as these are the things that usually can't be done upstream
<james_w> either because they are distribution-specific in some way (for instance installer integration)
<james_w> or because they don't live in one package, but between them
<james_w> if you have an idea in this area and want to work on it then it's a good idea to track down the right people to talk to
<james_w> sometimes this is one particular person, sometimes a team, or sometimes it's a little bit of several people
<james_w> if it's to do with a particular package then you can find out who might be a good person to talk to by reading the changelog
<james_w> otherwise posting to the mailing list about it is probably the way to go
<james_w> <xnox> QUESTION: do translators and bug-squashers get same amount of recognition as the packagers? Eg. in terms of getting Member, MOTU and Coredev statuses?
<james_w> the can equally get membership
<james_w> they can't get MOTU and core-dev for those activities though
<james_w> as they don't normally need to upload packages to do that
<james_w> someone would be perfectly welcome to be a translator *and* a MOTU though
<james_w> and many people are
<james_w> <creek23> QUESTION: Does core-dev or MOTU get paid?
<james_w> not necessarily
<james_w> some are paid for their work, many by canonical
<james_w> but that is neither a requirement nor a guarantee
<james_w> there are many volunteer developers who do fantastic work
<james_w> <Xazax> QUESTION: there are lot of updated or new packages on getdeb.net. Whats with that? When will they be implemented?
<james_w> we don't pull from getdeb.net without manuall inspection
<james_w> if there was an updated package there then we could review it and pull it
<james_w> or the person that put it on getdeb could seek sponsorship to get it in to Ubuntu
<james_w> but we have other ways of finding out about new upstream versions
<james_w> rugby471> QUESTION: As a confident user, I reported a bug in launchpad, however it still has not be implemented after a long time, I figured the thing to do is package it myself, however I don't know how to get the source of the deb etc. How do you intend to make bug solving easier for users like myself?
<james_w> that's the best way of doing it, then you don't have to wait for someone else:
<james_w> :-)
<james_w> I personally care a lot about making bug solving as easy as possible in Ubuntu
<james_w> well, at least easy to integrate the fix if you can work out what it is
<james_w> we can't really make it easier to actually solve problems ;-)
<james_w> I'm working on a few projects that I hope will help with this
<james_w> and we have had lots of discussion within the developer community about making it easy
<james_w> I would say that if you have a fix, and you subscribe the sponsors as outlined in the sponsorship process I discussed earlier you should find it fairly easy to get your fix in
<james_w> (assuming that it's not doing something bad)
<james_w> <maxb> QUESTION: How does a contributor know when they are ready to apply for MOTU?
<james_w> maxb: it's a discussion that has also been going on in recent weeks
<james_w> the oft-given answer to this is either "when people tell you you are"
<james_w> or "when people are surprised that you aren't already"
 * xnox lol
<james_w> if you have a couple of regular sponsors then ask them, they will happily tell you if they think you are ready
<james_w> and if not they will be able to give you suggestions about where you can improve
<james_w> if you don't have regular sponsors then you either haven't really been involved long enough, or you've just been *really* unlucky and never had something sponsored by the same person twice
<james_w> (regular here would be 5 or so)
<james_w> if you think you are doing well, but you really don't know who to ask then you can find someone from the MOTU council and speak to them about it
<james_w> or indeed any MOTU would be glad to help I'm sure
<james_w> xnox> QUESTION/SUGGESTION: what about QA? from release perspective (+1) and from the on-going perspective (current, stable and LTS)
<james_w> we have the QA team, who try and test things, and keep an eye on the bugs to try and spot things that need to be fixed
<james_w> and of course, being free software, the users are testers too
<james_w> so we really on bugs being reported, and being escalated in the correct manner
<james_w> I think there are some QA sessions this week you could attend to find out more
<james_w> and there are weekly QA meetings if you have suggestions
<james_w> creek23> QUESTION: Does a software needs a large amount of user before ever being added to Ubuntu upstream?
<directhex> <james_w> so we really on bugs being reported, and being escalated in the correct manner <-- and with sufficient detail that they can be repeated & isolated by the person fixing the bug - "it doesn't work" helps nobody
<james_w> "upstream" means the places we pull software from, not part of Ubuntu
<james_w> directhex: indeed
<james_w> but no, we don't require a large amount of users before being added to Ubuntu
<james_w> though a package with close to zero *potential* users may have a hard time getting added
<james_w> <creek23> QUESTION: after a "needs packaging" is confirmed, when does it usually implemented?
<james_w> when somebody does it
<james_w> that's the best you can say
<james_w> xnox> QUESTION: can maintainers of Debian packages apply for Ubuntu Members status and get it like automagicly?
<james_w> not sure
<james_w> they will probably be able to get developer status quite quickly, as they presumably have good technical knowledge
<james_w> but as for member status, I'm not sure
<james_w> that would be up to the councils in the end
<james_w> launchpad is the place where a lot of Ubuntu development is tracked
<james_w> https://launchpad.net/ubuntu
<james_w> you will need an account there for a lot of development activities
<james_w> and you can find bug reports, translations, answers, specifications, build logs, NEW queue, and loads more on there
<james_w> <ronj> QUESTION: I had never heard of REVU before this session. One question after a quick look at the tool: don't you think this could be simplified and integrated to Launchpad? Seems redundant with some LP features. Or am I missing the point of the tool?
<james_w> it could perhaps be integrated in to launchpad, but it isn't, so we have REVU
<james_w> the launchpad developers would know if there were plans for it, or even if they wanted something like that
<james_w> <jsmidt> QUESTION: Should we update packages updated upstream but not in Debian?  If so, when is the freeze timeline for this?
<james_w> jsmidt: yep, there's no problem with that
<james_w> jsmidt: right at the beginning of the cycle it may be easier/better to get it in to Debian, and then sync
<james_w> in the middle it may be better to get it in to Ubuntu directly, unless you know that it will be updated in Debian soon
<james_w> at the end you will have to get a freeze exception, and it doesn't really matter where the package is coming from then
<james_w> xnox> QUESTION: Debian is frozen right now. What does it mean for them and for us?
<james_w> this means that Debian is in the process of releasing
<james_w> the freeze lasts for a long time in this period
<james_w> and during that time there are less uploads to Debian "unstable"
<james_w> some upload to "experimental", but some just wait
<james_w> that means to get things through Debian is a bit of a pain from Ubuntu's point of view, as they are concentrating on release
<james_w> I'm happy for them to do that, but it causes us a bit of disruption compared to the normal routine
<james_w> xenonex> How can I help in adding the latest version of the package in a repository? (for example, dhcpcd need to upgrade to version 4)
<james_w> firstly file a bug with the necessary information
<james_w> and tag it "upgrade"
<james_w> then check the Debian bug tracking system for the package and see if it has been requested there
<james_w> and if it has then link the bug in launchpad
<k-milogars> hello
<james_w> if not then you can file it in Debian (after checking it is not in Debian already)
<james_w> if it is in Debian then we need to do the merge
<james_w> once that is done you can tackle the upgrade yourself
<james_w> check "uupgrade" from devscripts that will automate some steps
 * james_w calls time
<james_w> thanks for your participation everyone
 * directhex blows a whistle
<directhex> round of applause for james_w
<james_w> I hope it was useful
<xnox> james_w: thank you for the session!!!!!
 * xnox claps
 * Arc applauds
<huats> james_w: congrats ;)
 * creek23 claps!
<james_w> I wonder how far I diverged from the sessions in other languages :-)
<jsmidt> \me claps
<Paddy_EIRE> james_w, Thank you very much for your time
<rugby471> THANK YOU!!!!! (oops not meant to post in this channel :-] )
<CrownAmbassador> Will this be published somewhere like other meetings? I couldn't log it before it started.
<Jarlen> thanks james_w, it was very enlightening :)
<james_w> CrownAmbassador: check the wiki
<EnCuKou> james_w: Thanks for the talk!
<theseas> thanx james_w
<jsmidt> thanks james_w
<CrownAmbassador> james_w: will do , thanks
<james_w> the scribes team does a great job making the logs available
<creek23> the whole uptream pulling to package review was quite a talk.
<maix> CrownAmbassador: https://wiki.ubuntu.com/MeetingLogs/devweek0901/GettingStarted
<CrownAmbassador> maix: Wow! That was quick! hehe. Thanks.
<maix> ah sry, +EN
<dholbach> HELLO EVERYBODY!
<maix> browser history :D
<dholbach> ARE YOU HAVING A GOOD TIME? :)
<Israphel> YEAH
<Arc> yes!
<xnox> YEAH!!!!
<ikis> claps!
<cody-somerville> WEE!
<dholbach> I can not hear you! Who's here for "Packaging 101"? :-)
<CrownAmbassador> dholback: Our German friend yeah?
<cody-somerville> ME!!
<maix> <-
<xnox> ME!!!!!
 * apw giggles
<Israphel> â
<Cobalt> dholbach: i'd sure like to know more.
<Arc> <-
<theseas> yesss!!! :)
 * Andphe is here for packaging 101
<cool2k> ME!!!!
<james_w> ME! I've been interested in this packaging thing, I'd quite like to learn how to do it
 * ia put hand
<alexrudd> might be easier to ask who isn't
<xnox> james_w: lol
 * hggdh needs to learn pack aging
<dholbach> I hope you guys are excited as I am and I hope to see you in #ubuntu-motu soon making Ubuntu rock even harder! :-)
<EnCuKou> I'm right here, sucking up the knowledge
<Ape3000> I like this few hours
<Ape3000> *liked
<creek23> i am!!!
<dholbach> Ok my friends, let's keep questions in #ubuntu-classroom-chat and please: ask :-)
<dholbach> So this is "Packaging 101" - I'm going to explain the bare-bone structure of a very simple package
<dholbach> a lot of the stuff I'm going to talk about is also in the Packaging Guide which is linked from https://wiki.ubuntu.com/MOTU/GettingStarted
<dholbach> so go and bookmark that page, it has all the important information, including some videos about packaging
<dholbach> first please all take a look at /etc/apt/sources.list
<dholbach> and see if you have something in there resembling
<dholbach> deb-src http://archive.ubuntu.com/ubuntu/ intrepid restricted main multiverse universe
<dholbach> this will give apt information about source packages which is what we're going to need
<dholbach> if you don't have it, please add it (and replace 'intrepid' with whatever ubuntu release you're running)
<dholbach> and run
<dholbach>    sudo apt-get update
<dholbach> afterwards
<dholbach> <bullgard4> QUESTION: Questions may be put at any time or only later?
<dholbach> bullgard4: any place in /etc/apt/sources.list should fine
<dholbach> <dlynch> QUESTION: do I need to learn about man pages and icons and where things go on the file system before I can even think about making a package?
<dholbach> dlynch: we're not going to cover it in this session, but as all things in Ubuntu Development it's fine to learn them step by step
<dholbach> for the package we're discussing in a few secs, it's not that important
<dholbach> alright, now that apt knows about source packages, please run
<dholbach>       apt-get source hello
<dholbach> for those of you who know 'hello', yes, it's boring
<Andphe> gksu gedit /etc/apt/sources.list
<dholbach> but it's to the point and that's what we like
<Andphe> sorry
<Andphe> :p
<dholbach> hello is a GNU project that shows how to use C, autotools, internationalisation to create an awesome tool which does nothing more than writing "Hello world!" on your screen
<dholbach> the hello source package contains a similarly spartanic packaging :)
<dholbach> which is a good start
<dholbach> so what did 'apt-get source' do?
<dholbach> on my machine it downloaded hello_2.2-2.diff.gz hello_2.2-2.dsc and hello_2.2.orig.tar.gz
<dholbach> hello_2.2.orig.tar.gz is the unmodified tarball that was released on the GNU homepage
<dholbach> (it was merely renamed)
<dholbach> <apw> Check if the 'dpkg-dev' package is installed.
<dholbach> apw: you're right... sorry - you will need dpkg-dev
<dholbach> I thought james_w had covered that ;-)
<james_w> yeah, sorry, didn't get round to that stuff
<dholbach> haha
<james_w> there's a lot of Ubuntu development to talk about
<dholbach> you're right :)
<dholbach> nevermind guys :)
<dholbach> hello_2.2-2.diff.gz is the compressed patch that was introduced to make hello build the Ubuntu way
<dholbach> what does that mean?
<dholbach> Ubuntu and Debian have a build process that is actually a meta-build process, it's on top of the packages build infrastructure (be it autotools or a python distutils project, or just a few PHP scripts that are installed somewhere, etc.)
<dholbach> this is a great thing, as we just have one build process that is applied to all kinds of packages
<dholbach> this is the "packaging" :)
<dholbach> hello_2.2-2.dsc is a text file that contains meta data such as md5sums and so on
<dholbach> <xnox> Question: looking into hello-2.2 directory, itsn't TOO many files for a "prints hello world" programm?
<dholbach> xnox: we'll get to the files in the directory in just a sec
<dholbach> <co0lingFir3> QUESTION: in the terminal it says signature could not be verified because the public key was not found. how can i fix that?
<dholbach> co0lingFir3: you can safely ignore that warning
<dholbach> it just means that you don't have the public key of the last person who touched the package to verify it
<co0lingFir3> k
<dholbach> also I have a hello-2.2 directory that was generated this way: extract the .orig.tar.gz tarball, apply the compressed patch (the .diff.gz)
<dholbach> apt-get source <package> will get you every source package that is available in the archive
<dholbach> alright, let's crack on
<dholbach>    cd hello-2.2
<dholbach>     ls
<dholbach> you can see there's a debian/ directory - this comes from the .diff.gz
<dholbach> and that's where the packaging lives
<dholbach> if you look into the debian/ directory you can see just a few files
<dholbach> and now we're going through all of them one by one
<dholbach> any questions already?
<dholbach> alright
<dholbach> the first one   debian/changelog   is pretty straight-forward
<dholbach> it contains changelog entries for every revision of the package that was done in Debian / Ubuntu
<dholbach> especially in Ubuntu it's very important to document very carefully what you've changed
<dholbach> we have no 'maintainer concept' in Ubuntu, we all work on all packages as a team
<dholbach> so if you don't like your fellow developer to have to second-guess what "made shit work again" means, you better document it well :)
<dholbach> also if you look at the package half a year later you need to know what changed and why
<dholbach> also add information about bugs that were fixed, references to patches, discussion etc.
<dholbach> <apw> QUESTION: how can we tell if it is a debian or ubuntu change
<dholbach> <creek23> QUESTION: revision of the package? not the revision of the binary?
<dholbach> <maix> QUESTION: in debian it is not?
<dholbach> apw, creek23, maix: we'll get to that exactly now :-)
<dholbach> <bullgard4> QUESTION: Do you, Daniel, often consult the changelog in order to find the cause of a bug?
<dholbach> bullgard4: always
<dholbach> on my system the first line of debian/changelog says:
<dholbach> hello (2.2-2) unstable; urgency=low
<dholbach> let's go through them one by one
<dholbach> 'hello' is the name of the source package
<dholbach> typically just the name of the upstream project
<dholbach> (2.2-2) contains the version number of the source package
<dholbach> it comprises of two parts
<dholbach> "2.2" is the version number of the upstream release
<dholbach> remember "hello_2.2.orig.tar.gz"?
<dholbach> that was the version that was release on the GNU FTP server
<dholbach> -2 means "this is the second revision of hello 2.2 that was uploaded to Debian"
<dholbach> if we were to add an Ubuntu-only change to the package, it'd be   2.2-2ubuntu1
<dholbach> so we just add a "ubuntu1" to the Debian revision
<dholbach> <ia> QUESTION: could you tell, please, a little bit more about X.Y-ZubuntuW package version naming? what stands Z and W for and how it calculates if i made some changes and gonna make new package?
<dholbach> Ok, let's talk about it a bit more
<dholbach> if we were to update hello to 2.3 without inheriting the version from Debian, we would call it 2.3-0ubuntu1
<dholbach> <Arc> QUESTION: what about when the upstream release contains a -, such as 1.0-beta2 or 3.0-rc3
<dholbach> that's an interesting question
<dholbach> in the case of beta2 and rc3 we would change our tactics slightly
<dholbach> we'd use the    ~    operator
<dholbach> ~?
<dholbach> it tells dpkg "this is smaller"
<dholbach> let me show you can example
<dholbach> daniel@miyazaki:~$ dpkg --compare-versions 1.0-1 gt 1.0~beta1-1 && echo TRUE
<dholbach> TRUE
<dholbach> daniel@miyazaki:~$ dpkg --compare-versions 1.0-1 gt 1.0beta1-1 && echo TRUE
<dholbach> daniel@miyazaki:~$
<dholbach> dpkg is always authoritative
<dholbach> dpkg will not upgrade to a version of a package that is "smaller" than the current one
<dholbach> we introduce the "~" to artificially let dpkg know: this is smaller :)
<dholbach> <Arc> QUESTION: what about after - for ubuntu-only packages
<dholbach> Arc: can you clarify?
<dholbach> <Arc> dholbach: what do you put after the - for when there is no debian package version, when you're packaging directly for ubuntu
<dholbach> Arc: OK. let's say I package   baconator 1.0
<dholbach> I'd call the first version that ever hits Ubuntu   baconator (1.0-0ubuntu1)
<dholbach> to indicate: we did not inherit any version from Debian
<dholbach> <creek23> QUESTION: if a software uses the YMD versioning scheme, should the package follow it as foobar-2009.01.16-ubuntu.deb?
<dholbach> creek23: it'd probably be foobar_2009.01.16-0ubuntu1_i386.deb or some such
<dholbach> <apw> QUESTION: why would not our 2.3 copy be 2.3~ubuntu1
<dholbach> apw: in the case of 2.3 (upstream, our first revision) it's not necessary to tell dpkg "this is actually smaller"
<dholbach> 2.3-0ubuntu1 works just fine
<dholbach> "~" is not used very very often
<dholbach> <ripps> QUESTION: What if we checkout a program from svn that doesn't a numerical version just a svn version (ex. svn2558)?
<dholbach> so if this was 1.0 version of baconator plus some changes from SVN, I could make it
<dholbach> 1.0+svn2558-0ubuntu1
<dholbach> alright, let's crack on :)
<dholbach> <oliver_g_1> QUESTION: for the SVN checkout case, where do we get the .orig.tar.gz?
<dholbach> oliver_g_1: create it ourselves
<dholbach> projects that use autotools often have a          make dist      or some such
<dholbach> to continue with the first line of debian/changelog....
<dholbach> there's still "unstable; urgency=low"
<dholbach> unstable is the default "distro release" that is uploaded to in Debian
<dholbach> we use things like "intrepid", "jaunty", etc.
<dholbach> we can always just upload to the current development version of Ubuntu
<dholbach> which in our case is "jaunty"
<dholbach> the 'urgency=low' bit is always added by tools like dch (in the devscripts package)
<dholbach> and we can safely ignore it
<dholbach> in Debian it describes the urgency of the upload
<dholbach> in the Launchpad build service it's ignored
<dholbach> <creek23> QUESTION: what's with the 0 in "-0ubuntu"?
<dholbach> creek23: it means that we have not inherited a version of it from Debian yet
<dholbach> <co0lingFir3> QUESTION: can we apply for "needs packaging" in launchpad even if there is no new version of a tool but just changes via GIT?
<dholbach> co0lingFir3: needs-packaging is something else - it's bookkeeping within Launchpad for packages that are not in Ubuntu yet
<dholbach> co0lingFir3: you're free to add changes from GIT
<dholbach> <apw> QUESTION: if the target version is not an ubuntu release does that target 'development' automatically?
<dholbach> apw: dch, which adds boilerplate changelog entries for your (in devscripts package) will default to the version you're running right now
<dholbach> <oliver_g_1> QUESTION: what if I want to make a package for Hardy? Can I still leave the changelog line at unstable or jaunty, or does it have to be hardy then?
<dholbach> oliver_g_1: take a look at https://wiki.ubuntu.com/StableReleaseUpdates
<dholbach> it's about hardy-proposed, hardy-updates, etc.
<dholbach> we're not going to have the time here to discuss it, sorry
<dholbach> <rugby471> QUESTION: If we package the hello program separately for ubuntu, why does it still retain the 'unstable' bit from debian
<dholbach> rugby471: because we got the source package unmodified from Debian
<dholbach> <Arc> QUESTION: does "unstable" thus mean that it was uploaded to debian directly, so we'd s/unstable/jaunty if we were uploading to (ie) a PPA for jaunty?
<dholbach> Arc: if you add a new changelog entry, use the current development release, yes
<dholbach> <maix> QUESTION: isn't it that urgency=high is used for security fixes?
<dholbach> maix: yes, in Debian - for us it's irrelevant
<dholbach> OK, let's crack on
<dholbach> please ask further versioning questions in #ubuntu-motu please :-)
<dholbach> the rest of the changelog entry is obvious
<dholbach> it describes what was done following the " * "
<dholbach> and in the bottom there's the content of DEBFULLNAME and DEBEMAIL
<dholbach> plus the current timestamp (date -R)
<dholbach> let's move on to     debian/control
<dholbach> this is much more exciting
<dholbach> it's always divided into at least 2 stanzas
<dholbach> the first one is about the source package
<dholbach> the following ones (in this case just one) about the resulting binary packages (.deb files)
<dholbach> Source: just repeats the source package name
<InHisName> :q
<dholbach> Section: is one of few sections that are defined in debian policy
<dholbach> Priority: is also defined in the debian policy
<dholbach> the Maintainer: name defines who takes care of the package
<MrKanister> You all should bookmark http://people.ubuntu.com/~cjwatson/ubuntu-policy/policy.html/  ;)
<MrKanister> sorry for interupting
<dholbach> Standards-Version: mentions which version of the debian policy the package complies with
<dholbach> <bullgard4> QUESTION: You used the term 'build service'. What do you mean by that?
<dholbach> bullgard4: we always deal with source packages when we introduce changes, which means we upload the .diff.gz the .dsc and the .orig.tar.gz file to a build server where it will be compiled and result in a bunch of .deb files
<dholbach> as I said before: this package is very very simple
<dholbach> and thus is does not contain a Build-Depends line
<dholbach> which you will encounter in almost every other package
<dholbach> in this line you specifiy which packages are necessary to build and compile the package
<dholbach> it always assumes that build-essential (including libc, gcc, make and so on) is installed
<dholbach> but every other Build dependency is specified explicitly
<dholbach> <GSMX_> QUESTION: how can you see who the ubuntu mainainer is?
<dholbach> apt-cache show hello
<dholbach> <ia> QUESTION: if i make some changes in package, so i should enter my name in "Maintainer" field, but current "Maintainer" line should replace by XSBC-Original-Maintainer, right? and what XSBC stands for?
<dholbach> ia: good question - this package is unmodified but for all the other packages which we decide to modify (over Debian)...
<dholbach> our friends at Debian asked us to preserve the Debian Maintainer in XSBC-Original-Maintainer and add a new Maintainer: which is specific to Ubuntu
<dholbach> this was done to prevent stray bug mails from Ubuntu users to go to the Debian maintainer
<dholbach> this can automatically be done by running update-maintainer (in the ubuntu-dev-tools package)
<dholbach> alright
<dholbach> so far to the debian/control section about the source package
<dholbach> let's come to the binary package
<dholbach> "Package:" just contains the name of the binary package we want to get created
<dholbach> in this simple case    upstream project name = source package name = binary package name
<dholbach> "Architecture: any" is slightly more exciting
<dholbach> this means: please build the package on any architecture individually
<dholbach> let me explain
<dholbach> when I upload a modified hello source package to the ubuntu build service
<dholbach> it will be independently built on armel, i386, amd64, powerpc, sparc, hppa, etc etc
<dholbach> so all the architectures that we have available in the data center
<dholbach> this is necessary where the binary package afterwards contains architecture dependent code
<dholbach> if you compile a C program, it's different on amd64 and powerpc
<dholbach> if you just ship a bunch of artwork in a package, you can safely change Architecture to "all"
<dholbach> which means: build it once, use the same package on all architectures
<dholbach> <ronj> QUESTION: in apt-cache show hello I see it depends on libc6 (Depends: libc6 (>= 2.5-0ubuntu1)), though there's no build-depends. How can that be?
<dholbach> ronj: just a sec
<dholbach> Depends: ${shlibs:Depends}
<dholbach> this means: these packages are necessary to install the package
<dholbach> ${shlibs:Depends} is not a package name (obvious, ha!)
<dholbach> but it's a variable that is substituted after the build
<dholbach> and replaced with all the libaries that the code in the binary package is linked against
<dholbach> magic!
<dholbach> <maix> QUESTION: hasn't support for powerpc etc been dropped recently?
<dholbach> maix: we still build packages for powerpc, it's a community port
<dholbach> The description contains a short (first line) and a long description for the package management tools
<dholbach> if you want to look at a non-trivial package, check out      apt-cache showsrc mono
<dholbach> it will show you that the mono source package is split up into 34567654567 different binary packgaes
<dholbach> packages
<dholbach> it got a lot better recently though :)
<dholbach> let's crack on to the next file, we're running out of time
<dholbach> debian/copyright is a file that the archive admins are very picky about
<dholbach> it contains information about
<dholbach>  - who packaged the piece of software
<dholbach>  - who the upstream developer(s) are
<dholbach>  - who has copyrights on the source
<dholbach>  - which individual licenses ALL the files in the source code are under
<dholbach> we have to be VERY VERY VERY careful when filling out that file
<dholbach> if we miss copyrights or miss files that are maybe unredistributable we're in trouble
<dholbach> and you'll make archive admins unhappy if you don't take it seriously :)
<dholbach> for a insufficient quick overview, try out this:
<dholbach> find . -iname '*.c' -o -iname '*.h' | xargs head | less
<dholbach> it will show you the headers of all the .c and .h files in the source tree
<dholbach> and show some of the copyrights
<dholbach> as I said, it's insufficient
<dholbach> <ia> QUESTION: does ubuntu maintainers use some scripts for searching "Copyright" strings in source code tree of project before packaging?
<dholbach> ia: there are a few tools for that, best to ask in #ubuntu-motu or #ubuntu-devel about it
<dholbach> also check out https://wiki.ubuntu.com/MOTU/GettingStarted because it links to a lot of important information about this stuff
<dholbach> (packaging guide, ubuntudevelopment processes, etc.)
<dholbach> the last file we just briefly mention is    debian/rules
<dholbach> it is a Makefile that wraps around the Makefiles that are used by the upstream source
<dholbach> it basically makes use of what you'd do to build and install the software
<dholbach> ./configure && make && sudo make install    is something you probably can relate to
<dholbach> the new targets   build, clean, binary, etc.   wrap around whatever build infrastructure your project has
<dholbach> this is a very blunt and very spartanic package, so it does not make use of debhelper, cdbs or other tools which make the job of maintaining a package a lot lot easier
<dholbach> <rugby471> QUESTION (sorry if this is too far ahead) : As far as I understand, if I found a bug, it wasn't being patched and I wnated to fix it, the best way would be for me to download the source (as you have shown) fix the problem, package the package and then ... , is this correct and what happens after the ... ?
<dholbach> rugby471: I'll talk much more about that topic at Wednesday 17:00 UTC
<dholbach> "fixing bugs in Ubuntu"
<dholbach> very short version: generate patch, attach to bug, subscribe ubuntu-main-sponsors (or ubuntu-universe-sponsors team) to get review
<rugby471> ok, I'll wait with anticipation! (sorry for interrupting)
<dholbach> <ia> QUESTION: Could you advise some concrete docs, where describes in detail, how can create "rules" file manually to understand each line? (so as to don't look at dh_* commands like at some spells :-)
<dholbach> ia: https://wiki.ubuntu.com/MOTU/GettingStarted - check out Packaging Guide
<dholbach> <maix> QUESTION: if we for example had a python package we'd put a byte-compiling script in that debian/rules?
<dholbach> maix: you'd wrap around   python setup.py install  etc (but we have clever tools for that - google for "debian python policy")
<dholbach> <oliver_g_1> QUESTION: what if the upstream project did not include a Makefile? Can I put the installation commands (cp) directly into debian/rules?
<dholbach> oliver_g_1: you can, there's a lot of different ways to do it
<dholbach> OK, the session is over
<dholbach> thanks a lot everybody
<dholbach> have a great Ubuntu Developer Wekk
<dholbach> Week
<dholbach> bookmark https://wiki.ubuntu.com/MOTU/GettingStarted
<dholbach> hope to see you in #ubuntu-motu
<dholbach> make Ubuntu better!
<dholbach> make me proud! :-)
<NetSKaVeN> great session dholbach!!
<CrownAmbassador> Thanks dholbach!!! Was great!
<h00k> thanks, dholbach
<rugby471> THanks great seession, It was a great idea to have that command at the start, so that everyone cna see what you are talking about, and also look at it in their won time. Thanks!!
 * xnox applauds
 * mneptok hugs dholbach 
<xnox> thank you
<maix> thanks dholbach
<audriusz> Big thanks to comes to you :D
<bullgard4> Thank you dholbach !
 * dholbach hugs y'all
 * iulian hugs dholbach as well.
<rugby471> cna * can   won * own
<ronj> thanks
<tictacaddict> thanks, it was a fun!
<ganbat> thx
<GSMX> thx
<ia> thanks a lot )
<creek23> thanks...
<theseas> thanx dholbach! :)
<ikis> thanks!
<dholbach> next up is nxvl and bddebian!
<creek23> holy! done already. i was just review ing the earlier messages because messages pops too fast :-(
<dholbach> "Working Well With Debian!"
<nxvl> :D
<creek23> oh well. :P
<dlynch> yes, thanks very much
<mneptok> nxvl: is this a how-to on how to configure flame-mail filters and body armor? ;)
<nxvl> mneptok: sort of :P
<creek23> really?!?
<nxvl> creek23: no
<nxvl> well, lets start
<nxvl> Debian is the base upon which Ubuntu is built
<nxvl> Almost all packages in Ubuntu come from Debian, and most are used unchanged
<nxvl> This means that Ubuntu owes a lot to Debian
<nxvl> and should endeavour to maintain a good relationship with them
<nxvl> There are several differences in the way that Debian and Ubuntu are organised
<nxvl> and in the decisions that they have made on some issues that you need to understand in order to work with them most effectively
<nxvl> The biggest difference is that in Debian all packages have a maintainer
<nxvl> which may be a team, who controls the package
<nxvl> They generally make all the decisions about the package
<nxvl> and are normally the only ones to perform uploads
<nxvl> There are some moves away from this, but it remains the status quo
<nxvl> This is different to Ubuntu where in general a package doesn't have a maintainer as such
<nxvl> it is just looked after by all contributors
<nxvl> This has effects on both Ubuntu and Debian
<nxvl> For Ubuntu it means that generally a contributor isn't familiar with a package
<nxvl> and doesn't know the Debian maintainer's opinion on things
<nxvl> For Debian maintainers it means that they generally don't know who to contact if they wish to discuss a package in Ubuntu
<nxvl> The differences in some policy differences can also make it difficult for a Ubuntu contributor to know whether what they are doing also applies to Debian as well
<nxvl> This can be especially true for bugs
<nxvl> where differing versions of packages
<nxvl> or different dependencies in the chain can hide or expose bugs
<nxvl> It can be helpful to not consider Debian as a "whole"
<nxvl> but more as a group of people who each work in their own little area
<nxvl> You will find that if you contact most of them with a bug report, a patch, or a question they will be very friendly and helpful
<nxvl> There are a few people that this wouldn't really apply to, but they are definitely in the minority
<nxvl> You will probably find if you contact them in a friendly manner about a specific issue then they will probably still help you
<nxvl> but it can be a scary thing to do
<nxvl> What I am trying to tell you here is not to let the actions of a noisy few spoil your opinions of the whole community
<nxvl> Ubuntu takes all source packages from Debian that aren't on a blacklist
<nxvl> and automatically "syncs" them in to Ubuntu
<nxvl> This means that the source package is taken unmodified and just rebuilt in the latest development version of Ubuntu
<nxvl> There are certain things that may be done while building which mean that you may get different binary packages
<nxvl> but they do not alter the functionality, for instance
<nxvl> https://wiki.ubuntu.com/DebianMaintainerField
<nxvl> This process stops at DebianImportFreeze
<nxvl> In order to sync a package after that stage you must file a sync request
<bddebian> Hey I thought it was at 4:00pm?
<nxvl> following the process at https://wiki.ubuntu.com/SyncRequestProcess
<nxvl> bddebian: :D
<nxvl> Where Ubuntu has to make changes to the package a new upload is done
 * bddebian checks his calendar
<nxvl> This upload has a version number containing "ubuntu"
<nxvl> which ensures that the package won't be synced without manual action
<nxvl> so that the changes are not lost
<nxvl> When this has been done in the past and a new upload is made to Debian
<nxvl> the package will be eligible for "merging"
<nxvl> This means taking the two versions of the package and reconciling the changes so that you get the new changes from Debian
<nxvl> but also keep the Ubuntu changes
<nxvl> See https://wiki.ubuntu.com/UbuntuDevelopment/Merging for more information
<SherokiX> apt-cache show hello; apt-cache showsrc hello; /kpom #ubuntu-es
<SherokiX> utia
<SherokiX> perdon
<SherokiX> sorry
<nxvl> Sometimes when you go to merge a package you will find that the new Debian version includes all the changes that were made in Ubuntu
<nxvl> In that case you perform a sync
<SherokiX> is a error... :S
<nxvl> meaning that again Ubuntu is using Debian's package for that software
<nxvl> now bddebian will tell you how to share with debian
<nxvl> bddebian: stage is all yours
<bddebian> Eeks, sorry I'm late
 * xnox had a question on the chat channel
<nxvl> 14:14 < xnox> QUESTION: do 0-ubuntu1 get automaticly synced with -1? or are  they still "merged"
<mok0> Thanks nxvl!!!
<nxvl> xnox: it's merged
<nxvl> xnox: in that case is a special merge, but definetely not a sync
<bddebian> Do we need more clarification on that before moving on?
<xnox> nope
<bddebian> OK
<bddebian> There are many ways that you can work together with Debian. For instance
<bddebian> you can share patches, work together to package new upstream versions,
 * xnox thanks nxvl for intro on the session
<bddebian> coordinate transitions, security fixes. You can even become maintainer
<bddebian> or co-maintainer of a package in Debian so that the package can always
<bddebian> be used unmodified in both with less work.
<bddebian> And of course there are several teams, of which you may join.
<bddebian> For instance, I actually became a member of the Debian Games team before becoming a DD.
<bddebian> OK, moving on..
<bddebian> When you are about to make some changes in Ubuntu you can look to
<bddebian> see whether these apply to Debian as well, and if they do contact the
<bddebian> Debian maintainers and propose that you work together on the issue, or
<bddebian> just send them the result of your work.
<bddebian> It's always a good practice to coordinate your changes with the debian
<bddebian> maintainer, so you can check if there is on his plans, there will never
<bddebian> be or he's working on something like the change you are doing.
<bddebian> Hmm, grammatical error there.
<bddebian> Obviously Ubuntu tends to work a little "faster" than Debian because of the release cycles.
<bddebian> Basically the ideal thing is to try to get your fix or proposed fix to Debian first if it is applicable.
<nxvl> 14:22 < xnox> QUESTION: where you originally Ubuntu user before you stated to  develop Debian? Or have you switched from Debian to use/develop  Ubuntu?
<bddebian> Heh, that's probably too long of a story to get into here. :)
<bddebian> In short, I actually started with Debian, got more into maintenance with Ubuntu and have since gotten more into Debian.
<bddebian> I didn't (and really still don't have) uber hacking sk1llz and Ubuntu as a community was much more welcoming.
<bddebian> Obviously some Debian Developers are much more open/welcome to suggestions, changes, etc.  In many cases Debian Developers are Ubuntu developers.
<bddebian> xnox: Did that answer your question or would you like more detail? :)
<xnox> bddebian: yeap thanks
<bddebian> OK, let's move on to Reporting back to Debian, unless there are any questions.
<bddebian> Many of the bugs on ubuntu are present on debian, but it's important
<bddebian> to keep in mind and be VERY careful is that not every bug on ubuntu
<bddebian> applies to debian, there are software error which are not reproducible
<bddebian> on debian, so if you will ping the maintainer or report back to debian,
<bddebian> you mas be sure it applies, so you don't make the Debian maintainer work
<bddebian> and test looking for a bug that doesn't exist.
<bddebian> s/mas/must/
<bddebian> Obviously this can be a bit difficult if you are strictly running Ubuntu.
<bddebian> Also if you are going to send your work to them (more on this later) you
<bddebian> must keep in mind that he or she is also a volunteer as you are, they can add
<bddebian> your changes if they think it will help them, but maybe they don't want
<bddebian> to apply them, also they don't want to read long diff files with lots of
<bddebian> changes, it's better to send them small and separate patches with your
<bddebian> changes so they can use the ones they find usefull and discards the ones
<bddebian> who doesn't.
<bddebian> <bullgard4> QUESTION: So the proper way  would be to report to Launchpad?
<bddebian> It really depends on the maintainer.  Many DDs won't pay much attention to LP unfortunately.
<bddebian> If you know it is a bug, I would send it directly to Debian BTS.
<bddebian> If you aren't sure, a quick e-mail to the maintainer (maybe with a link to the LP bug) would probably be good.
<bddebian> That's where timing becomes frustrating.  Some DDs are more responsive than others, obviously.
<bddebian> This is getting a bit better, so let me post the next paragraph that may also help:
<bddebian> Ok, but, what if i'm a triager? You can test if the bugs are also present
<bddebian> on debian and report them back using BTS, being careful on the points
<bddebian> talked about earlier, also, LP and bts have a "link" option so you can have
<bddebian> on the Bug report at LP the link to the debian bug report so it's easier
<bddebian> to keep track of what's going on with the debian bug, also bts has an option
<bddebian> like this that you can use with the command 'forwarded $bug $upstream_url'
<bddebian> so you can have it backwards, so please use the tools to have a better
<bddebian> comunication and avoid the packagers to duplicate efforts on patching.
<Flim1> I can't believe I missed the packaging session, I had a question!
<Flim1> Ooops, sorry, thought I was in chat
<bddebian> NP
<bddebian> OK, any other questions before moving on to Finding Information about Debian packages?
<bddebian> bullgard4: Did that answer your question sufficiently?
<bddebian> OK, let's move on.
<bddebian> There are several places from which you can find information about
<bddebian> packages in Debian. Knowing where to look to find something out
<bddebian> can be quite an art in itself. Luckily there is one place that tries
<bddebian> to gather as much of this information as possible. That place is the
<bddebian> Package Tracking System, known as the PTS.
<bddebian>  
<bddebian> The PTS lives at http://packages.qa.debian.org/. You can quickly go
<bddebian> to the page for a package using http://packages.qa.debian.org/package.
<bddebian> Note that it works using the source package name, but if you enter
<bddebian> a binary package name you get a helpful redirect page. Let's take
<bddebian> a look at a typical page: http://packages.qa.debian.org/gnupg. Starting
<bddebian> from the top left you can see information about the source package,
<bddebian> such as versions, and the priority. You also have links to the components
<bddebian> of the source package, so using "dget" you can quickly download the current
<bddebian> Debian source package.
<bddebian>  
<bddebian> If you click on the version numbers in the second pane from the top
<bddebian> you are taken to http://packages.debian.org/ which gives information
<bddebian> about the source package in that version. In the bottom of the left hand
<bddebian> pane you have the binary packages that are produced. Clicking on the name
<bddebian> leads you back to packages.debian.org and shows you a page with
<bddebian> information on that version of the binary package. You also have there
<bddebian> links to the bug reports on the package.
<bddebian>  
<bddebian> In the centre of the PTS page you have a "News" section, and at the top
<bddebian> you can have various notices that will appear only if they apply to this
<bddebian> package.
<bddebian>  
<bddebian> In the right hand pane, you have some links to bug reports for the source
<bddebian> package. These include the bug reports on all of the binary packages, but
<bddebian> can also reports on the source package itself, so I usually use these
<bddebian> so that I don't miss them (though they are rare).
<bddebian>  
<bddebian> Below that you can subsribe to the PTS. This means that if you are really
<bddebian> interested in a package you can get emails when things happen with the
<bddebian> package. If you select advanced mode from the drop down menu you can select
<bddebian> what sort of information you would like to receive.
<bddebian>  
<bddebian> Lastly in that column you have links to more information about the package,
<bddebian> including the buildd logs.
<bddebian>  
<bddebian> The other important source of information is the Bug Tracking System, known
<bddebian> as the BTS. If you go to http://bugs.debian.org/src:gnupg you can see the
<bddebian> page for the gnupg source package. This shows an overview of the bugs, with
<bddebian> them divided in to sections. You can click on a bug report to get more
<bddebian> information.
<bddebian> Email is used to communicate with and control the BTS. You can find
<bddebian> information on doing this at http://www.debian.org/Bugs/. You can also
<bddebian> use "reportbug -B Debian" and the "bts" tool to generate the emails.
<bddebian> There's a lot to digest there..
<bddebian> Debian PTS has actually been going through quite a few changes lately and has gotten some pretty nice information on it now.
<bddebian> OK, so the question came up, does dget download Debian packages or Ubuntu.  It really doesn't matter.  You point dget at a .dsc file and it will pull the corresponding .orig.tar.gz and .diff.gz files.
<bddebian> <oliver_g_1> QUESTION: this is probably not nice, but: what happens if I just work on a bug in Launchpad? Will the bugfix eventually reach Debian?
<bddebian> This is actually where some of the friction lies between Debian and Ubuntu.
<bddebian> The answer, unfortunately is, it can.  As I mentioned earlier, it is really up to the maintainer.
<mok0> PTS has links to LP bug pages
<bddebian> If you are looking at the PTS page for gnupg you will see in the bottom right corner, the Ubuntu links page.  It gives a link to LP patches that have been submitted against the package
<bddebian> As a good maintainer, we really should be checking those.
<bddebian> Unfortunately some do not.  Some of it honestly is just ego and some maintainers aren't big fans of Ubuntu.  Some of it is laziness.
<bullgard4> @all: In 7 Minutes there will be a class in #ubuntu-classroom about "Understanding GNOME Technologies".
<bddebian> Doh, let me post the last bit of this session so it is at least up here and we can discuss if needed.
<bddebian> Thanks bullgard4
<bddebian> Submitting a patch to Debian:
<bddebian> I want to talk a little about submitting patches to Debian. I chose this
<bddebian> topic for several reasons. Firstly, it is often requested that Ubuntu
<bddebian> forwards more of its patches to Debian. Secondly, it is quite an easy
<bddebian> thing to do. Thirdly, if Ubuntu pushes all its patches for a package
<bddebian> back to Debian then the package can just be synced in future, reducing
<bddebian> the amount of work it takes to maintain them.
<bddebian> In order to submit a patch to Debian you should first create a standalone
<bddebian> patch that fixes a specific issue. You should then check the BTS to see
<bddebian> if a bug has been filed about the issue. If it has then you can email
<bddebian> the bug report and attach the patch, sending a control command to
<bddebian> tag the bug "patch" ("bts tag #12345 patch").
<bddebian> If there is no bug report already then you should file a new one
<bddebian> which attaches the patch and sets the patch tag directly. You can use
<bddebian> reportbug to do this, but I find it easier to just use my mail client to
<bddebian> do it. You can see one of the mails that I sent at
<bddebian> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=451683.
<ubot5> Debian bug 451683 in aiksaurus "aiksaurus: Please add a .desktop file" [Wishlist,Fixed]
<bddebian> One thing that we would like you to do when filing bugs in Debian, with
<bddebian> or without a patch, is to set a "usertag" on them. This allows the
<bddebian> bugs to be tracked as one, so that it can be seen where Ubuntu is
<bddebian> contributing back. You can find out how to do this at
<bddebian> https://wiki.ubuntu.com/Bugs/Debian/Usertagging.
<bddebian> To make all this even more easy if you have well separated changes in
<bddebian> your diff to Debian you can use the submittodebian script in the
<bddebian> ubuntu-dev-tools package. This automates all of the above steps for
<bddebian> you.
<bddebian> I would like to point you to one last thing that will make all of
<bddebian> this easier in an environment where we have multiple people working on
<bddebian> the packages. That is the proposal described at
<bddebian> https://lists.ubuntu.com/archives/ubuntu-devel/2007-November/024743.html.
<bddebian> If you could all start using this technique when creating patches it will
<bddebian> make it easier to understand what patches are meant for upstream.
<bddebian> My closing comment would be that there are many people involved in
<bddebian> Ubuntu
<bddebian> development that are knowledgeable about Debian, so if you need to
<bddebian> know where to find something, or would like advice about whether a
<bddebian> change is applicable to Debian then you should just ask
<bddebian> My apologies to everyone for cutting short, sounds like we are running out of time.  I'll hang around in #ubuntu-classroom-chat and #ubuntu-motu if you have any specific questions.
<mok0> Thanks bddebian!
<oliver_g_1> thanks a lot!
<bddebian> And thanks to those that came and especially to nxvl for the content!
<iulian> Yea, that was interesting, thanks!
<bullgard4> Thank you, bddebian !
<bddebian> And if you happen to see me on, feel free to hit me up privately also.  I'm a new DD but I will do what I can.
<GSMX> thx
<xnox> thank you for the session!
<schmiedc> thx !
<mbudde> Thank you!
<james_w> thanks bddebian and nxvl
<theseas> thanx
<cool2k> thx it was great
<james_w> next up is Ted with "Understanding GNOME Technologies"
<james_w> should be an interesting one
<james_w> when he turns up :-p
<agoliveira> james_w: Ted Gould?
<james_w> yup
<james_w> ta-da!
<tedg> Sorry everyone, I messed up the time conversion.
<james_w> tedg: the floor is yours when you are ready
<tedg> Cool, hello everyone, I'm Ted Gould.
<co0lingFir3> hi ted!
<tedg> I'm here to talk a little bit about some Core GNOME Technologies, specifically GConf and DBus.
<theseas> hi Ted!
<tedg> There is of course many more, but we do have a limited amount of time to get through all of them.
<tedg> So, let's get started with GConf.
<tedg> GConf at it's most basic level is just a configuration storage mechanism.
<tedg> Instead of every application inventing it's own configuration file format, each of them uses a standard API to build.
<tedg> Which can be very handy for people like sysadmins and users writing scripts.
<tedg> One of the most standard way for people to interact with GConf is through gconf-editor
<tedg> It kinda looks like Microsoft's registry editor, which is where it gets it's bad reputation.
<tedg> But, I assure you, it's not like the Windows Registry.
<tedg> Sometimes apps do put settings inside GConf that they don't export in other ways, so it's a good place to look to see if you can get a setting you're looking for.
<tedg> One thing that you might notice as you're looking in GConf editor is that each key has a short and long description.
<tedg> This is a translated string that can be used to describe the values or the impact of changing that value.
<tedg> Because GConf is a daemon running in the user's session you can change the values in gconf-editor and they'll change live in the application
<tedg> This also means that you should be careful when changing values!
<james_w> <bullgard4> QUESTION: Why has Configuration Editor  its keys branched in 2 branches 'apps' and 'schemas'?
<tedg> Another way that you can access GConf is through the command line tool "gconftool-2"
<tedg> bullgard4, Let me answer that in a little bit, I'll get there I promise :)
<tedg> So if you want to see all the keys for GNOME Panel you can do: gconftool-2 -R /apps/panel/global
<tedg> This gives you a way to start to parse things with scripts and change settings based on icons or other effects.
<tedg> So if you wanted to add the  buttons on your panel you could do: gconftool-2 -s /apps/panel/toplevels/top_panel_screen0/enable_buttons -t bool true
<tedg> (and you can fix it with: gconftool-2 -s /apps/panel/toplevels/top_panel_screen0/enable_buttons -t bool false)
<tedg> Again this is live, as you execute that your top panel should have the buttons appear.
<tedg> We can also get the documentation using the gconf tool.
<tedg> Short docs: gconftool-2 --short-docs /apps/panel/global/confirm_panel_remove
<tedg> Long Docs: gconftool-2 --long-docs /apps/panel/global/confirm_panel_remove
<tedg> Another thing that is neat about GConf is that it provides a set of defaults, and then the user's configuration is layered on top of that.
<tedg> You can see that in this slide: http://gould.cx/ted/presentations/oscon08/index.php?slide=20
<tedg> What happens here is that the upstream values are the lowest level of settings that are used.
<tedg> Then we layer on the distro specific changes.
<tedg> Then any other changes a user/admin/dept. wants.
<tedg> Lastly, the user's specific configuration is put in.
<tedg> So, we can also use gconf-tool to revert our settings to the defaults: gconftool --recursive-unset /apps/gnome-power-manager
<tedg> (and I'd recommend saving your old ones first: gconftool --recursive-list /apps/panel > panel.gconf.values.txt )
<tedg> So if you're debugging a problem that might be a local setting, you can ensure that you have the defaults.
<tedg> This is helpful, also in determining which setting broke things.
<tedg> The lowest level of settings that GConf provides are called the GConf Schemas.
<tedg> These involve the default values, but also the descriptions that are translated.
<tedg> We can look at some of the schemas in the system by going to /usr/share/gconf/schemas
<tedg> For example you can look at panel-general.schemas to see some of the settings we were just looking at.
<tedg> Typically there is a set of schemas for every application that uses GConf
<tedg> The way that this layering is built up is through the GConf path.
<tedg> The path that starts everything out is: /etc/gconf/2/path
<tedg> If you look at that file you'll see that it's basically a list of directories and other paths to include.
<tedg> So if the user goes and includes a path in ~/.gconf.path that'll also get included in the list of settings that come through.
<tedg> You can include a repository based on what machine you're on, or any other variable of your liking on a per-user basis.
<tedg> But a sysadmin could also install some defaults for his/her site by putting a path in /etc/gconf/2/local-defaults.path
<tedg> To customize the distribution for their site specifically.
<tedg> Now, let's look a little bit at how the other defaults are set up.
<tedg> The tree that is derived from the schemas shows up in /var/lib/gconf/defaults
<tedg> You probably want to look at %gconf-tree.xml.
<tedg> If you search for 'dir name="panel"' in your editor you can see the default panel settings from upstream.
<tedg> But those get changed by Ubuntu/Debian in /var/lib/gconf/debian-defaults
<tedg> And that tree is built a little bit differently by dh_gconf: http://manpages.ubuntu.com/manpages/intrepid/en/man1/dh_gconf.1.html
<tedg> dh_gconf uses a file 'gconf-defaults' in the debian directory of the package to set the settings for that package.
<tedg> I wanted to show one, the easiest way that I could find is this, but it might take a while: apt-get source gnome-power-manger ; cd gnome-power-manager-* ; vi debian/gconf-defaults
<tedg> Basically the file gets copied to /usr/share/gconf/defaults
<tedg> So you can look at 10_gnome-power-manager to see basically the same file.
<tedg> It's just a list of keys and values.
<tedg> So you can see we're setting the icon type with this line:
<tedg>  /apps/gnome-power-manager/ui/icon_policy charge
<tedg> And you can see what that does: gconftool-2 --short-docs  /apps/gnome-power-manager/ui/icon_policy
<james_w> <maix> QUESTION: where are the translated descriptions of the schemas?
<tedg> So, the basics of GConf is that it's a set of configuration storage.
<tedg> That provides a good way to store settings in a uniform file format which lets the users and sysadmins have control over the settings in a universal way.
<tedg> maix, the translated values are installed in /var/lib/gconf/defaults/%gconf-tree-{locale}.xml but they are built from the schemas.
<james_w> <creek23> QUESTION: is there no chance to export settings from GConf Editor -- like windows' regedit does?
<tedg> I'm going to stop for a second, for GConf questions.
<james_w> <oliver_g_1> QUESTION: how can I import a list created with gconftool --recursive-list ?
<tedg> oliver_g_1, creek23, you can export the settings and install them using gconftool.  Let me get the syntax.
<tedg> Ah, it's not coming quickly there.  There is a way I can't find right now :(
<james_w> <Arc> QUESTION: is GConf intended for just gnome-specific apps or is it used for more general purpose apps (ie, those that may run under other desktop environments)
<tedg> Arc, there is no reason that other applications couldn't use GConf, but most do not.  There is some work on a "DConf" which is DBus based which could be more universal across desktops, though it hasn't been released yet.
<tedg> Arc, one of the issues with GConf is that it's dependent on CORBA which is a dependency that most folks don't want to carry.
<james_w> (gconftool --dump and gconftool --load look like candidates for backup and restore)
<tedg> james_w: Yes, thank you.
<tedg> Okay, if there aren't any more questions I'll start talking some about DBus.
<tedg> DBus is a generic IPC mechanism for applications to talk to each other.
<tedg> What makes DBus interesting is that it's designed to be rather small and that it communicates in messages.
<tedg> These messages have parameters which are typed in a defined way.
<maix> stop, there are some questions
<maix> <creek23> QUESTION: is it recommended that user settings should be saved on gconf instead of ~/.foobar?
<maix> <maix> QUESTION: it is not possible to have two instances of a program with different settings, is it? (like with other programs where one can specify another conf file by a command line option)
<tedg> So when you're building or using a DBus API you have more guarantees about how that API would work.
<tedg> maix: Okay.
<tedg> creek23: Yes, that is generally preferred.
<tedg> creek23: Of course that can be a pretty big change, as doing that users will expect you to be able to respond to configuration file changes.
<creek23> ty.
<tedg> creek23: Which most apps don't do if they're not GConf enabled.
<tedg> maix: I'm not sure of an easy way to do that.  It would be possible to provide a different path, but I don't know of any applications that do that.
<tedg> Any more Q's?
<maix> not seen more in -chat
<tedg> Okay, I'll continue with DBus.
<tedg> So DBus is one of the first things specified by Freedesktop
<tedg> And so it typically works with most GNOME and KDE applications.
<tedg> One interesting development in the DBus world is that there was talk at the Linux Plumbers conference about integrating DBus into the kernel.
<tedg> Which would also make it a very fast way for applications to communicate.
<tedg> Currently dbus is a daemon, and there are two of them.
<tedg> One of them runs the system bus and one runs the session bus.
<tedg> The system bus is all of the applications that are executing on your system with privileges and that there should be only one of even with multiple users.
<tedg> Probably the most famous of these is HAL, or Hardware Abstraction Layer, which abstracts out the different events that happen at the system level (like plugging in a USB key) and sends out that message.
<tedg> One tool to use to start playing with DBus is called "d-feet" and provides a graphical way to send messages on DBus.
<tedg> It'll also let you see which applications are exposing themselves over DBus.
<tedg> And what functions they're providing.
<tedg> Oh, I had a slide for the broadcast point a few lines back :)  http://gould.cx/ted/presentations/oscon08/index.php?slide=27
<tedg> The session bus is allocated on a per-user basis.
<tedg> So if there are multiple users logged into the system then they'll each have a session bus.
<tedg> Applications that sit on the session bus are those that are working with the user, usually providing their desktop environment.
<tedg> You can do fun stuff like most media players provide a way to switch songs over DBus.
<tedg> The easiest way over IRC to tickle DBus is by using dbus-send
<tedg> So you can do something like: dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0
 * tedg waits to see how many people drop off with a suspended laptop :)
<xnox> <Ng> QUESTION: are there any nice wrappers for using dbus from, say, python?
<xnox>      the raw API seems kind of cumbersome to use
<tedg> Ng: Yes, there is a bunch.  Python-dbus is nice.  And if you're using C and GLib the glib bindings are very nice.
<tedg> Ng: I haven't used any others, but in general there are a ton of bindings available for DBus.
<tedg> A command that you can play with more safely is: dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0
<tedg> No, cut-and-paste error.
<tedg> dbus-send --session --dest="org.freedesktop.PowerManagement" /org/freedesktop/PowerManagement/Backlight org.freedesktop.PowerManagement.Backlight.SetBrightness int32:50
<tedg> There.
<tedg> That should (on most laptops) set your backlight to 50%.
<tedg> What's also interesting about DBus is the broadcast side, and we can see that from teh command line also.
<tedg> To do that we can use dbus-monitor.
<tedg> So if we want to watch for backlight events:
<tedg> dbus-monitor --session "type='signal',interface='org.freedesktop.PowerManagement.Backlight'"
<tedg> So if you run the previous command in another window, you should see the events show up as their broadcast across the bus.
<tedg> Even though you're running on the command line, both the other window and GNOME Power Manger are both getting the event.
<tedg> While you can see the interfaces with d-feet, you can also discover them programatically.  As DBus also provides a way for introspection data to come across the bus.
<tedg> I'd recommend looking at that in d-feet as it's a rather large XML file.
<tedg> A good over view of DBus is at Linux Journal: http://www.linuxjournal.com/article/7744
<tedg> Let me take questions, as otherwise we'll run out of time.
<Arc> tedg: are you watching #ubuntu-classroom-chat?
<tedg> <meebey> QUESTION: who defines the path/namespace/method (or whatever it's called) for dbus, so other applications can call it? and can other applications "hijack" APIs?
<tedg> arc: trying :)
<xnox> <meebey> QUESTION: who defines the path/namespace/method (or whatever it's
<xnox> 	 called) for dbus, so other applications can call it? and can other
<xnox> 	 applications "hijack" APIs?
 * xnox is sorry
<tedg> meebey: The applications apply for a name when they start up, so it is possible for another application to implement the same API and use the same name.  But, DBus ensures that only one app has that name at a time.
<tedg> meebey: For instance, with the work you've probably seen about notifications, we're implementing the same DBus API so many applications can work unchanged.
<mneptok> xnox: please do not paste to this channel without being asked
<tedg> meebey: But, if you try to run our notification daemon and the upstream one is running, one will fail depending on which starts first.
<tedg> <Arc> QUESTION: is inotify setup to use DBus on Ubuntu?
<tedg> Arc, I'm not sure of a way that inotify could broadcast over DBus.  Really it would probably be more advisable that applications that were interested in doing something like that use Tracker to get that information.
<tedg> Arc, that way only Tracker is opening an inotify connection for every file on the system :)
<tedg> <GSMX> QUESTION: (sorry, gconf, missed out a bit) What's the difference between regedit en gconf-editor?
<tedg> GSMX, well I think a better question there is what's the difference between the windows registry and GConf.
<tedg> GSMX: GConf is only for configuration storage.
<tedg> GSMX: While the windows registry also does registration of objects.
<tedg> GSMX: Also, GConf has a layered approach where regular users rarely have a reason to need administrator access.
<tedg> GSMX: Where in Windows you end up with a lot of users needing some level of editing of the windows registry just to be productive.
<tedg> GSMX: Which, while they've tried hard to block them, seems to related to quite a few of their security issues.
<mneptok> tedg: also of note is that gconf outputs its configuration to human-readable markup, while regdit is the only interface to the Win registry. if you have enough GNOME-fu, you can configure gconf with vi ;)
<tedg> mneptok: For the record, I don't recommend that :)
 * mneptok does not, either.
<mneptok> (vi, that is) >:)
<tedg> Arc, AFAIK, DBus doesn't use inotify directly.
<tedg> Okay, considering I think we have 15 seconds or so left.  Probably a good time to call it a session.
<tedg> Thanks to everyone for showing up.
 * Israphel claps
<ikis> thanks to you
<Arc> thanks tedg!
<GSMX> thx!
<tedg> I'm usually in #ubuntu-desktop if you have more questions.
<ikis> nice session
<ronj> thanksthanksthanksthanks
<dinxter> cheers ted, interesting stuff
<mbudde> Thanks tedg!
<meebey> thanks tedg
<arch> very thanks :D
<xnox> thank you!!!!
<maix> thank you!
<EnCuKou> Thank you!
<audriusz> thanks. this was very interesting
<theseas> thanx tedg ang goodnight!!! :)
<creek23> thanks you!
<oliver_g_1> thanks tedg!
<xlazarus> good work, thanks
<mnemo> thanks a lot tedg :)
<rooivalk> thank you for your corporation! :)))))))))))
<creek23> so, that does it for day 1...
<theseas> bye everyone!
<arch> bye to all!
#ubuntu-classroom 2009-01-20
<Ape3000> Thank you
<Bodom> hiho
<Ape3000> Nah.. Maybe it's better if random users can't spam here?
<Bodom> do you mean me?
<intellectronica> hi Bodom
<Ape3000> I mean generally
<Ape3000> The users should use the #ubuntu-classroom-chat, so why do they have to have voice in here?
<dholbach> Ape3000: no worries, it'll quieten down soon
<a7p> Ape3000: for the sake of volantary disciplin
<a7p> works astonishingly well ;)
<Myrtti> Ape3000: the channel will be most probably set +m soon
<Ape3000> There is good sides with -m, too
<dholbach> it worked fine without it yesterday
<dholbach> and the other developer weeks before :)
<Ape3000> Yeah..
<Ape3000> We can do: /me applauses
<dholbach> :)
<dholbach> OK my friends... who's here for Day 2 of the Week of Awesome?
<dholbach> Who's excited? :-)
<zerwas> me :D
<Chris`> Me :o
<MarkoKaa> o/
<Chris`> Ã¶
<dholbach> is that everybody? or is the rest of the 172 people in here so shy? :-)
<dholbach> Welcome everybody to Day 2 of the Ubuntu Developer Week
<Ape3000> intellectronica?
<intellectronica> i'm not shy ;)
<cool2k> yeah!!!!!
<dholbach> The schedule is up here https://wiki.ubuntu.com/UbuntuDeveloperWeek
<Riddell> woo
<sianis> date -u
<sianis> use it :P
<dholbach> and we have Tom Berger, Mr intellectronica here who will talk to us about "Launchpad Bug Tracking"
<pedro_> rock and roll!
<dholbach> if you have questions, PLEASE ASK
<dholbach> but PLEASE ask in #ubuntu-classroom-chat
<dholbach> and prefix your questions with   QUESTION:
<dholbach> ie. QUESTION: Tom, what is your favourite colour?
<dholbach> ALRIGHT
<intellectronica> hi everone
<dholbach> have a great Day 2 everybody, hope you enjoy it!
<dholbach> intellectronica: the stage is yours :-)
<intellectronica> thanks dholbach. hugs aplenty
<dholbach> :-)
<intellectronica> so, we gathered here today to celebrate an historic event :)
<intellectronica> thanks to everyone who joined despite the obvious competition
<intellectronica> i'd like to introduce you to, and mainly answer your questions about, Malone, the Launchpad bug tracker
<intellectronica> (which I am taking part in developing)
<intellectronica> and which is the bug tracker ubuntu uses
<intellectronica> i haven't prepared much in advance, since i don't know what's the level of familiarity you guys already have with LP
<slavik> how does it compare with bugzilla from the administration and setting up side?
<intellectronica> so let's start with a survey (you can answer here). on a scale of 1-10, how familiar are you guys with Malone
<intellectronica> ?
<slavik> 0 :(
<Chris`> 1
<addc182> 0
<schmiedc> 1
<Ape3000> 7
<creek23> 1
<Riddell> 8
<ccm> 5 i guess
<zerwas> 1
<sianis> 5
<porthose> 0
<cool2k> 1
<thekorn> 7.99
<dholbach> 8
<theseas> 0
<toobuntu_> 0
<intellectronica> thekorn: give me a break, you're more like 11 :)
<TheEnd2012> 0
<slavik> intellectronica: you're 11, we're all lowly -1 :(
<thekorn> intellectronica, hehe ;)
<intellectronica> slavik: the obvious difference is that Launchpad is a hosted service. there's no set up at all for the users
<intellectronica> unlike bugzilla, which you have to install on a server and administrate, launchpad runs off launchpad.net and the launchpad team takes care to maintain it
<intellectronica> so the only setup procedure you might have, is registering a new project you might want to track. that's quite simple to do
<intellectronica> and for your use of LP as a bug tracker for ubuntu, there's absolutely no setup you need to do. just create an account and start messing with bugs
<slavik> intellectronica: I see. Can Launchpad authenticate against LDAP/AD?
<dholbach> slavik: can you please ask questions in #ubuntu-classroom-chat?
<Chris`> slavik: Just a note, we've been asked to prefix our questions in #ubuntu-classroom-chat with "QUESTION: Question to person?" there
<intellectronica> slavik: no. launchpad provides its own authentication system, which can also be used as an Open ID provider, and is widely used across the ubuntu landscape
<intellectronica> Ape3000 is asking whether LP is available for private installations. the answer not yet. LP will become free software this summer, at which point you'll be able to install it anywhere (and modify it and help developing it)
<intellectronica> but we very strongly believe that a lot of the value you get from Launchpad comes from it being a central hub in the middle of the free software ecosystem
<intellectronica> the ability to track and and connect bugs from ubuntu, as well as many other projects, using the same site, makes launchpad.net a very powerful tool
<intellectronica> one example of that, which we will look at shortly, is the ability to connect bugs in ubuntu to bugs upstream projects
<intellectronica> slavik asks what tools and languages are used for the development of LP
<intellectronica> LP is written in Python and uses Zope3 as its main web framework, Postgres as a database, Storm (the canonical-developed ORM) as a data layer and lots of other goodies
<intellectronica> you can also access launchpad using a public web service API which uses the REST protocol, from any language. we provide a python library which helps you use that service (more about that later today, when Leonard Richardson will present the API and library right here)
<intellectronica> and yes, Launchpad, obviously, runs on Ubuntu :)
<intellectronica> let's get on with some action!
<intellectronica> https://bugs.launchpad.net/ubuntu is the top level page in LP for ubuntu bugs
<intellectronica> it gives you an overview, and allows you to run simple searches for bugs
<intellectronica> for example, just type some (plausible) text into the text box and hit [Search] to get a bug listing
<intellectronica> for all the following examples i will use staging.launchpad.net
<intellectronica> staging.launchpad.net is a server we keep for testing and experimenting with LP. it has a copy of the launchpad database that is being restored daily
<intellectronica> IMPORTANT: please use the staging for trying out anything that changes the data (like creating new bugs, adding bogus comments, etc)
<intellectronica> that way you'll know that you can experiment freely without polluting LP itself with bad data
<intellectronica> likewise, remember that any changes you make on the staging server will be wiped out. do not use it for real work
<intellectronica> Chris` is asking whether data from staging will be wiped out after posting. the answer is yes - it is being wiped out daily, so you've got anything from a few minutes to whole day to still work with this data
<intellectronica> so, you all see what a bug listing in LP looks like
<intellectronica> you can choose a new sort order and search again
<intellectronica> or, if you need a more complex search, you can click _Advanced search_
<intellectronica> let's do just that
<intellectronica> i'm looking at https://bugs.launchpad.net/ubuntu/+bugs?advanced=1
<intellectronica> the status and importance sections are obvious, i think. they will select any _inclusive_ combination of the values you tick
<intellectronica> the people section allows you to select bugs that are related to certain people. for example, you might want to look only at bugs reported by someone, or assigned to someone, and so on
<intellectronica> using the series and component section, you can filter so that only bugs specific to a series or a component within the distribution are selected. this is particularly relevant to you folks working with ubuntu, because as you might have noticed, dealing with all the bugs for ubuntu is pretty much impossible
<intellectronica> the upstream status section is very useful when you try to get bugs found in ubuntu and see how they are connected to the upstream projects where they originated
<intellectronica> this is, i think an especially important concept, so let's try and talk about it a bit more
<intellectronica> many bugs that are found it ubuntu, are actually bugs that originated in some upstream project which is being distributed as part of ubuntu
<intellectronica> reporting it in ubuntu itself is a great first step, but it's usually not enough. we have to make sure that the upstream project knows about it, if we hope to get it fixed one day
<intellectronica> any questions so far?
<intellectronica> Chris` is asking what is edge.launchpad.net and how it differs from staging
<intellectronica> edge is a launchpad server which uses the _real_ data, just like launchpad.net
<intellectronica> it is available to LP beta testers (which you are all very welcome to join - it's fun and gives you an opportunity to help and influence LP development)
<intellectronica> launchpad is released monthly with new features and bug fixes to launchpad.net
<intellectronica> on edge, these changes are released as soon as they are available
<intellectronica> so, you can 'live on the edge' and use a constantly changing version of launchpad - giving you a chance to test (and comment on) the latest features, or you can use launchpad.net and get a very stable version that gets updated once a month
<intellectronica> shankhs is asking whether it is the responsibility of upstream devs to look for bugs in ubuntu that may be related to their project, or the responsibility of ubuntu devs
<intellectronica> the answer is that the relationship is collaborative, and anyone can deal with this, but you must remember that upstream devs have many things to deal with, and many other distributions. we can't expect them to always follow ubuntu
<intellectronica> which is why we try to make it very easy for people to forward bugs upstream
<intellectronica> let's look at https://bugs.staging.launchpad.net/ubuntu/+source/pidgin/+bug/162701
<ubot5> Launchpad bug 162701 in pidgin "pidgin freezes while typing a message" [High,Triaged]
<intellectronica> notice anything special about this bug?
<intellectronica> this bug might look like it's affecting two packages, but that isn't really the case
<intellectronica> we can see that it's affected the pidgin package in ubuntu
<intellectronica> but above it, we see that it also affects PulseAudio, which is an upstream project, not part of ubuntu
<intellectronica> this is a good example of how LP can represent the link between ubuntu and upstream projects
<intellectronica> if you click the _Also affectes project_ link, you can mark a bug as affecting other projects
<intellectronica> come on, give it a try (on STAGING)
<intellectronica> if you clicked, you can see that the pidgin package is already associated with the pidgin upstream project. we sometimes know this in advance, which can help you
<intellectronica> it also tells you that pidgin tracks its bug outside of launchpad, using Trac, and gives you the url to the trac server it uses
<intellectronica> if you manage to find a relevant bug in trac, you can paste the url into the first box - launchpad will follow that bug on your behalf and update the status
<intellectronica> launchpad can do this for many bug trackers: Trac, Bugzilla, Sourceforge (and some of its derivatives), Roundup, etc'...
<intellectronica> for Trac and Bugzilla, we provide a plug in which makes the communication with Launchpad especially efficient, and allows the bug trackers to exchange comments too (but it's the responsibility of the upstream project to install that plugin)
<intellectronica> ah, i can see that many of you experimented with creating new tasks for that bug, linking it to other projects, distros and packages. you guys are quick learners! :)
<intellectronica> if you click the status of one of the lines that show the bug reported in an upstream project, you'll see that it's different from normal launchpad bugs
<intellectronica> that's the stuff pertaining to bug watches, the mechanism LP uses for tracking bugs in external bug trackers
<intellectronica> shall we quickly look at reporting a bug? we're rapidly running out of time, so in parallel, please go ahead and ask questions if you have any
<intellectronica> i'm looking at https://bugs.staging.launchpad.net/ubuntu/+filebug
<intellectronica> this is the start of the bug filing process, but it's way too general. it is very rare that you'll want to file a bug about ubuntu as a whole. it's almost always the case that a specific package would be more appropriate
<intellectronica> you can always start from something like https://bugs.staging.launchpad.net/ubuntu/+source/pidgin/+filebug and report the bug directly on the package
<intellectronica> notice how slow the staging server is, b.t.w :)   obviously, it doesn't have the same amount of resources as the real launchpad servers
<intellectronica> after i enter a bug description, LP tries to find similar bug descriptions, so that i don't unnecessarily report a bug that's already reported
<intellectronica> if i don't identify the bug in the list of similar bugs, i can click 'No, i'd lke to report a new bug' and the details are shown
<intellectronica> first, we're asked in what package the bug was found. it is really important to try and find out. otherwise, the ubuntu qa and development teams will have a very hard time dealing with it
<intellectronica> you can also look at the instructions at the bottom of the page for what to do and not to do
<intellectronica> you can include an attachment - perhaps some data for helping diagnose the problem
<intellectronica> if you suspect that the bug is a security vulnerability, it's important that you indicate that using the checkbox. the bug will become private until further notice and will be treated more urgently in many cases
<intellectronica> ongolaBoy is asking about the different bug statuses
<intellectronica> New: the bug has just been reported
<intellectronica> Incomplete: more information is needed for people to be able to work on the bug. the reporter, or other people, should add more information in comments
<intellectronica> Invalid: actually, this bug isn't relevant, or is not really a bug. you can ignore it
<intellectronica> Won't Fix: this bug will not be fixed. maybe it's impossible to fix it...
<intellectronica> Confirmed: not used by ubuntu, but in some other projects it means that someone managed to reproduce the bug
<intellectronica> Triaged: the relevant team has looked at the bug and decided what to do with it, what importance to give it, etc
<intellectronica> In Progress: the bug is being worked on
<intellectronica> Fix Commited: the fix is ready and commited to the source tree
<intellectronica> Fix released: the latest version of the software no longer has the bug
<intellectronica> i see that we're running out of time. of course, i managed to cover about 10% of what i wanted to :-/
<intellectronica> but let's take more questions before i'm being kicked out
<intellectronica> and of course, i hang out in #launchpad all the time, and you are all very welcome to drop by, ask me or any of the other devs questions and enjoy the view
<intellectronica> Ape3000 is asking what my favourite colour. black, at least for today
<intellectronica> shankhs: is asking about patches and fixing bugs
<intellectronica> when you upload an attachment to launchpad, you can mark it as a patch
<intellectronica> it is later easy to search for patches (you may have noticed it in the bug search form)
<intellectronica> if a project uses launchpad for code hosting, you can use bazaar for making fixes, which is really cool. there's a session on that later this week
<intellectronica> oright, i think it's time for ara to start her show
<intellectronica> thanks everyone, and please, do feel free to continue asking questions on #launchpad
<intellectronica> --------------------------------------------
<dholbach> next up is Ara Pulido who will talk about QA Tools!
<dholbach> let's hear a round of applause! :)
<Arc> *cheers*
<Bodom> *applause*
<kranichTheII> *applause*
<jpds> \o/ ara \o/
<B_a_l_a_k> *applause*
<theseas> *applause*
<porthose> *applause*
<ara> ok, enough, I am not Madonna
<ara> Thanks all for coming and the warm welcome ;-)
<ara> Questions in #ubuntu-classroom-chat, please
<ara> My name is Ara and I am part of the Ubuntu QA Team (https://wiki.ubuntu.com/QATeam/)
<ara>  Do you guys know what are the duties of the QA team?
<kranichTheII> Quality Assurance ?
<Arc> making sure the devs don't seriously break something for every Ubuntu user with an update
<ara> yes, yes, it is Quality Assurance, and yes we have to try to make sure that devs don't break many things (something always break...)
<ara> But the two most important duties are Triaging (https://wiki.ubuntu.com/BugSquad) and Testing (https://wiki.ubuntu.com/Testing).
<ara> triaging bugs is about making bugs report better, or ask for more information, or provide better information, etc. so the devs can start working on them
<ara> and testing gives a try to Ubuntu before it reaches the wider public
<ara> both the buqsquad team, and the testing team are open to new contributors ;-)
<ara> To perform our daily activities we have a set of tools to make the process easier and automate some of these tasks.
<ara> To be able to try some of the tools that I am going to present, you will need to have installed 'bzr' in your computers. If you don't have it, you can install it easly:
<ara> $ sudo apt-get install bzr
<ara> all set?
<kranichTheII> jup
<ara> Let's start grabbing the LP project (https://code.edge.launchpad.net/ubuntu-qa-tools) that contains several QA tools.
<ara> shankhs: complains that bzr doesnt support proxy and aythentication ... :(
<ara> shankhs: I am not a bzr expert, but I am sure there must be some workaround there
<ara> The trunk is the branch that it is better maintained, get the source using bzr:
<ara> $ bzr branch lp:ubuntu-qa-tools
<ara> The first set of scripts that we are going to visit are those that parse the bug mailing list. Those scripts are available in the newly created folder ./ubuntu-qa-tools/bug-mailinglist/
<ara> all of these scripts are python scripts. be sure to have python on your machines
<ara> The mailing list that receive every bugmail generated in Ubuntu has a copy at http://people.ubuntu.com/~listarchive/ubuntu-bugs/
<ara> To use the bug-mailinglist scripts you have to grab a copy of one of the available archives and save it locally.
<ara> this files are too big, for testing purposes you can just trim one of them
<ara> The first script, triager-query.py queries the mailing list archive for actions performed by a specific bug triager.
<ara> actions like "add tag", "set as incomplete", "set as triaged", etc
<ara> syntax go as
<ara> python triager-query.py [email] [file]
<ara> example:
<ara> python triager-query.py sinzui.is@verizon.net ../test_bugs_mailing_list.txt
<ara> From sinzui.is@verizon.net: 1
<ara> sinzui.is@verizon.net triaged: 1
<ara> this is the output of a trim of the January archive
<ara> why this information is useful?
<ara> As you might know, triagers in Ubuntu are divided in two teams. The bug-squad team is open to anyone, but to enter the bug-control team you have to be an experienced triager
<ara> because bug-control members have access to potentially sensitive data
<ara> If you're part of the bug-control team, one of your duties is to review new membership applications to the team
<ara> count-senders.py parses the mailing list archive and returns the quantity of messages sent by individuals. This includes any activity in the bugs.
<ara> python count-senders.py [email] [file]
<ara> body-searching.py searches the mailing list archive for a user defined string, sys.argv[1], and returns bug numbers containing that string.
<ara> python body-searching.py [string] [file]
<ara> tagged-bugs.py searches the mailing list for tags, and creates a HTML report with the date the tag was added to the bug
<ara> python tagged-bugs.py [tag] [file]
<ara> all this information can be retrieve directly through Launchpad, of course, but if you have to do it daily, it is much easier to use the scripts
<ara> and faster
<ara> not saying that the launchpad web interface is slow... (in case some of the LP is watching...
<furicle> ls
<ara> any questions about the bugs-mailinglist scripts? If not I am going to move to a script to help testers
<ara> bullgard4:  QUESTION: ':~$ python triager-query.py; python: can't open file 'triager-query.py': [Errno 2] No such file or directory'. What went wrong?
<ara> bullgard4: did you move to the right folder? once you branch you have to move to ubuntu-qa-tools/bugs-mailinglist
<ara> Let's move now to another tool, the dl-ubuntu-test-iso, a script that will help you keeping your testing images ISO up to date.
<ara> have you ever helped with ISO images testing?
<ara> then start now! ;-) https://wiki.ubuntu.com/Testing/ISO/
<ara> each milestone released (alpha-1, alpha-2, point releases, etc.) need some ISO verification
<ara> to avoid having to download every single iso each time you can have them synced
<ara> dl-ubuntu-test-iso is based on rsync and can be configured to download only the necessary images.
<ara> shankhs: and it is not a python script. it is bash scripting ;-)
<ara> To configure the tool you need to save your configuration file as ~/iso/iso.cfg. You can see an example here: http://people.ubuntu.com/~ara/udw/qatools/iso.cfg
<ara> In the example configuration file we have set to download jaunty release, only for i386 architectures, and alternate, desktop and server.
<ara> Once you have set up the configuration file, and running ./dl-ubuntu-test-iso, the images will start to be download to the ~/iso folder.
<ara> Please, take into account that by default all the images are download, so if you do not have a configuration file, you will download every possible image.
<ara> If you run the script daily (or weekly), you will need to download only the changes between both images
<ara> saving you time
<ara> and bandwidth for your movies and music ;-)
<ara> If you want to start helping with Ubuntu, ISO testing is a great way to start. and really, really helpful
<ara> And now that we are talking about the dl-ubuntu-test-iso script to test ISO images, do you know the ISO tracker?
<ara> The ISO tracker is a web application that we, at the QA team, use to track the testing of the ISO images. It is located at http://iso.qa.ubuntu.com/ and it is updated with the ISO images that we should be focusing in (right now the focus is taking by Hardy's point release).
<ara> It is really helpful to create an account in the ISO tracker (if you have an account in the Brainstorm site, that one would work in the ISO tracker site as well) and submit your testing results.
<ara> On the menu on the left, you can select the flavour that you're testing. Let's select Ubuntu flavour.
<ara> Then you have to click on the ISO image that you're testing. Let's say that we are going to test Alternate i386 (the installer that does not have a Live session)
<ara> When you click in one of the options, a list of testcases will appear, and a link to the ISO image, in case you haven't downloaded yet.
<ara> Nice and easy
<ara> In the list of testcases you can see what it is outstanding and have your pick taking that into account. Click on the chosen testcase to read it and submit your results.
<ara> Any questions about the ISO testing site or ISO testing in general? (before I move back to bug triaging)
<ara> bullgard4:  QUESTION: What is 'Hardy's point release'?
<ara> bullgard4: Hardy (Ubuntu 8.04) is a LTS release (Long Term Support)
<ara> bullgard4: we realease "point release" 8.04, 8.04.1, 8.04.2... that contain the latests updates already in the ISO images
<ara> let's move to some useful reports that will make triagers life easier. When triaging bugs is useful to have access to some important information through the reports. Here's a list of some of them:
<ara> Yesterday bugs: http://qa.ubuntu.com/reports/bugnumbers/yesterday.html
<ara> Bugs reported yesterday. Useful to Invalid, Mark as Duplicate or request more information.
<ara> With more duplicated bugs: http://qa.ubuntu.com/reports/launchpad-database/bugs-with-most-duplicates.html
<ara> this is really useful when you're reading a bug that you "feel" "sure, this has been reported before"
<ara> 25 oldest bug task that are <put here>:
<ara> new: http://qa.ubuntu.com/reports/launchpad-database/oldest-new-ubuntu-bug-tasks.html
<ara> Incomplete http://qa.ubuntu.com/reports/launchpad-database/oldest-incomplete-ubuntu-bug-tasks.html
<ara> Confirmed http://qa.ubuntu.com/reports/launchpad-database/oldest-confirmed-ubuntu-bug-tasks.html
<ara> Triaged http://qa.ubuntu.com/reports/launchpad-database/oldest-triaged-ubuntu-bug-tasks.html
<ara> Progress http://qa.ubuntu.com/reports/launchpad-database/oldest-in-progress-ubuntu-bug-tasks.html
<ara> Fix Committed http://qa.ubuntu.com/reports/launchpad-database/oldest-fix-committed-ubuntu-bug-tasks.html
<ara> Helpful if you want to clean Launchpad from obsolete bugs
<ara> The newest addition to the list, just announced a week ago, is the team assigned reports. As you might know, Canonical gives support to the packages in main, therefore, it is useful to have a list of the tasks assigned to one of this teams. The format of the URL of these reports is
<ara> http://qa.ubuntu.com/reports/team-assigned/canonical-<team>-assigned-bug-tasks.html
<ara> i.e. for the mobile team:
<ara> http://qa.ubuntu.com/reports/team-assigned/canonical-mobile-assigned-bug-tasks.html
<ara> A list of them can be found at http://qa.ubuntu.com/reports/team-assigned/
<gman16k> http://qa.ubuntu.com/reports/team-assigned/
<ara> These reports can be useful, in case a triager sees that an already assigned bug with high importance hasn't been touched in a while, he or she could ping the correct person directly, to try to push the resolution.
<ara> triaging bugs involves a lot of talking through the IRC. If you like IRC, you will love triaging bugs!
<ara> I am running out of time, I would like to move to testing again before I finish
<ara> any questions on the triaging side?
<ara> ok, let's move back to testing
<ara>  we will talk a bit about SRU testing. Does anyone know what SRU stands for?
<davmor2> stable release update
<ara> SRU stands for Stable Release Updates. This is, those updates that are found in the Update Manager when we are running a stable release of Ubuntu.
<ara> davmor2: you're a great student! ;-)
<ara> Briefly, the process goes as:
<ara> * An important bug, that needs to be fixed through updates, is found in a stable release.
<ara> * A fixed is written and apply to the package. The package gets updated in the -proposed archive.
<ara> * A tester willing to help with the SRU process (and has the -proposed repositories enabled; https://wiki.ubuntu.com/Testing/EnableProposed) installs the package and verifies that the bug has been fixed.
<ara> * The fix is apply to the -updates repository.
<ara> For more information about the SRU process you can go to https://wiki.ubuntu.com/StableReleaseUpdates
<ara> To help tracking the outstanding bugs to test and help people coordinate the efforts, we have a very helpful tool, the SRU tracker:
<ara> http://people.ubuntu.com/~sbeattie/sru_todo.html
<ara> In this tracker you can easily spot what fixes need verification (and for which release) and a test case if available.
<ara> If you're running a stable release of Ubuntu (hardy, intrepid...) this is a great way to help the QA team to make Ubuntu better.
<ara> any questions before leonardr starts the following session?
<ara> counting down:
<ara> 5...
<ara> 4...
<ara> 3...
<ara> 2...
<ara> 1...
<charlie-tca> Thanks ara, That was GREAT!
<ara> Ok, that's it for today! I will be running another session on Thursday, to explain how to use Ubuntu Desktop Testing to create automated tests for the desktop.
<davmor2> thanks ara
<dinxter> cheers!
<ara> Thanks all for coming!!
<bullgard4> Thank you, ara.
<porthose> thank you ara
<leonardr> ok, i'll get started now
<leonardr> Hi all.
<leonardr> My name is Leonard Richardson. I'm on the Launchpad Foundations team and I'm the co-author of the O'Reilly book "RESTful Web Services".
<leonardr> I'm here to talk about the Launchpad web service API--how to use it and what advances have been made since the last UDW.
<leonardr> I'll do an infodump and then take your questions.
<leonardr> If you have questions in the meantime just put them in #ubuntu-classroom-chat.
<leonardr> Most of this infodump will be familiar to those of you who were at this chat at the last UDW. I ask you to bear with me so I can get everyone up to speed.
<leonardr>  
<leonardr> 1. Intro
<leonardr> First thing to know is that we've got docs talking about the API here: https://help.launchpad.net/API
<leonardr> Put simply, we've created an easy way for you to integrate Launchpad into your own applications.
<leonardr> If you perform the same tasks on Launchpad over and over again, you can now write a script that automates the tasks for you.
<leonardr> You don't have to rely on fragile screen-scraping.
<leonardr> If you're a developer of an IDE, testing framework, or some other program that has something to do with software development, you can integrate Launchpad into the program to streamline the development processes.
<leonardr> If you run a website for a project hosted on Launchpad, you can get project data from Launchpad and publish it on your website.
<leonardr> And so on. You'll eventually be able to use the API to do most of the things you can do through the Launchpad web site.
<leonardr>  
<leonardr> 2. Tools
<leonardr> The simplest way to integrate is to use launchpadlib, a Python library we've written.
<leonardr> (see https://help.launchpad.net/API/launchpadlib)
<leonardr> This gives you a Pythonic interface to the Launchpad API, so you don't have to know anything about HTTP client programming:
<leonardr> >>> launchpad.me.name
<leonardr> u'leonardr'
<leonardr> >>> launchpad.bugs[1].title
<leonardr> u'Microsoft has a majority market share'
<leonardr> But it's also easy to learn the API's HTTP-based protocol and write your own client in some other language.
<leonardr> (see https://help.launchpad.net/API/Hacking)
<leonardr>  
<leonardr> 3. Progress and Roadmap
<leonardr> At the last UDW I said that the web service publishes information about people, bugs, and the Launchpad registry, (the projects, milestones, etc.).
<leonardr> Since then, the bugs work has been more or less completed. CVEs have also been published through the web service.
<leonardr> Code branches have come online.
<leonardr> Merge proposals have been published but are currently read-only. They should be read-write within a week.
<leonardr> Additional bits of the registry, like milestones, have been published since the last UDW.
<leonardr> Some of the Soyuz functionality has come online: archives and archive permissions.
<leonardr> The hardware database will be the next thing to be published, hopefully within a month.
<leonardr> Publication through the web service is still not a priority for translations, answers, and blueprints.
<leonardr> so, that's the infodump, i invite your questions
<leonardr> <sianis> QUESTION: do you plan write API for Rosetta?
<leonardr> so, the team that does some part of launchpad, like rosetta, is also responsible for publishing that part of launchpad through the web service
<leonardr> i talked to the translations team today and they don't have plans to publish translations through the web service, per se
<leonardr> however, we will also be using the web service to add ajax functionality to the launchpad website
<leonardr> and they will be publishing some of the translations functionality for that, so you will get at least some of the translations
<leonardr> but there's no plan right now to publish the whole things as there was for bugs--what they publish might be useful to you, it might not
<leonardr> <bullgard4> QUESTION: What is a " Pythonic interface "?
<leonardr> a pythonic interface is one that "looks like python". it presents objects that act like built-in python data structures, as opposed to (eg.) one with a lot of getters and setters
<leonardr> <thekorn> Question: can you please explain (in short) the different access-level?
<leonardr> <thekorn> and especially: why is there a "no access level"
<leonardr> is there a no access level? let me check
<leonardr> i'm opening up the list of access levels
<leonardr> all right
<leonardr> so, we've set up authorization to the launchpad web service using the oauth standard
<leonardr> which is basically a way for the end-user to delegate a certain amount of authority to a program
<leonardr> the problem is that although you trust your web browser enough to type in your launchpad password
<leonardr> you probably don't extend that same level of trust to other programs, like IDEs or "portal" websites that promise to show you a dashboard of your launchpad activity
<leonardr> you shouldn't trust those sites with your launchpad password
<leonardr> oauth is a way to delegate a certain amount of power to those sites, without giving them your password
<leonardr> in that context, the access levels are the different amounts you can trust a particular site or application
<leonardr> if a site promises to make a dashboard for you, then you can give the site read-only access to your data
<leonardr> it has no business modifying your data
<leonardr> similarly, you can authorize an application to only access public data on your behalf
<leonardr> as for the 'no access' level, flacoste said in classroom-chat:
<leonardr> <flacoste> thekorn: say a rogue application try to ask for a token, the user can click on no access level to dismiss the request
<leonardr> it's a 'cancel' button
<leonardr> hopefully that provides at least some enlightenment
<leonardr> <maxb> QUESTION: Will it become possible to use launchpadlib without needing to login, if all you want is read-only programmatic access to public data?
<leonardr> our initial decision was to prohibit this altogether. we're now reconsidering but we haven't made a decision one way or the other yet
<leonardr> <ia> QUESTION: could you just name, please, a few apps, which uses LP API?
<leonardr> i think thekorn could name more than i can
<leonardr> i'm also bad with names
<thekorn> there are some tools switching from screenscraping to lplib,
<leonardr> <flacoste> the is a bzr plugin for eclipse
<thekorn> like ubuntu-dev-tools
<leonardr> also, for every publicly available tool there are several private scripts
<leonardr> people write everyday scripts to get around whatever annoys them about launchpad or to do batch operations
<leonardr> <maxb> QUESTION: Rationale for prohibiting launchpadlib access to data which can be screen-scraped without auth would be interesting?
<leonardr> there's a general worry about access to the web service getting out of control
<leonardr> we have various ways to throttle usage for different scenarios, and one of the scenarios is when one person is using too many resources, whether by accident, due to a bug, or maliciously
<leonardr> in that case we'd throttle all access by that person
<leonardr> like i said, we're reconsidering it
<leonardr> <istaz_> QUESTION: Is there a way to ask for change to be Pushed to you  instead of having to poll?
<leonardr> no, not really
<leonardr> are you thinking something like email?
<leonardr> in general the web works on polling, even if you're just polling a summary of what's changed
<leonardr> <istaz_> leonardr: yes
<leonardr> no, there's no email or other kind of push architecture
<leonardr> if you're worried about bandwidth usage, there are standard http techniques like conditional get that we use and plan to use more of
<leonardr> launchpadlib automatically uses them
<leonardr> xmpp is an interesting possibility but i don't think you should expect it anytime soon
<leonardr> any other questions?
<leonardr> <thekorn> Question: is there any work on a javascript implementation of the API, like launchpadlib for python
<leonardr> yes, there is, actually
<leonardr> because as i said, we are going to be using the web service to add ajax ui elements to launchpad
<leonardr> you can actually see it now
<leonardr> https://launchpad.net/+icing/rev7479/launchpad-ajax.js
<leonardr> but right now it only works on pages on launchpad itself
<leonardr> this is partly because of the design and partly because of the 'same-origin policy' that makes it difficult to have a page on foo.com that makes an XMLHTTPRequest to bar.com
<leonardr> it's not a huge priority for us but eventually the javascript library should be usable outside of launchpad
<leonardr> however, note that it's very different from launchpadlib
<leonardr> because it doesn't have access to the wadl file, you have to know a lot more about the url structure and what the web service looks like on the http level
<leonardr> anything else?
<leonardr> ok, i'll stick around until the next presentation in case there are any more questions
<leonardr> <creek23> QUESTION: Can we extract XML for Flash display?
<leonardr> the web service serves JSON, not xml
<leonardr> it's also pretty likely that a flash application will run afoul of the same-domain policy, just like a javascript application
<leonardr> if you can get around the same-domain policy somehow, there's got to be a json parser written in flash
<leonardr> but that's not a case we're really thinking about
<redclover> date -u
<kees> I'll go ahead and get started.  As usual, please ask questions at any time in the -chat room, and we'll answer them as we see them.  :)
<kees> welcome everyone!  I'm Kees Cook, and I'm the technical lead of the Ubuntu Security Team (and employed by Canonical).
<kees> this is going to be a quick intro to how the Security Team operates within Ubuntu, and how people can help create high-quality updates.
<kees> I'm joined by Jamie Strandboge and Marc Deslauriers, who will be helping with the presentation.
<kees> the main wiki page for information about the team is here: https://wiki.ubuntu.com/SecurityTeam
<kees> our page is still a bit young, so pardon the lack of details in the FAQ and KnowledgeBase areas.
<kees> we might be able to populate some of the FAQ with today's classroom's questions.  :)
<jdstrand> \o/
<kees> the most active subteams within the Security Team are "ubuntu-security" and "motu-swat"
<kees> 19:03 < ScottK> QUESTION: Since Marc is new(ish) perhaps he could introduce himself ...
<mdeslaur> yes, I guess I could :)
<mdeslaur> I'm from Quebec City, Canada, and have been a Canonical employee since the beginning of November
<mdeslaur> I used to be a security and open source consultant for various companies
<mdeslaur> And used to build security updates for the defunct Fedora Legacy project
<kees> we're glad to have him as part of the team.  :)
<mdeslaur> uhmm...that's about it I guess, feel free to ask me any question you may have
<jdstrand> *very* glad :)
<kees> so, when there are security updates that need to happen, "ubuntu-security" and "motu-swat" are the ones handling it usually, though we have many additional contributors.
<kees> in general, our "update procedure" is here: https://wiki.ubuntu.com/SecurityUpdateProcedures
<kees> we focus on fixing "CVE"s in published ubuntu releases
<kees> (CVE stands for Common Vulnerabilities and Exposures)
<kees> a CVE is basically a number identifying a flaw in software that has security implications
<kees> the central collection of CVEs here: http://cve.mitre.org/
<kees> some of the URLs for more information that I'm listing here can also be found in our KnowledgeBase: https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase
<kees> since CVEs are global identifiers, they cover software (and hardware) from any vendor in the world -- only some CVEs apply to Ubuntu software.
<kees> the first step to fixing security problems in Ubuntu is keeping up to date with new CVEs, and checking to see in Ubuntu is affected.
<kees> 19:08 < bullgard4> QUESTION: What does 'swat' stand for in  "motu-swat"?
<kees> 'swat' is in reference to "Special Weapons and Tactics", a specialize police force
<kees> http://en.wikipedia.org/wiki/SWAT
<jdstrand> I like to think of them as swat'ing security bugs
<kees> that works too :)
<kees> to help coordinate between teams and people, we have an ubuntu-specific reponsitory for tracking CVEs: https://code.launchpad.net/~ubuntu-security/ubuntu-cve-tracker/master
<kees> this is a bzr branch, with details about every CVE that has been issued.
<kees> Once you have a local branch of ubuntu-cve-tracker, the first thing to do is read, surprisingly, the README file.  :)
<kees> most of the CVEs are flagged "ignore" since they apply to unpackaged software, different vendors like Apple or Microsoft, etc.
<kees> since not everyone is interested in digging into a bzr repo just to see how things look, it is also published: http://people.ubuntu.com/~ubuntu-security/cve/main.html
<kees> and universe: http://people.ubuntu.com/~ubuntu-security/cve/universe.html
<kees> and for individual CVEs, those can be examined too, e.g. http://people.ubuntu.com/~ubuntu-security/cve/CVE-2008-2327
<ubot5> kees: Multiple buffer underflows in the (1) LZWDecode, (2) LZWDecodeCompat, and (3) LZWDecodeVector functions in tif_lzw.c in the LZW decoder in LibTIFF 3.8.2 and earlier allow context-dependent attackers to execute arbitrary code via a crafted TIFF file, related to improper handling of the CODE_CLEAR code. (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2327)
<kees> (thanks ubot5)
<kees> once CVEs have been identified, the team will prioritize them, and start either tracking down patches or making our own.
<kees> some CVEs are initially private, while upstream (and the vendors) try to figure out solutions.  This is called an "embargoed" issue.
<kees> the ubuntu tracker only shows public CVEs, since none of the vendors are allowed to discuss embargoed issues until they reach their "coordinated release date"
<kees> once the teams gets a patch to fix a problem, they test them, and finally publish the fixes.
<kees> (I'll be coming back to this in a moment...)
<kees> presently, security updates for main/restricted packages (mostly handled by "ubuntu-security") get "Ubuntu Security Notices" (USNs) published: http://www.ubuntu.com/usn/
<kees> there is a mailing list for this as well: http://lists.ubuntu.com/archives/ubuntu-security-announce/
<kees> the Universe Security Team ("motu-swat") handles updates for universe and multiverse.
<kees> besides the two teams handling security updates, we also have a team dedicated to providing better security globally to Ubuntu.  this is the "ubuntu-hardened" team.
<kees> It started very SELinux-centric, but has grown to include people interested in AppArmor and other hardening techniques.
<kees> we also have a "white hat" team ("ubuntu-whitehat") that is dedicated to hunting down new security issues.  it is still young and has plenty of room for growth.
<kees> since all of the teams are rather small, we still use a single IRC channel (#ubuntu-hardened) and a single mailing list (ubuntu-hardened)
<kees> switching back to update process, once we've tracked down an issue and a fix, we have to test it.  for details on this process, I'll turn it over to jdstrand!
<jdstrand> that's my cue
<jdstrand> Hi! I'm Jamie Strandboge. I am a member of the Ubuntu Security Team and a Canonical employee.
<jdstrand> As many of us know, it is estimated that Ubuntu has 10 million installations world-wide, with only several thousand running the latest development release (10,000 IIRC).
<jdstrand> Users of released versions of Ubuntu expect and deserve a stable system with as few regressions as possible. As such, ensuring high quality updates to released versions of Ubuntu is of utmost importance.
<jdstrand> Hopefully this part of the session will help people to understand the processes, information and tools available to help create high-quality updates.
<jdstrand> Before an update to an Ubuntu release can be made, typically a patch must be created and submitted to Launchpad for review.
<jdstrand> https://wiki.ubuntu.com/StableReleaseUpdates discusses when and how a bug fix can be incorporated into a released version of Ubuntu, while https://wiki.ubuntu.com/SecurityUpdateProcedures discusses the process of fixing security bugs.
<jdstrand> In general, whether the update is a stable release update (SRU) or security update, the updated package should follow the process described in https://wiki.ubuntu.com/SecurityUpdateProcedures#Preparing%20an%20update.
<jdstrand> Most importantly:
<jdstrand> 1. Make the minimum changes necessary to fix the bug
<jdstrand> 2. Prefer packaging the changes as proper patches (ie, when there is a patch system (eg, cdbs, dpatch, quilt, et al), use it. When the patch system supports it, follow https://wiki.ubuntu.com/UbuntuDevelopment/PatchTaggingGuidelines)
<jdstrand> 3. Properly test that the package builds and still works (see qa-regression-testing, discussed later)
<jdstrand> 4. Make sure the changelog has the proper formatting. This includes the proper version, distribution, bug references, patch origin, and CVE. All of this information is needed for review and so it is clear to anyone who looks at the changelog what changed.
<jdstrand> (the CVE is needed only if it's a security update, of course)
<jdstrand> 5. If Debian is still affected, send the patch to them by following https://wiki.ubuntu.com/Debian/Bugs. We need to always give back to Debian, because it is the right thing to do and because it helps Ubuntu in the next development cycle.
<jdstrand> When submitting patches, please read through and follow this section of SecurityUpdateProcedures in its entirety, as the above only touched on the most important points.
<jdstrand> When performing a security update or SRU, it is of utmost importance to make sure that the update does not introduce any regressions and verify that the package works as intended after an update.
<jdstrand> While we are all human and some regressions are inevitable, we can go a long way towards ensuring that we do everything possible to be reasonably sure the update works as intended.
<jdstrand> This is where the QA Regression Testing bzr branch (https://code.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/master) can help.
<jdstrand> qa-regression-testing was started by Martin Pitt (pitti), and continued by me, kees, mdeslaur and others.
<jdstrand> qa-regression-testing is used extensively by the Ubuntu Security team, as well as the Ubuntu QA Team, Ubuntu Server Team and others. It is also used in the SRU (Stable Release Update) process and when testing Apparmor profiles.
<jdstrand> The bzr branch contains a lot of information to help with an update.
<jdstrand> I highly recommend reading README.testing, which talks about things to look out for in an update, best practices, checklists and more.
<jdstrand> For example, README.testing discusses checking the differences between builds, exercising patched code, running build tests, checking for ABI changes, and more.
<jdstrand> It also lists various software that can be helpful in debugging, analysis, auditing, and ensuring package QA (among other things).
<jdstrand> Finally, it contains a checklist that can be invaluable in making sure that you done/checked various tasks.
<jdstrand> build_testing/ and notes_testing/ have notes and instructions on how to enable build testing, use testing frameworks for a particular application and any other notes pertinent to testing. For example, build_testing/apache2 has notes on using the Perl-Framework from http://httpd.apache.org/test/.
<jdstrand> The scripts/ directory contains scripts for testing various programs. As of today, there are 58 test scripts.
<jdstrand> The main idea behind these scripts is not build/compile testing, but rather application testing for default and non-default configurations of packages.
<jdstrand> For example, the test-openldap.py script will test slapd for various configurations like ldap://, ldapi://, ldaps://, sasl, overlays, different backends and even kerberos integration.
<jdstrand> test-openoffice.org.py opens various files that openoffice.org supports to make sure they still work.
<jdstrand> *IMPORTANT* the scripts in the scripts/ directory are often destructive, and should NOT typically be run on a production machine. We typically run these in a virtual machine, but often a chroot is sufficient.
<jdstrand> Most of the scripts use python-unit. At the top of each script are instructions for how to use it, caveats, etc. There is also a skeleton.py script along with libraries (testlib*.py) that can be used when developing new scripts.
<jdstrand> While python-unit doesn't perfectly lend itself to GUI testing, it may be able to be used to automate some aspects of the testing of certain files, such as test-openoffice.org.py and test-xine.py.
<jdstrand> Work is being done to help automate GUI functionality, and can be seen in https://wiki.ubuntu.com/Testing/Automation and later this week in the 'Automated Desktop Testing' session.
<jdstrand> The scripts in qa-regression-testing typically are written when there is a new security update, and specifically tests the functionality that pertained to a given patch.
<jdstrand> As such, the scripts are in varying states of completeness, and any help in creating and extending these is most welcome. :)
<jdstrand> Help is also welcome in any of the q-r-t parts-- eg build_testing/ information for applications not listed
<jdstrand> By following the checklists, best practices, developing new scripts and using existing scripts for qa-regression-testing, we all can go a long way in helping to ensure as few regressions as possible.
 * kees <3 q-r-t
 * jdstrand hands it back over to kees
<kees> the work in q-r-t is very important, so if anyone wants to help with updates, that's by far one of the best places to focus on.
<jdstrand> it also is not hard to get started, and often a fun/small coding project
<kees> I did a quick overview of the various other areas of the security team.  are there any specific questions or areas that people would like to hear more about?
<jdstrand> Something I didn't mention while discussing testing
<jdstrand> as we all know, Ubuntu is split up into different releases, such as dapper, gutsy, hardy, intrepid, and jaunty
<jdstrand> in the changelog, after the version, there is a 'distribution' field
<jdstrand> for the development release (eg 'jaunty'), the distribution field is simply the release name
<jdstrand> for security updates, you should append -security to the release name, eg hardy-security
<jdstrand> for SRUs, you should append -proposed (updates are tested in -proposed first)
<jdstrand> many people know about all that, however, what is less widely known is how security updates and SRUs end up getting built
<jdstrand> when testing an update destined for -security (eg, hardy-security), keep in mind that security updates are *only* built with the release pocket and the security pocket enabled
<jdstrand> specifically, -updates and -proposed are not in sources.list when a -security update is being built
<jdstrand> this is important to note when testing, because sometimes subtle (and not so subtle) bugs can creep in when you test your package with -updates enabled, but upload to -security
<jdstrand> which doesn't have -updates enabled (they are essentially different packages)
<jdstrand> another thing to keep in mind, is what components a package is built with
<jdstrand> the components are main, restricted, universe and multiverse
<jdstrand> a package destined for main is only built with the main component
<jdstrand> restricted is built with only main and restricted
<jdstrand> universe is built with main and universe
<jdstrand> multiverse is built with main, restricted, universe and multiverse
<jdstrand> why is this important? sometimes debian/control has a Build-Depends like (foo | bar)
<jdstrand> if foo is in universe and bar is in main, a package destined for main will be built with bar, but if the universe component was in sources.list during your testing, you might have tested with the package built against foo
<jdstrand> QUESTION: How do backports and security updates fit in with each other?  Do we patch the original released or the backported version?
<jdstrand> good question
<jdstrand> -backports is a different pocket entirely, and does not receive official support from the Security Team, and often doesn't receive backported fixes from motu-swat
<jdstrand> updated packages that fix a CVE will pull from -updates though
<jdstrand> so the source will come from -updates, but will be built against only -security (and release)
<jdstrand> it is general policy to backport fixes to the packages that exist at release time, rather than doing an upload of a new version
<jdstrand> for example, if package foo is at version 1.2.3, and upstream releases version 1.2.4 (that has a CVE fix), we will backport the security fix in 1.2.4 to 1.2.3, rather than upgrading foo to 1.2.4
<jdstrand> there are exceptions though-- firefox, postgresql and clamav are some of them
<jdstrand> QUESTION: What is "the release pocket and the security pocket"?
<jdstrand> the release pocket is simply the release name, eg "jaunty"
<jdstrand> after a version of Ubuntu is official, then the release pocket is frozen, and updates must go to other pockets (these can be seen in your /etc/apt/sources.list file)
<jdstrand> so, "hardy" is the release pocket for hardy, "hardy-security" gets security only fixes, and "hardy-updates" gets bug fixes (and security fixes are copied into it)
<jdstrand> "hardy-proposed" is the pocket people upload to when they want a bug fix ultimately destined for "hardy-updates"
<jdstrand> QUESTION: You are doing your best to create high-quality updates. Where is laid down what an Ubuntu user should do to have a very secure Ubuntu computer and network?
<jdstrand> Ubuntu by default is installed with no open ports
<jdstrand> as long as you keep your system up to date, the typical Ubuntu user will have a secure system
<jdstrand> once you start adding services to it, like a web server, Ubuntu can keep the package up to date, but misconfiguration can always be a problem
<jdstrand> there are various tools such as apparmor and ufw that can help lock down services and network capabilities, but this is really a question that can't be sufficiently answered in this session
<jdstrand> QUESTION: If -security is built without -updates, what happens  when you need to prepare a security update to a package which has  an update already published in -updates?
<jdstrand> we pull the version in upddates, patch the security fix in it, and change the version such that it is higher than in -updates
<jdstrand> we are about out of time. are there any more questions?
<jdstrand> Ok. thanks to kees and to everyone who attended. Please feel free to jump in with patches for security, SRUs or testing scripts :)
<jdstrand> happy hacking!
<ickis> nice talk
<ickis> thanks!
<jdstrand> thanks you :)
 * pitti args
<pitti> I just did something *incredibly* stupid
<pitti> I deleted my talk!
<bullgard4> jdstrand, kees: Thank you for a most interesting class!
<pitti> I'm terribly sorry, I'm afraid I have to cancel this and move it to a later place
<jdstrand> bullgard4: :)
<ickis> ups
<bekks> pitti: may i take you into a short query regarding talks at general?
<pitti> anyone knows how to undelete on ext3?
<pitti> bekks: let me try to rescue this file
<bullgard4> pitti: Oh, no. Start it now without your document.
<pitti> sorry, it's a bit too complicated to do it from scratch
<Delkia> god luck pitti !
<bekks> pitti: on ext3, there is not a fair chance to undelete, cause inode entries are overwritten with zero.
<bekks> I'm sorry for those bad news.
<walthari> good evening to everybody
 * pitti looks in .viminfo
<pitti> apparently not
<pitti> and my backup didn't catch it yet
<stefanlsd> pitti: maybe the grep idea   http://www.linuxforums.org/forum/linux-security/13416-ext3-filesystem-can-undelete-work.html
<Ape3000> pitti: You should use trash, so that you can recover accidentally deleted files from there
<pitti> yeah, I will next time
<pitti> argh, this has cost me 3 hours to write
<mnemo> ubuntu should have a "delete to trash" version of "rm" :(
<Ape3000> And don't automatically empty the trash. Wait for at least an hour before emptying the trash. You might still want to get that file back.
<mneptok> ext2 just marks these blocks as unused in the block bitmaps and marks the inode as "deleted" and leaves the block pointers alone.
<bekks> mnemo: you could do that with an alias
<mneptok> gah
<istaz_> mneptok: take a look at http://pages.stern.nyu.edu/~marriaga/software/libtrash/
<istaz_> s/ mneptok / mnemo /
<Ape3000> You could use: alias rm='rm -i'
<mneptok> istaz_: not much help now, though
<istaz_> it a lib you preload and remove all call to rm and replace them to mv .trash
<istaz_> mneptok: no but for the future
<Ape3000> pitti: Can we still have the session with debugging?
<mnemo> or will you re-write the notes for tomorrow maybe?
<pitti> I'll have it later in the week
<pitti> 4112384 inodes scanned, 0 deleted files found
<pitti> :(
<pitti> seems I'll rewrite it from scratch then
<theseas> bye everyone!!!
<mnemo> javaJake has some idea about grepping the HDD image
<pitti> I'm sorry everyone
<javaJake> That came from stefanlsd's link
<jpds> pitti: That's a shame, I personally use something like: http://paste.ubuntu.com/107438/ which make a copy of the doc on save.
<pochu> pitti: don't worry. I'll be here when/if you can do it, as long as it's not the day before an exam :)
<pochu> pitti: I guess, no mydocument~ (like gedit does by default for backups)?
<Ape3000> So you pressed some keys that did "delete all text" on vim?
<pitti> pochu: no, .vim removes the swap file after you exit
<xnox> use bzr next time you write it and commit after every pragraph =)
<gh1234> date -u
<evolu_> date -u
<evolu_> 'date -u'
<mneptok> thanks, but i'm taken
<istaz_> what is the date -u things everybody write?
<istaz_> date -
<istaz_> date -u
<jpds> istaz_: Type it into the console.
<holloway> istaz_: put it in your terminal
<istaz_> yes it give the date but why is everybody typing it on the chan?
<jpds> istaz_: Cos they read the topic and just type it...
<istaz_> oh
#ubuntu-classroom 2009-01-21
<udssr_shorty> date -u
<Johane> Hello everybody
<somaunn> hello johane
<MarkoKaa> Hi guys
<Johane> You are Ubuntu developers?
<somaunn> johane: No
<Johane> Ok
<somaunn> Johane: just someone who's trying to be more integrated in ubuntu & linux life cycle
<Johane> Good job and keep up the good work
<Johane> I'm using ubuntu too
<Johane> I'm helping myself with bits and tights
<somaunn> johane: good thing, i encourage you
<Johane> somaunn:Thankyou
<Johane> I'm also learning programing
<somaunn> johane: programming ? good thing to do with linux
<somaunn> johane: i'm watching a video concerning notifications in jaunty (Ubuntu 9.04)
<somaunn> johane: telling you that thing is crazy
<somaunn> johane: i mean hot and different than what i've seen in linux before
<Johane> Can you give me the link?
<somaunn> johane: http://www.markshuttleworth.com/wp-content/uploads/2008/12/jaunty904_notifications_example1_web_092.swf
<Johane> Holy got :Looks very nice
<kentc> More info on notifications: http://www.markshuttleworth.com/archives/253
<Johane> Y can't wait for it tobe released
<Johane> Vista and WinShit 7 are babies next to the upcomming Ubuntu
<somaunn> johane: :D right
<somaunn> if someone have links containing the same video please don't hesitate
<somaunn> to send it
<Johane> somaunn:Where you from?
<somaunn> johane: from congo, but actually in south africa
<Johane> somaun: Is it hot there?
<somaunn> johane: yeah, i mean sometimes
<somaunn> johane: but it's a nice place
<Johane> Where i live i have only 5*C maximin
<Johane> *Maximim
<Johane> Is winter here in Romania
<Johane> You heard of Romania?
<somaunn> johane: yeah
<somaunn> johane: was there long time ago for studies
<Johane> Wow-Can you remember the city?
<Johane> And what studies you made there?
<somaunn> johane: it wasn't me, but my father
<somaunn> johane: and he was in sovata if remenber
<Neithan__> hola, hay alguien por aqui?
<Neithan__> ...
<munkhu> hi all!
<somaunn> hello guys ...
<somaunn> get a question right here
<somaunn> can someone help me ?
<jrib> somaunn: #ubuntu for help with ubuntu
<Zsolt88> hey
<fondjo> hey
<fondjo> how are you doing today?
<Arc> hey seb128
<seb128> hi Arc
<Ape3000> Hi everyone
<dholbach> HELLO EVERYBODY!
<dholbach> WELCOME TO DAY 3 OF UBUNTU DEVELOPER WEEK!
<Arc> morning dholbach!
<dholbach> ... also known as the Week of Awesome!
<dholbach> How are you all doing?
<dholbach> Who's excited for another day of UDW?
<Arc> groggy with green tea in hand :-P
<Ape3000> Me, me
<Arc> but ready :-)
<DasEi>  /brewing a coffe
<dholbach> who else? don't be shy :)
<dholbach> Ok... there's a bunch of names I spotted in here that look familiar, for everybody who's new:
<cool2k> Me, yeah!!!!!
<dholbach> please... don't be shy! If you have questions, please ask!
<dholbach> but please.... ask in #ubuntu-classroom-chat and prefix them with QUESTION:
 * directhex is excited for day 4. day 4 is more awesome
<dholbach> ie: QUESTION: seb128: are you really German?
<seb128> lol
<seb128> no
<seb128> ;-)
<seb128> and I'm not from Alsace
 * dholbach hugs seb128
 * seb128 hugs dholbach
 * dholbach hugs seb128 back
<dholbach> we still have 3 minutes left until seb128 takes over, so grab a coffee, tea or any other drink and enjoy it
<dholbach> Sebastien Bacher will talk about a topic he's very familiar with: Pushing out GNOME releases to millions of users
<dholbach> ROCK ON! :)
<Ape3000> Still 30 seconds..
<DasEi> no join in ï»¿#ubuntu-classroom-chat  ??
<seb128> ok, good ;-)
<seb128> good morning, afternoon, evening to everybody!
<seb128> I'll do a presentation of what the ubuntu desktop team is doing first
<seb128> and then we can do questions-answers
<seb128> so
<seb128> The Ubuntu Desktop Team is the team working on most of the Ubuntu GNOME desktop applications.
<seb128> The team is a mix of people working full time for canonical and rocking contributors
<seb128> we have some contributors around I see ;-)
<seb128> hey crevette, pochu (and probably others) ;-)
<seb128> * Where we are
<seb128> - #ubuntu-desktop on irc.ubuntu.com
<seb128> - ubuntu-desktop@lists.ubuntu.com
<seb128> - launchpad: desktop-bugs and ubuntu-desktop teams
<seb128> * What we do
<seb128> - work on the desktop packages, the rough list is on https://launchpad.net/~desktop-bugs/+packagebugs
<seb128> - update the desktop packages when new versions are available
<seb128> - work on the corresponding bugs lists, triage the bugs and work with upstream to get those resolved
<seb128> * How we work:
<seb128> - most of the packages are coming from the debian pkg-gnome team
<seb128> - we try to keep those packages in sync as much as possible and send their our changes to them
<seb128> - we do package unstable version earlier and carry ubuntu specific changes though
<seb128> - the packaging is mostly done using cdbs
<seb128> - we mostly updates packages when GNOME roll new tarballs and backport upstream fixes
<seb128>  
<seb128> * How we do updates:
<seb128> - we current have somebody looking at the new upstream tarballs and noting what upgrade we need to do in ubuntu
<seb128> - tasks are usually splitted on IRC (ie, upgrade are assigned to people there)
<seb128> - people are free to claim tarballs they want to work on
<seb128> - contributors use bugs on launchpad to get their work reviewed
<seb128> usually it's easy to get review since the team is quite active
<seb128> and you often find people to help on IRC
<seb128>  
<seb128> the current workflow has some limitation and we will try to improve it
<seb128> some packages are moving to bzr for the packaging work and we will probably try to standardize that
<seb128> didrocks started some documentation on the topic and you can find details on the ubuntu desktop wiki: https://wiki.ubuntu.com/DesktopTeam
<seb128> we also want a system which allow to set a todolist and let people claim work directly there rather than using IRC
<seb128> some people started to work on a website listing all the versions available in ubuntu, debian and upstream for the team packages
<seb128> we will probably try to continue this way and have a website which allow people to claim work they are doing
<seb128> on a technical side upgrades are usually standard version updates
<seb128> some are easy enough for beginner so if you want to get started that's no issue
<seb128> some other are tricker (soname changes, change to build system, new binaries added)
<seb128> the things we usually check for updates
<seb128> - the configure requirement and if they changed
<seb128> if they changed the (build-)depends need to be updated to reflect that
<seb128> - that the update builds and work correctly
<seb128> - the bugs closed in the upgrade
<seb128> library are also checked for abi changes (in which case the soname should be updated if the new abi is not compatible, or the shlibs updated if there is new functions but the abi is still compatible)
<seb128>  
<seb128> ok
<seb128> that was it for the summary of what the team is doing on how
<seb128> we also discuss desktop changes, new components to install by default or not, configuration changes, etc
<seb128>  
<seb128> we can do questions and answers now ;-)
<DasEi> can't join #ubuntu-classroom-chat
<seb128> why?
<DasEi> good question
<pochu> QUESTION: Off-topic: Can someone work remotely for Canonical?
<pochu> DasEi: /msg me and I'll try to help you
<seb128> pochu: can you write the nickname of whoever asked too maybe?
<pochu> sure, sorry
<pochu> creek23> QUESTION: Off-topic: Can someone work remotely for Canonical? :-/
<seb128> creek23: most of the people working on Ubuntu for canonical are working remotely
<seb128> so yes it's possible
<seb128> the job offers are on the website and that's specified in the descriptions
<seb128>  
<seb128> next
<pochu> fta> QUESTION: seb128: you said "somebody looking at the new upstream tarballs", d'oh! manually? how often? why somebody and not some script?
<seb128> fta: GNOME has a mailing list which gets mails about all the tarballs uploaded so that's easy to keep track ... why not a script because nobody wrote one yet ... interested? ;-)
<fta> probably
<seb128> in fact somebody started working on a website listing ubuntu, debian and upstream version as said before
<seb128> would be good to continue this work
<DasEi> QUESTION:seb128:  I'm not ready for doing development, but could help translating to german, where to go ?
<seb128> that would show what is to update
<pochu> DasEi: please write questions in #ubuntu-classroom-chat
<seb128> DasEi: questions on #ubuntu-classroom-chat
<seb128> pochu: NEXT
<pochu> directhex> QUESTION: how often does the desktop team reassess which app is used to accomplish a given task (e.g. pidgin vs empathy), and what are the criteria for a change?
<fta> seb128, ok (a pointer would be nice). Thanks
<seb128> fta: there is a discussion about it on the ubuntu-desktop@lists.ubuntu.com started some months ago if you want to check the archives
<seb128> directhex: good question, that's not a periodic tasks, we do look at suggestions though so that's whenever somebody do one
<seb128> you can do a suggestion on the mailing list or during the weekly meetings
<seb128> the team has weekly IRC meeting on #ubuntu-desktop, they are at 16:30utc on tuesday
<seb128> pochu: NEXT
<pochu> hggdh> QUESTION: we are based on Debian. But every so often a Debian package is found to be older than a new requirement. What is the procedure?
<pochu> fta: btw, the page is this: http://norsetto.890m.com/desktop_packages.php
<seb128> hggdh: we try to get work done there so we don't block on Debian
<seb128> pinging the debian maintainer before starting on an update can be a good idea
<seb128> usually we don't block on a reply as said though
<seb128> sending the debdiff back to the debian pts is good practice too
<seb128> or at least a bug there request for the update and pointing to the ubuntu work
<seb128> if they do the update and we can sync we lower the ubuntu-debian delta which means less work for everybody
<seb128> pochu: NEXT
<pochu> Arc> QUESTION: whats the future for the default XMPP client look like?
<seb128> this cycle is focussed on stabilization since we have quite some users annoying but how much rewrittes or GNOME changes have been breaking in previous cycle so we will not likely change that, it should still be pidgin
<seb128> we will probably look again at empathy next cycle
<seb128> pochu: NEXT
<pochu> DasEi> ï»¿QUESTION:seb128:  I'm not ready for doing development, but could help translating to german, where to go ?
<seb128> (urg should read what I type
<seb128> annoying but how -> annoyed by how
<seb128> yes, I suggest contacting the german translation team for that though
<seb128> ubuntu-l10n-de on launchpad, they probably have a mailing list too
<seb128> translations are made on launchpad or directly upstream, check with your locale team to know the details
<seb128> pochu: NEXT
<pochu> creek23> QUESTION: Who makes the Ubuntu theme? Wallpaper? etc?
<seb128> the ubuntu artwork team
<seb128> they have their own channel and I don't know how they decide on changes exactly
<seb128> pochu: NEXT
<pochu> I think we are running out of questions
<pochu> creek23> QUESTION: Lots of opening from China, Taiwan? Why no Philippines?
<pochu> (relating to job offers)
<seb128> pochu: yeah, replying to those on the other channel ;-)
<pochu> fta> QUESTION: what about daily builds, or builds for each commit (i refer to the last UDS opening from Mark)
<fta> (i meant "each upstream commit")
<seb128> fta: that's out of the scope of the current #ubuntu-desktop ressources to do that I think but it's possible that some other team is wanting to put ressources on that, I don't know about it though, that's being discussed for some years but nobody got to do it yet
<fta> fair enough :)
<seb128> that would be a good thing, a bit tricky to get right though
<pochu> creek23> QUESTION: Why is "Windows key" (from the keyboard) not supported as it does in KDE?
<seb128> creek23: that's a bug, what you expect to do? open the menu? or use it in shortcut
<seb128> there is a gnome-control-center about it not working in shortcuts
<seb128> +bug
<seb128> NEXT
<pochu> pochu> QUESTION: there has been a opening position for a desktop developer in terms of packaging for some time. Did you find anyone yet?
<seb128> pochu: it would not still be open if we did ;-)
<creek23> (hmm, so it is a bug.)
<seb128> we are still interviewing candidates
<pochu> if you keep it open for a few more time, I may apply :)
<seb128> we didn't had some many matches for the job until now and some of those who were good decided to take a job somewhere else
<pochu> thanks
<pochu> Arc> QUESTION: is there any specific programming tasks open that would help gnome integration with Ubuntu?
<seb128> pochu: you have the good profile so feel free to apply when you are done with universtity ;-)
<pochu> :)
<seb128> hum, good question
<seb128> what sort of integration you are looking at exactly?
<seb128> the next canonical dx team is going to work in those area
<seb128> otherwise they is a lot of open bugs and request on launchpad
<seb128> there is no specific list though
<seb128> NEXT
<pochu> creek23> QUESTION: How many exactly are the developers in the Desktop Team?
<seb128> hum, good question
<seb128> the ubuntu desktop team has probably around 7-8 regular contributors
<seb128> and around the same number of people hanging around and doing some work every now and then
<creek23> whoah! just 8?!?... o_O
<seb128> so let's 7-8 people doing active work (some of them being full time canonical employees) and double the number if you count people helping on bug triage, etc
<seb128> bug triage being active work too ;-)
<seb128> NEXT
<pochu> pochu> QUESTION: regarding the move to bzr for packaging, one of my reservations is that there will be a branch per package instead of one repository for all the desktop packages (as with pkg-gnome). Do you think this will be an advantage or a drawback?
<seb128> that's something we already discussed, I don't think that makes a real different
<seb128> there is some wrappers around to bzr get everything for a team
<seb128> which would give you a full checkout
<seb128> and that let you the option to just get and work on one component
<pochu> ah, makes sense
<seb128> NEXT
<pochu> creek23> QUESTION: Ubuntu Netbook Remix out, is there a chance for Ubuntu Mobile Remix with GNOME in it?
<seb128> I don't know enough about remix to reply to that I think
<seb128> they do use GNOME applications now?
<seb128> the purpose of the remix edition is that GNOME doesn't really fit on those screen
<seb128> you need different interfaces on different devices
<creek23> oh, I thought GNOME was used in it.
<pochu> I think they modified some apps (e.g. liferea) for them
<seb128> ie, the user experience is different on a notebook or tablet than on a desktop
<directhex> the netbook remix uses gnome, albeit with some hacks here & there to fill more of the screen. mobile ed is something else
<seb128> not the same input device, screen space, etc
<seb128> NEXT?
<pochu> SUGGESTION: it would attract more programmers to help with Ubuntu desktop if there was a "wishlist" for applets or specific added features, vs mixing them with "bugs"
<pochu> (not really a question (: )
<seb128> that's a good remark though
<seb128> the wiki has a todo and we try to tag some bugs
<seb128> we could do a better job to make lists, it's not easy to classify by tasks and how easy they are though
<seb128> NEXT
<pochu> looks like there are no more questions
<seb128> the todolist thing
<seb128> you can send emails to the list if you have suggestions
<seb128> or look at specs for the current cycle
<seb128> those are usually tasks the team is working on
<N0xTrUm> ji
<N0xTrUm> hi*
<seb128> no other question?
<seb128> let me summarize what we need help on maybe then ;-)
<seb128> - doing regular desktop updates and package new components
<seb128> - triage bugs, send those upstream when they are upstream issue and get them resolved
<dholbach> <creek23> what does he mean by "triage"?
<seb128> - organize the workflow: documentation, create activity on the mailing list to encourage people to join, switch to bzr, tools to automate verifications done on every updates for example, work on the website to summarize work to get done, etc
<seb128> ah
<seb128> ok, so we push software to users, ie you
<seb128> the users happily update to new version and notice that things stopped working the way they did
<seb128> or they have request to had a feature
<seb128> they open bugs on launchpad
<seb128> our work is to review those bugs to decide on what is important to fix and what can wait
<seb128> we don't have the resources to work on everything
<seb128> and lot of those issues are in code ubuntu is not writing
<seb128> ie if you get a bug in gedit it's likely in the GNOME gedit code and it should be sent to bugzilla.gnome.org so the people who are writting the code know about the issue
<pochu> (there are a few questions now)
<seb128> NEXT ;-)
<pochu> ia> QUESTION: if you've heard about gnome-macmenu-panel, then could you tell, please, does gnome or ubuntu-desktop team plan include it "right-in-box", so user right after installation could  select, which type of menu he would like to use - global(one, at top panel, for all windows) or not(traditional usage, when each window has its own menu bar)
<seb128> no, first time I read about this name
<seb128> feel free to discuss it on #ubuntu-desktop or mail the ubuntu-desktop mailing list to suggest that we look at it
<seb128> next
<pochu> Ape3000> QUESTION: So how can we help in triaging in practice?
<seb128> dholbach: do you have a pointer on how to start on bug triage? ;-)
<dholbach> https://wiki.ubuntu.com/Bugs
<seb128> https://wiki.ubuntu.com/DesktopTeam/Bugs
<seb128> too
<dholbach> ... and https://wiki.ubuntu.com/Bugs/HowToTriage too
<pochu> perhaps https://wiki.ubuntu.com/Bugs/Triaging
<dholbach> :-)
<pochu> next?
<seb128> basically pick an application you use and know and look on launchpad to bugs which are not Confirmed or Triaged
<seb128> ask for details if required, etc
<seb128> #ubuntu-bugs is a good place to start
<seb128> pochu: NEXT ;-)
<pochu> DasEi> QUESTION/idea :though not hard for me to figure out, I think it'll be nice for new users to see the files (and maybe harddrives/dev's) on their desks, as they are used from other
<seb128> we decided back in warty to have a clean desktop because that's usually where people have the files they use, their background image they like to look at, etc
<seb128> there is enough way to access those drivers, the computer location, the places menu, etc
<seb128> I don't think we want to change the default setting but that's just a gconf setting to switch if you want to do that
<seb128> NEXT
<pochu> that was the last question :)
<seb128> ok, thanks everybody!
<creek23> thanks seb!
<DasEi> seb128: in ibex first even files created on desk didn't show up, is what I meant
<pochu> thanks seb128!
 * creek23 claps! :D
<rugby471> thanks!!!
<dholbach> thanks a lot seb128
<DasEi> nice
<dinxter> cheers
<porthose> applause
<enaut> thanks
<Arc> cheers
<dholbach> excellent - I hope you guys are going to help out seb128 in #ubuntu-desktop soon! :)
<dholbach> so who's here for fixing Ubuntu bugs? who's excited? :-)))
<rugby471> yeah!!
 * Flimm waves hand
<duanedesign> \0/
<dholbach> who else? :)
<rugby471> You told me on Packaging 101 to come and listen here for the answer to my question, so here I am
<Arc> sorry not at this point :-P
 * creek23 is.
<dinxter> yep, partly excited because i've got a steak though too :)
<mnemo> dholbach: do you know when pitti will run his gdb/crash session btw? the one that didnt happen yesterday?
 * charlie-tca waves
<rugby471> :-)
 * porthose waves
<dholbach> mnemo: it'll be announced broadly - no worries :)
<dholbach> ok my friends - let's talk about fixing bugs
<dholbach> it's really not difficult to be part of the revolution, to help out and make Ubuntu better
<dholbach> especially with helpful people in #ubuntu-bugs and #ubuntu-motu
<dholbach> again let me point you to https://wiki.ubuntu.com/MOTU/GettingStarted as it links to all the important stuff
<dholbach> the important skill you need to have or develop is what I like to refer to as 'detective skills'
<dholbach> it sometimes takes some searching on the web, some reading of docs, some talking to people
<dholbach> and checking out what happened in the upstream revision control system, etc. to find a fix that's ready already or find a way to develop a simple fix
<dholbach> because that's what it's all about: make Ubuntu better, be part of an awesome team :)
<dholbach> OK, enough hand-waving - let's get to work and fix a few open bugs :)
<dholbach> we have myriads of lists of open bugs, lists with CD building problems, lists of packages that don't build anymore and so on and so forth
<dholbach> a bunch of them are linked from the MOTU/GettingStarted page
<dholbach> I put some efforts into agreggating those lists in Harvest
<dholbach> http://daniel.holba.ch/harvest
<dholbach> it's a tool that pulls information about various 'opportunities' from various lists and displays them per package
<duanedesign> dholbach: how do you" check out what happened in the upstream control system?"
<dholbach> duanedesign: we'll get to that in a bit in one of the examples
<dholbach> duanedesign: can you ask the next questions in #ubuntu-classroom-chat prefixed with QUESTION: please? :)
<dholbach> I picked a few easy ones from harvest and hope we'll get through them in time
<dholbach> let's start off with empathy
<dholbach> http://daniel.holba.ch/harvest/handler.py?pkg=empathy
<dholbach> it displays opportunities from various lists - not very nice, but it does its job - if you want to help out making harvest better, let me know - the code is in Launchpad
<dholbach> let's click on the 291533 link
<dholbach> it'll take us to one of the bugs that is on the "resolved-upstream" list
<dholbach> which means: fixed upstream, broken in Ubuntu
<dholbach> you can see the bug is about intrepid, version 2.24.1 all tabs having the same name
<dholbach> now let's click on the "gnome-bugs #535042" link
<dholbach> (if I'm too quick or anything is not clear, let me know in #ubuntu-classroom-chat please)
<dholbach> so the upstream developer says on 2008-11-24 this is fixed already and that we should check if it really is
<dholbach> intrepid will still have the same version, but let's check if we have a newer version in jaunty to play with
<dholbach> click on the 'overview' link on the launchpad bug, it'll take you to https://launchpad.net/ubuntu/+source/empathy
<dholbach> jaunty has 2.25.4-1ubuntu1
<dholbach> and if you check ftp://ftp.gnome.org/pub/GNOME/sources/empathy/2.25/ (where new GNOME releases end up at), you'll see that 2.25.4 was released at 06.01.2009
<dholbach> which is way after 2008-11-24
<dholbach> this means: the bug can theoretically be closed in Ubuntu
<dholbach> what's important now?
<dholbach>  _____ _____ ____ _____ ___ _   _  ____ _
<dholbach> |_   _| ____/ ___|_   _|_ _| \ | |/ ___| |
<dholbach>   | | |  _| \___ \ | |  | ||  \| | |  _| |
<dholbach>   | | | |___ ___) || |  | || |\  | |_| |_|
<dholbach>   |_| |_____|____/ |_| |___|_| \_|\____(_)
<dholbach>                                           
<dholbach> sorry for the bold letters and stuff, I thought I'd point it out clearly :)
<dholbach> who here runs jaunty?
 * dholbach does
 * mnemo too
 * fta does too
 * charlie-tca too
 * seb128 does
 * creek23 uses Intrepid :(
<dholbach> if nobody else does that's fine... here's how you can still SAFELY test jaunty:
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases
<dinxter> me too
<dholbach> it will tell you how to make use of virtual machines, separate partitions or whatnot to safely run and test the development release
<dholbach> so going back to our nice empathy bug
<dholbach> we're <-> this close to closing it and having another bug fixed
<dholbach> we just need to test it :)
<dholbach> this was a very cheesy example, but you see what it took to get to the point of "ah, this should be fixed already"
<dholbach> just a bit of digging and checking some other sites
<dholbach> and that's what it's all about :)
<dholbach> <creek23> QUESTION: Will VirtualBox run Jaunty on WUBI? o.O
<dholbach> creek23: I'm sorry, I'm the wrong person to ask that, I did not use WUBI yet - you could try it :)
<dholbach> alright... let's move on to the next example ;-)
<dholbach> http://daniel.holba.ch/harvest/handler.py?pkg=gtksourceview
<dholbach> gtksourceview is the piece of code that does syntax highlighting in places like gedit and stuff
<dholbach> let's click on the 242920 link
<dholbach> another one on the list of resolved-upstream bugs
<dholbach> <benste> Question: Don't you close the bug now?
<dholbach> benste: did you test if it was really fixed? :)
<dholbach> closing on hearsay does not count :)
<benste> thought someone else did it here :-)
<dholbach>  _____ _____ ____ _____ ___ _   _  ____ _
<dholbach> |_   _| ____/ ___|_   _|_ _| \ | |/ ___| |
<dholbach>   | | |  _| \___ \ | |  | ||  \| | |  _| |
<dholbach>   | | | |___ ___) || |  | || |\  | |_| |_|
<dholbach>   |_| |_____|____/ |_| |___|_| \_|\____(_)
<dholbach>                                           
<dholbach> :-)
<dholbach> <duanedesign> QUESTION: how do you "close" a bug?
<dholbach> duanedesign: you click on the dropdown thingie next to "empathy" on the launchpad page (in the yellow bar)
<dholbach> it'll open a menu where you can change the status to "fix released"
<dholbach> alright, let's crack on with the gtksourceview bug
<dholbach> again it's supposed to be fixed upstream, so let's take a look at the upstream bug
<dholbach> "gnome-bugs #139968"
<dholbach> http://bugzilla.gnome.org/show_bug.cgi?id=139968
<dholbach> <benste> question: fix released on LP only care about the latest development version and eg not about a LTS version?
<dholbach> benste: yes
<benste> :-(
<dholbach> benste: else you need to open a bug task for the old version
<dholbach> https://wiki.ubuntu.com/StableReleaseUpdates is the policy for SRUs (stable release updates)
<dholbach> which is only for very important stuff
<dholbach> OK, seems like a new file was added to allow ASP stuff with gtksourceview (comment 18)
<dholbach> let's see what we need to do
<dholbach> so it was talking about it not working in gedit, let's check in jaunty
<dholbach> this is what I get in Jaunty
<dholbach> daniel@bert:~$ apt-cache showsrc gedit | grep Depends
<dholbach> Build-Depends: cdbs (>= 0.4.41), debhelper (>= 5.0.37.2), gnome-pkg-tools (>= 0.10), dpkg-dev (>= 1.13.19), python-support (>= 0.3), intltool (>= 0.35.0), gnome-doc-utils (>= 0.3.2), gtk-doc-tools (>= 1.0), libenchant-dev (>= 1.2.0), iso-codes (>= 0.35), libattr1-dev, libsm-dev (>= 2:1.0), libxml2-dev (>= 2.5.0), libglib2.0-dev (>= 2.16.0), libgtk2.0-dev (>= 2.13.0), libgtksourceview2.0-dev (>= 2.2.0), libgconf2-dev, python-dev (>= 2.3
<dholbach> ), python-gobject-dev (>= 2.15.4), python-gtk2-dev (>= 2.12.0), python-gtksourceview2 (>= 2.2.0), scrollkeeper, liblaunchpad-integration-dev (>= 0.1.17)
<dholbach> daniel@bert:~$
<dholbach> erm, sorry
<dholbach> this is what I meant to do:
<dholbach> daniel@bert:~$ apt-cache show gedit | grep ^Depends
<dholbach> Depends: gconf2 (>= 2.10.1-2), python, python-support (>= 0.7.1), libatk1.0-0 (>= 1.20.0), libattr1 (>= 2.4.41-1), libc6 (>= 2.4), libcairo2 (>= 1.2.4), libenchant1c2a (>= 1.4.2), libgconf2-4 (>= 2.13.5), libglib2.0-0 (>= 2.18.0), libgtk2.0-0 (>= 2.14.0), libgtksourceview2.0-0 (>= 2.3), libice6 (>= 1:1.0.0), liblaunchpad-integration1 (>= 0.1.17), libpango1.0-0 (>= 1.22.0), libsm6, libx11-6, libxml2 (>= 2.6.27), python2.5 (>= 2.5), scro
<dholbach> llkeeper, gedit-common (>= 2.25), gedit-common (<< 2.26), python-gtksourceview2 (>= 2.2.0), python-gobject (>= 2.15.4), python-gtk2 (>= 2.12.0), iso-codes
<dholbach> daniel@bert:~$
<dholbach> you can see that gedit links against libgtksourceview2.0-0
<dholbach> and this shows us which package we need to look at:
<dholbach> daniel@bert:~$ apt-cache showsrc libgtksourceview2.0-0 | head -n2
<dholbach> Package: gtksourceview2
<dholbach> Binary: libgtksourceview2.0-0, libgtksourceview2.0-common, libgtksourceview2.0-dev, libgtksourceview2.0-doc
<dholbach> daniel@bert:~$
<dholbach> (just as a side-note: the bug was filed against gtksourceview, but it's actually gtksourceview2 we need to look at!)
<dholbach> if you're on jaunty, please run
<dholbach>   apt-get source gtksourceview2
<dholbach> if not, please run
<dholbach>    sudo apt-get install devscripts; dget -x https://launchpad.net/ubuntu/jaunty/+source/gtksourceview2/2.5.3-0ubuntu1/+files/gtksourceview2_2.5.3-0ubuntu1.dsc
<dholbach> with these commands we download the gtksourceview2 package and see if it was fixed already
<dholbach> once that's done, please
<dholbach>   cd gtksourceview2-2.5.3
<dholbach>   find . -name '*asp*'
<dholbach> on my machine it spits out   ./gtksourceview/language-specs/asp.lang
<dholbach> so it seems an ASP language definition was added
<dholbach> Woohoo!
<dholbach> what do we need to do now? :)
<dholbach> right
<dholbach>  _____ _____ ____ _____ ___ _   _  ____ _
<dholbach> |_   _| ____/ ___|_   _|_ _| \ | |/ ___| |
<dholbach>   | | |  _| \___ \ | |  | ||  \| | |  _| |
<dholbach>   | | | |___ ___) || |  | || |\  | |_| |_|
<dholbach>   |_| |_____|____/ |_| |___|_| \_|\____(_)
<dholbach>                                           
<dholbach> and we can close the bug :)
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases if you don't want to run jaunty on real hardware
<dholbach> that was another cheesy example, this time we checked the upstream bug tracker and we downloaded the source package to verify in the code
<dholbach> everybody having fun so far? :)
<duanedesign> :)
<dholbach> open questions?
<dholbach> guess not, so let's crack on
<dholbach> please run this now:
<dholbach>   sudo apt-get install subversion cdbs devscripts gnome-pkg-tools
<dholbach> we're going to need the tools mentioned there
<dholbach> <Ape3000> QUESTION: Do you recommend installing on virtualbox?
<dholbach> Ape3000: whatever works for you, if it's KVM or virtualbox doesn't matter :)
<dholbach> they both work great for me
<dholbach> alright, let's take a look at http://daniel.holba.ch/harvest/handler.py?pkg=gnome-utils
<dholbach> and let's click on the 301952 link
<dholbach> it's another bug that was resolved upstream
<dholbach> this time we'll get the patch for it and see what we need to do
<dholbach> <duanedesign> Question: how about closing a bug that turns out was a config problem that the submitter solves in the process of the triage?
<dholbach> duanedesign: fine to close it, if you give a nice response explaining where the user went wrong
<dholbach> OK, "gnome-bugs #567834" seems to be the upstream bug that fixed the issue
<dholbach> let's see what the upstream guys say
<dholbach> Fabio says it was fixed in the development version, let's check in SVN
<dholbach> http://svn.gnome.org/viewvc/gnome-utils/trunk/ is where you can see what's going on in upstream's subversion repository
<dholbach> the first check can always be the ChangeLog file
<dholbach> so http://svn.gnome.org/viewvc/gnome-utils/trunk/ChangeLog?revision=8374&view=markup
<dholbach> unfortunately it just says that the last release was pushed out on 2009-01-09
<dholbach> hmm
<dholbach> so let's take a look at http://svn.gnome.org/viewvc/gnome-utils/trunk/baobab/
<dholbach> we'll find it has a separate ChangeLog
<dholbach> http://svn.gnome.org/viewvc/gnome-utils/trunk/baobab/ChangeLog?revision=8378&view=markup
<dholbach> The last entry was on 2009-01-15, from Fabio
<dholbach> saying that he fixed the issue we are talking about
<dholbach> that means we can't just grab a new release and upgrade the package to it
<dholbach> we need to grab the patch
<dholbach> if you want to use svn to do it (you can do it through the Web UI too), run this
<dholbach> svn checkout http://svn.gnome.org/svn/gnome-utils/trunk
<dholbach> it will download the trunk of gnome-utils
<dholbach> in the Web UI you can also see that the commit that fixed it was r8378
<dholbach> so:
<dholbach>   cd trunk
<dholbach>   svn diff -r 8377:8378
<dholbach> it shows the changelog entry and a small fix in baobab/src/baobab.c
<dholbach> we're just interested in the fix, we'll document the fix ourselves, so:
<dholbach>   svn diff -r 8377:8378 baobab/src/ > ~/patch
<dholbach> now we have the patch file in ~/patch
<dholbach> awesome
<dholbach> <charlie-tca> QUESTION: Is there something that tells where SVN is for various projects?
<dholbach> charlie-tca: google is always a good place to check, or the upstream homepage, some packages have it documented in the source package itself
<dholbach> if you have a set of packages you're interested you find out very quickly where to check
<dholbach> unfortunately there's no "big shopping list of upstream revision control systems" yet
<dholbach> but we're working on importing lots of upstream RCS data into Launchpad, so we can use just launchpad and bzr everywhere
<dholbach> which is going to be a glorious, golden and sunshiny day
<dholbach> alright
<dholbach> to get the newest source package of gnome-utils in jaunty (so we can patch it), please run
<dholbach> in jaunty:
<dholbach>   apt-get source gnome-utils
<dholbach> else, please run
<dholbach>   dget -x https://launchpad.net/ubuntu/jaunty/+source/gnome-utils/2.25.2-0ubuntu1/+files/gnome-utils_2.25.2-0ubuntu1.dsc
<dholbach> the package gnome-utils (as almost all GNOME source packages) makes use of a tool called CDBS (and CDBS patch system) to make the packaging a bit easier
<dholbach> <rugby471> Question: what is dget?
<dholbach> rugby471: yes, it uses wget (or curl) to download not only the .dsc file, but also the .diff.gz and .orig.tar.gz which in summary make up the source package
<dholbach> now please:
<dholbach>   cd gnome-utils-2.25.2
<dholbach> maxb just tells me:
<dholbach> <maxb> dholbach: Rather than dget, maybe mention pull-lp-source from ubuntu-dev-tools? e.g. $ pull-lp-source gnome-utils jaunty
<dholbach> there you go: just learned something new (just install ubuntu-dev-tools too)
<dholbach> rugby471 just tells me he had trouble, because the tarball was not extracted, if that happened to you, please run
<dholbach>   dpkg-source -x gnome-utils*dsc
<rugby471> cool that works now
<dholbach> sorry folks, no idea what happened there, but let's crack on :)
<rugby471> thx
<dholbach> now we'll use a cool feature of CDBS
<dholbach> please run
<dholbach>    cdbs-edit-patch 20_fix_fat32_scan_crash
<dholbach> what it does is:
<dholbach>  - open a "sub shell" where you can edit the source and do all you need to make it work again
<dholbach>  - when you type exit (or just Ctrl-D) it will close the subshell and create debian/patches/20_fix_fat32_scan_crash.patch for us
<dholbach>  - which is the patch of the changes we did
<dholbach> which is awesome
<dholbach> in this subshell, please run
<dholbach>   patch -p0 < ~/patch
<dholbach> (which will use the patch we extracted from SVN)
<dholbach> then, please type
<dholbach>   exit
<dholbach> or hit Ctrl-D
<dholbach> this means we have succeeded and added the patch to the source package - fantastico
<dholbach> I said we're going to document it, so please run
<dholbach>   dch -i
<dholbach> now
<dholbach> which will add a boilerplate changelog entry for you
<dholbach> now what we put in there should be quite verbose
<dholbach> we want to document well what we did and why we did it
<dholbach> I'll put in there something like this:
<dholbach>   * debian/patches/20_fix_fat32_scan_crash.patch: fix segmentation fault when trying to performe "scan folder" on a fat32 partition. Taken from Upstream SVN r8378 (LP: #301952)
<dholbach> of course add some line wrapping to it
<dholbach> let's take a look at it step by step
<dholbach>  - I reference the file I added, so it's easier to spot which files exactly I changed
<dholbach>  - I mentioned what the bug was all about and that it's fixed now
<dholbach>  - I mentioned where I have the patch from (add extra authority by saying that it comes from upstream)
<dholbach>  - I mention the SVN revision, so the uploader who works on gnome-utils the next time will now: with the next upstream release I can drop the patch again
<dholbach>  - and I refer to the Launchpad bug in a special notation: this way the bug will get automatically fixed on upload
<dholbach> <Ape3000> QUESTION: Shouldn't I use my pgp key with the dch?
<dholbach> Ape3000: if you mean the email address you have on your GPG key, yes
<dholbach> <mnemo> QUESTION: does the debian build process automatically apply debian/patches/* to the orig before compiling?
<dholbach> mnemo: yes, that's what simple-patchsys.mk in debian/rules does
<dholbach> <porthose> QUESTION: Would you also push this patch to debian?
<dholbach> porthose: I'm going to say a bit more about what we're going to do with it in a sec
<dholbach> now let's save the file and please run
<dholbach>    debuild -S -us -uc
<dholbach> to rebuild the source package with the new entry
<dholbach> if all goes well a
<dholbach>    ls ..
<dholbach> should show you gnome-utils_2.25.2-0ubuntu2.dsc amongst others
<dholbach> now please run
<dholbach>   cd ..
<dholbach>   debdiff gnome-utils_2.25.2-0ubuntu1.dsc gnome-utils_2.25.2-0ubuntu2.dsc
<dholbach> and post the output to a pastebin and post the link in this channel
<dholbach> <WalterMundt> QUESTION: is there a good reference for all of the options of debuild?  I notice some mentioned in HOWTO's that aren't in the manpage directly, so either I'm missing them or there's something a bit more complex going on.
<dholbach> WalterMundt: check https://wiki.ubuntu.com/PackagingGuide and   man dpkg-buildpackage   and    man debuild
<dholbach> ok, a few words until you posted your results somewhere:
<rugby471> http://pastebin.com/m7b422082
<dholbach>  - in the specific case of gnome-utils you would probably just wait for the next release (which is regular and in just a few days)
<dholbach>  - in all other cases, you would
<Ape3000> http://paste.ubuntu.com/107870/
<dinxter> http://paste.ubuntu.com/107868/
<dholbach>    + attach the resulting patch to the bug report
<dholbach>     + and subscribe ubuntu-main-sponsors, who will review the patch and upload it for you because they like it
<Quintasan> http://wklej.org/id/42593/
<dholbach> dinxter: I'd wrap the text at 80 chars per line, other than that: good work
<dholbach> Ape3000: same as for dinxter :)
<Ape3000> You mean I should wrap the ChangeLog line?
<dholbach> rugby471: good work, I'd add a reference to where the patch comes from and which LP bug it fixes
<dholbach> Ape3000: yep
<dholbach> Quintasan: good work, same as Ape3000
<dholbach> wow... any more patches?
<dholbach> and don't forget one thing:
<dholbach>  _____ _____ ____ _____ ___ _   _  ____ _
<dholbach> |_   _| ____/ ___|_   _|_ _| \ | |/ ___| |
<dholbach>   | | |  _| \___ \ | |  | ||  \| | |  _| |
<dholbach>   | | | |___ ___) || |  | || |\  | |_| |_|
<dholbach>   |_| |_____|____/ |_| |___|_| \_|\____(_)
<dholbach>                                           
<dholbach> https://wiki.ubuntu.com/MOTU/GettingStarted
<dholbach> https://wiki.ubuntu.com/SponsorshipProcess
<dholbach> https://wiki.ubuntu.com/PbuilderHowto
<dholbach> for more info :)
<dholbach> get wild, use harvest, make me proud! :)
<dholbach> thanks a bunch everybody
<dholbach> you are awesome
 * dholbach hugs y'all
 * james_w hugs dholbach 
<dholbach> next up is Mr james_w!
<dholbach> big round applause for James!
 * rugby471 feels his life is now complete
<rugby471> thanks daniel!!!
<Ape3000> This was very good session and I really learned lots of things.
<dinxter> thanks daniel
<dholbach> http://daniel.holba.ch/harvest for more Harvest goodness :-)
 * porthose *applause
<ian_brasil> thx
<porthose> thanks daniel great session
<enaut> thanks
<Flimm> Harvest looks especially interesting
<dholbach> james_w is going to talk about Bazaar and Packaging which is going to make 1) your life easier, 2) you very happy
<james_w> \o/
<dholbach> Rock On everybody!
<james_w> I'm just getting set up still, I had a great idea about 10 minutes ago, so I'm changing the session a bit
<cool2k> thnks it was great!!
<james_w> is anyone still running Hardy?
<Arc> nope
<Flimm> Not me
<furicle> Yes
<Flimm> I borrow somebody else's comp to test stuff on Hardy
<james_w> as Mr. Holbach said, we're going to be looking at bzr for packaging
<james_w> we're actually going to fix that baobab bug again, but this time using bzr
<james_w> for that we need some extra tools, so if you would all
<james_w> sudo aptitude install bzr bzrtools bzr-svn bzr-builddeb
<james_w> that would be fantastic
<james_w> I'm working on a project called "Distributed Development" that aims to make bzr really useful for packaging
<james_w> and at the same time use bzr for packaging more in Ubuntu
<james_w> as part of that I have created the branches you can see at http://package-import.ubuntu.com/
<james_w> these will be moved to launchpad soon, the launchpad developers are working hard to accommodate them.
<james_w> until that time they live there
<james_w> so you can click through there and find the gnome-utils branches
<james_w> <Arc> QUESTION: is this currently supported for PPAs on launchpad?
<james_w> Arc: you mean bzr for PPAs?
<Arc> yes
<james_w> sort of
<james_w> you can use bzr and then upload a source package
<james_w> there are plans in the works to allow you to just point to a branch and ask for it to be built in your PPA
<james_w> <Flimm> QUESTION: packages-import for both main and universe?
<james_w> yup
<james_w> to show off some of the things that it will be possible to do I have created a project on staging.launchpad.net
<james_w> you can see it at https://code.staging.launchpad.net/gnome-utils-ubuntu
<james_w> and once you have the above packages installed you can grab the source by typing
<james_w> bzr branch lp://staging/gnome-utils-ubuntu
<james_w> (the staging is just there as we are experimenting)
<james_w> also it will be written "lp:ubuntu/jaunty/gnome-utils-ubuntu" once launchpad hosts the branches
<james_w> <Flimm> QUESTION: where can I upload any commits I make to bzr branches from packages-import?
<james_w> I would just recommend pushing them to your +junk area for now
<james_w> once launchpad hosts them you will be able to push to
<james_w> lp:~your-user/ubuntu/jaunty/gnome-utils
<james_w> once you have branched the code then we can work on the fix
<james_w> Mr. Holbach helpfully told us that the fix is between revisions 8377 and 8378 of http://svn.gnome.org/svn/gnome-utils/trunk
<james_w> now, we installed bzr-svn, meaning we can access this URL using bzr
<james_w> (I've just noticed I also have a bzr plugin named "sandwich", I wonder what that does)
<james_w> bzr diff http://svn.gnome.org/svn/gnome-utils/trunk -c  8378
<james_w> that will show us the changes in revision 8378 in SVN
<james_w> except that we are not accessing a native bzr branch, so we have to say
<james_w>  bzr diff http://svn.gnome.org/svn/gnome-utils/trunk -c  svn:8378
<james_w> because 8378 is an svn revision number
<james_w> (when you run these commands it will spin a progress bar for a little while as it does the translation)
<james_w> as well as making packaging branches available we are working on making bzr versions of the SVN projects available
<james_w> so one day you won't have to wait for this translation to be done, you can just access the bzr version
<james_w> right
<james_w> so it's the same diff we saw an hour ago :-)
<james_w> interesting eh? :-)
<james_w> but we don't just want to see the diff, we want to pull in the changes
<james_w> we want to merge them
<james_w> bzrtools provides a nice "patch" command we can use for this
<james_w> so you can "bzr patch file" and it will apply it
<james_w> or you can pipe in a patch so "bzr diff http://svn.gnome.org/svn/gnome-utils/trunk -c  svn:8378 | bzr patch" should work
<james_w> if you were in the last session and have the patch file laying around then "bzr patch thatfile" will work
<james_w> interestingly, it should also work over any transport
<james_w> so "bzr patch http://some-server/some-patch-someone-has-pointed-you-to" should work
<james_w> e.g. "bzr patch http://svn.gnome.org/viewvc/gnome-utils/trunk/baobab/src/baobab.c?view=patch&r1=8378&r2=8377&pathrev=8378"
<james_w> to apply the part of the patch that makes the code change
<james_w> once you've applied the patch however you chose to do it
<james_w> you can write a changelog entry to go along with it
<james_w> run "dch -i -D UNRELEASED"
<james_w> and type in your message
<james_w> once done, save and quit
<james_w> and run "debcommit"
<james_w> (I assume you all have devscripts installed from the last session for those last two commands)
<james_w> make sure include the bug number as "LP: #301952" in the changelog
<james_w> once you are done you can run "bzr log -r -1" and "bzr diff -c -1" to see your message and the changes
<james_w> (or install bzr-gtk and run "bzr viz")
<james_w> now you want to build the package to test it
<james_w> simply run "bzr builddeb -S"
<james_w> that will download the tarball that you need, and build you a source package
<james_w> you can then build that in pbuilder or similar, or sign it and push it to your PPA
<james_w> <Quintasan> bzr: ERROR: A Debian packaging error occurred: uscan failed to retrieve the upstream tarball
<james_w> ah, you don't have deb-src entries for jaunty in your sources.list
<james_w> you can add them or run "(cd .. && wget http://archive.ubuntu.com/ubuntu/pool/main/g/gnome-utils/gnome-utils_2.25.2.orig.tar.gz)"
<james_w> once you are happy with the fix you want to get this uploaded to Ubuntu
<james_w> so it needs to be merged in to the main packaging branch
<james_w> for that we use launchpad
<james_w> so first you need to push your changes back to launchpad
<james_w> "bzr push lp://staging/~YOUR_LP_USERNAME/gnome-utils-ubuntu/fix-301952"
<james_w> where YOUR_LP_USERNAME is your launchpad username, and the last part of the URL is anything you want
<james_w> this will fail if you haven't registered you SSH key with launchpad yet
<james_w> oh, and also if you haven't yet run "bzr launchpad-login"
<james_w> "bzr launchpad-login YOUR_LP_USERNAME"
<james_w> https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair for information on registering your launchpad SSH key
<james_w> iulian> QUESTION: Can Ubuntu devs commit to the main branch?  If yes, where will it be located?
<james_w> iulian: yes, if they can upload the package
<james_w> once the branches are hosted on launchpad
<james_w> once you have pushed you can go to https://code.staging.launchpad.net/gnome-utils-ubuntu and you should be able to see your branch
<james_w> when you can see your branch the next step is to propose it for merging in to the main branch
<james_w> if you click on the link to your branch you can click "Propose for merging in to another branch"
<james_w> in the next form you can just add your explanation of what you have done, the "cover letter" of the change
<james_w> you will end up with something like https://code.staging.launchpad.net/~james-w/gnome-utils-ubuntu/fix-301952/+merge/2999
<james_w> which a developer can then review and merge
<james_w> and if you also look at the bug report on staging you will see that under the description it now links to a branch that has the fix https://bugs.staging.launchpad.net/ubuntu/+source/gnome-utils/+bug/301952
<james_w> this went from the changelog -> bzr because of debcommit
<james_w> then launchpad noticed that and added the link for us
<james_w> we're out of time unfortunately
<james_w> sorry for rushing the last bit
<james_w> that's what happens when you decide to change your session at the last minute :-)
<UbuntuIRC> saludos
<dinxter> thanks james
<porthose> james_w: thanks for the great session :-D
<james_w> I'm happy to help people with things outside the session, but we have to make way for the next session now
<Flimm> Thank you james_w
<iulian> Thanks James, that was great.
<james_w> thanks for playing along
<Quintasan> thanks, some knowledge wont hurt ;)
<james_w> WalterMundt> QUESTION: I notice that committing to bzr this way doesn't create a patchfile under debian/ -- does that get handled at some other stage?
<james_w> good question
<james_w> you can still create that patch file manually if you like
<james_w> it's better not to do that if you are using bzr, but while we still use patch systems you can do that step
<james_w> bzr doesn't stop you, it could automate it better though
<james_w> but now we have JontheEchidna with "Kubuntu Bug Squishing"
<JontheEchidna> \o
<JontheEchidna> Hi, my name's Jonathan
<JontheEchidna> Welcome to my course on bug squishing in Kubuntu.
<JontheEchidna> As you may recall, this previous Ubuntu OpenWeek I did a course on triaging bugs.
<JontheEchidna> Even though triaging bugs is an important part of Quality Assurance, you do have to eventually, well, fix bugs. :-P
<JontheEchidna> A properly triaged upstream bug usually does get fixed by upstream. But some times, for various reasons, we must make fixes to our KDE packages ourselves before the next KDE release.
<JontheEchidna> This is especially true when the problem is not with KDE itself, but with our packages.
<JontheEchidna> Aside from packaging bugs, we may also need to apply upstream fixes to our packages when the following happens:
<JontheEchidna> a) A severe bug has been fixed upstream for a future release, but the severity of the bug warrants early inclusion of packages.
<JontheEchidna> b) At the end of a development cycle especially, we start including bugfix patches. This is because once we include the most recent upstream release before the next Kubuntu release, some upstream bugs get fixed. Since the next bugfix release won't be coming by default, we take the patch and apply it to our KDE packages. An excellent example would be bug 314016, which has yet to be fixed.
<JontheEchidna> Luckily, in most cases, upstream has done most of the bug fixing. Aside from packaging bugs, all we need to do is include the upstream patch in our packaging.
<JontheEchidna> <DoruHush> QUESTION: How are treated .po file for localization, for languages with more then 2 forms of plurals (eg. nplurals=3), in Kubuntu.
<JontheEchidna> Our packaging extracts the .po files and through some magical way or another Rosetta imports them
<JontheEchidna> Right before the intrepid release there were a few serious bugs found with rosetta in regards to how it imported translations
<JontheEchidna> and once they did get imported, there were some bugs with plural forms, etc
<JontheEchidna> The last time I checked there were some updates langpacks released to intrepid-updates
<JontheEchidna> While this is quite unforunate, it's not exactly a bug with our KDE packages, and is somewhat out of the scope of this talk.
<JontheEchidna> Steps have been taken to fix this for the future though. :-)
<JontheEchidna> It has been a source of frustration for all of us, I assure you
<JontheEchidna> Continuing:
<JontheEchidna> For this session I will walk you through fixing a bug that has been fixed upstream for KDE 4.2.
<JontheEchidna> This is how myself or another kubuntu hacker would go about fixing a bug
<JontheEchidna> Since the fix was brought about by a change in behavior, it was not added as a bugfix for the KDE 4.1 branch.
<JontheEchidna> The bug is somewhat more than trivial, though, so it would be a good idea to fix it since we do have to support KDE 4.1.4 in Intrepid for a year.
<JontheEchidna> The bug in question is bug 314016. (https://launchpad.net/bugs/314016)
<JontheEchidna> Basically, a new feature in KDE 4.1 crapped up Left-to-Right text handling in Kate, severly crippling its usefulness for LTR languages
<JontheEchidna>  QUESTION: What do you mean by "KDE 4.1 branch"? I thought that KDE 4.1 is a release.
<JontheEchidna> Good question!
<JontheEchidna> Right before every 4.x release, trunk is branched
<JontheEchidna> From the release on, bugfixes will be aggregated to that branch and be released in bugfix releases
<JontheEchidna> Right before KDE 4.1 was released it was branched into the "4.1 branch". Since then fixes have been backported from trunk by KDE to this branch, and they have released 4 bugfix releases since then
<JontheEchidna> with the most recent one being 4.1.4
<JontheEchidna> These branches are for bugfixes only, so new features and bugfixes with rather widespread changes are generally not included
<JontheEchidna> So we as a distro can choose to include fixes ourselves
<JontheEchidna> which is what we're going to do today
<JontheEchidna> Since Kate (the application affected by the bug) is part of the kdesdk package, we need to get its source
<JontheEchidna> Since this would be an update to a stable release of Kubuntu we will need to modify the current kdesdk for intrepid-updates: https://edge.launchpad.net/ubuntu/intrepid/+source/kdesdk/4:4.1.3-0ubuntu1~intrepid1
<JontheEchidna> I should note that we do have kdesdk 4.1.4 in intrepid-proposed which will be copied to -updates after proper testing is done. The bugfix update we are doing today won't be uploaded to -proposed until KDE 4.1.4 is out.
<JontheEchidna> since having two stable release updates in -proposed is generally frowned upon
<JontheEchidna> Going through the Stable Release Update could be half of another session itself, so we will focus on including the fix to our packages
<JontheEchidna> To start off, we will download the 3 files listed under "download" in the page I just linked to.
<JontheEchidna> I don't exactly know the exact technical range of those of you reading, so bear with me if this seems like common knowledge
<JontheEchidna> and don't be afraid to ask me to explain better
<JontheEchidna> I'll give y'all a chance to download the source for a bit whilst I compose what I want to do next
<JontheEchidna> Once we've downloaded the source package, we'll need to unpack it.
<JontheEchidna> navigate to the directory and do a standard "dpkg-source -x *.dsc" to unpack the source package.
<JontheEchidna> If you're using dolphin you could just press alt+f4 to get a terminal in the directory you are in :D
<JontheEchidna> <3 KDE
<JontheEchidna> er, not alt+f4
<JontheEchidna> just f4
<JontheEchidna> <.<
<JontheEchidna> Once extraction is done there should be a folder entitled "kdesdk-4.1.4" in your directory
<JontheEchidna> This is the unpacked source + our packaging. The packaging is located in the debian/ directory
<JontheEchidna> cd to kdesdk-4.1.4, this is where we'll mostly be working from
<JontheEchidna> I think I'll take this time for questions if there are any :-)
<JontheEchidna> or wait for people to catch up ;-)
<JontheEchidna> The Debian and Kubuntu KDE packaging teams generally favor quilt as their patch system. It is quite nice once you get used to it.
<JontheEchidna> Quilt is a system for managing patches for programs
<darkblue_B> 'ello.. I am new.. there is a list of events on UbuntuDeveloperWeek but it is not clear to me how to actually attend one
<JontheEchidna> and for keeping them all in order
<JontheEchidna> darkblue_B: you're in the right place. The talks are being given here. You can chat and ask questions in #ubuntu-classroom-chat :-)
<darkblue_B> thx
<JontheEchidna> to attend a session all you need to do is just join this channel and listen
<JontheEchidna> :)
<JontheEchidna> Using quilt we will add the patch KDE has made to our packages
<JontheEchidna> to start off we make a symlink from kdesdk-4.1.3 to kdesdk-4.1.3/debian/patches
<JontheEchidna> so from kdesdk-4.1.3 directory:
<JontheEchidna> ln -s debian/patches patches
<JontheEchidna> this is so we can work from the top level of the source tree
<JontheEchidna> and quilt will still think we're in the patches directory
<JontheEchidna> so first we'll need to give our new patch a name
<JontheEchidna> quilt new kubuntu_03_fix_paragraph_direction.diff
<JontheEchidna> This will "create" a new patch entitled kubuntu_03_fix_paragraph_direction.diff
<JontheEchidna> now that we have the patch named we will need to get the actual patch from upstream
<JontheEchidna> As it so happens, the bug report handily links to the webpage of the svn revision that fixed this bug: http://websvn.kde.org/?view=rev&revision=905112
<JontheEchidna> From that page, open the "text changed" links for both files in new tabs
<JontheEchidna> and in these tabs click the "patch" link on the top toolbar
<JontheEchidna> both should open up the patch in Kate or whatever your default text editor is if you are using Konqueror
<JontheEchidna> you can save them as patch1.diff and patch2.diff
<JontheEchidna> oh crap, actually I had you guys download the wrong source package
<JontheEchidna> I forgot that Kate actually has some of its code in kdelibs
<JontheEchidna> download kde4libs from here: https://edge.launchpad.net/ubuntu/intrepid/+source/kde4libs/4:4.1.3-0ubuntu1~intrepid1 or via apt-get source as before
<JontheEchidna> extract, make the symlink, etc
<JontheEchidna> my bad :-(
<JontheEchidna> I'll give everybody time to catch up
<JontheEchidna> download, dpkg-source -x *dsc; cd kde4libs-4.1.4; ln -s debian/patches patches; quilt new kubuntu_03_fix_paragraph_direction.diff
<JontheEchidna> and we should be back where we were after that
 * JontheEchidna takes this opportunity to throw away his empty soda can
<JontheEchidna> ok, so is everybody good up to this point?
<JontheEchidna> Ok, I would recommend saving patch1 and patch2.diff to the same directory kde4libs-4.1.4 is in
<JontheEchidna> as we can see from the svn page, 2 files are affected:
<JontheEchidna> http://websvn.kde.org/?view=rev&revision=905112
<JontheEchidna> we need to tell quilt that we are going to be changing these two
<JontheEchidna> from the kde4libs-4.1.3 directory:
<JontheEchidna> quilt add kate/render/katerenderer.cpp
<JontheEchidna> and
<JontheEchidna> quilt add kate/render/katerenderer.h
<JontheEchidna> now we will make the changes to the actual files themselves
<JontheEchidna> since the kde svn structure is a bit different that the folder structure we have now, the patches won't apply as they are
<JontheEchidna> Where you see this:
<JontheEchidna> --- trunk/KDE/kdelibs/kate/render/katerenderer.cpp	2009/01/03 17:58:16	905111
<JontheEchidna> +++ trunk/KDE/kdelibs/kate/render/katerenderer.cpp	2009/01/03 17:58:42	905112
<JontheEchidna> it should probably be more like:
<JontheEchidna> --- kate/render/katerenderer.cpp	2009/01/03 17:58:16	905111
<JontheEchidna> +++ kate/render/katerenderer.cpp	2009/01/03 17:58:42	905112
<JontheEchidna> that^
<JontheEchidna> make the changes for both files and save
<JontheEchidna> (patch1.diff and patch2.diff
<JontheEchidna> once that's done we can apply the patches using linux's patch command
<JontheEchidna> patch -p0 < ../patch1.diff
<JontheEchidna> patch -p0 < ../patch2.diff
<JontheEchidna> oh, uh, actually I forgot something important before that
<JontheEchidna> nevermind
<JontheEchidna> now run quilt refresh
<JontheEchidna> with luck it should say that the patch was refreshed
<JontheEchidna> and if you'll check you should see a new file in debian/patches
<JontheEchidna> namely your patch :-)
<JontheEchidna> the patch's name will also have been added to the series file
<JontheEchidna> run quilt pop -a to revert the changes you have made directly to the source files
<JontheEchidna> when the package is built your patch will be applied automagically
<JontheEchidna> Oh, I should say that at the beginning it's a good idea to apply all existing patches after you make the patches symlink
<JontheEchidna> quilt push -a would do that
<JontheEchidna> it helps prevent things from going wrong
<JontheEchidna> anyway, after that you'd run dch -i from kde4libs-4.1.4 to add a changelog entry
<JontheEchidna> it'd look something like this:
<JontheEchidna> kde4libs (4:4.1.3-0ubuntu1~intrepid1.1) intrepid; urgency=low
<JontheEchidna>   * Add kubuntu_03_fix_paragraph_direction.diff to fix KDE bug
<JontheEchidna>     178594. (LP: #314016)
<JontheEchidna>  -- Jonathan Thomas <echidnaman@kubuntu.org>  Wed, 21 Jan 2009 14:57:50 -0500
<JontheEchidna> after that you'd run debuild -S -sa and you'd have yourself a fixed package
<JontheEchidna> you coudl then speak to the kubuntu doods about sponsoring your package
<JontheEchidna> which we would be glad to help out with
<JontheEchidna> My time is just about up, feel free to throw questions, tomatoes, Windows 7 beta CDs, etc at me in #kubuntu-devel
<Quintasan> Thanks :D
<nijaba> Thanks JontheEchidna
<JontheEchidna> ^_^
<JontheEchidna> Next up is g VMBuilder to create tests environments -- SÃ¸ren Hansen and Nicolas Barcet will entertain you with virtual machines and the fantastic vmbuilder. Need a clean test environment for something? Don't want to run the latest development release on actual hardware yet? These two fine men have the answer for you.
<nijaba> Welcome everyone and thanks for attending this presentation about
<nijaba>                    __                   ___       __
<nijaba>                   /\ \              __ /\_ \     /\ \
<nijaba>  __  __    ___ ___\ \ \____  __  __/\_\\//\ \    \_\ \     __   _ __
<nijaba> \ \ \_/ |/\ \/\ \/\ \ \ \L\ \ \ \_\ \ \ \ \_\ \_/\ \L\ \/\  __/\ \ \/
<nijaba>  \ \___/ \ \_\ \_\ \_\ \_,__/\ \____/\ \_\/\____\ \___,_\ \____\\ \_\
<nijaba>   \/__/   \/_/\/_/\/_/\/___/  \/___/  \/_/\/____/\/__,_ /\/____/ \/_/
 * nxvl waver
<nijaba> Originally Soren Hansen, the author and maintainer of vmbuilder was supposed to run this presentation with me, but he unfortunately got a bad flu and I'll therefore will have to do this alone.
<nxvl> waves*
<nijaba> Well not completely alone, I bet mathiaz and zul are around to make sure I don't say anything stupid ;)
 * zul waves
<Koon> if it's really stupid, I will make sure everyone notices.
<nijaba> soren, what is vmbuilder? (you may ask)
<nijaba> ehe, I meant so not soren ^ :)
<nijaba> vmbuilder is a python tool that allows to create virtual machine images on the fly, without the need to start an installer in an hypervisor.
<nijaba> vmbuilder can create images for KVM, Xen, VMWare and for Amazon EC2.
<jmarsden|work> And soon hopefully for virtualbox too...
<nijaba> On a reasonably powerfull machine with a local package cache (for example apt-proxy or apt-cacher), the creation of a minimal virtual server (aka JeOS) can take less than a minute.
<nijaba> jmarsden|work: please use #ubuntu-classroom-chat for comments
<nijaba> As a python tool, it is first of all a library with a very powerfull plugin architecture.
<nijaba> One of the plugins that is provided is a CLI (command line interface), and anyone could write another plugin to provide a GTK interface or use the vmbuilder library to create a web service.
<nijaba> Apart for the front end plugin mechanism, there are 2 other types of plugins that are used in vmbuilder: Hypervisors and Distributions.
<nijaba> The distribution plugin would allow for someone to easily extend vmbuilder for other distributions, but at this time the only available one is Ubuntu.
<nijaba> The same is true for the hypervisor plugin, and it seems that jmarsden|work is voluteering some work :)
<nijaba> Contributions are always welcome!
<nijaba> The first implementation of vmbuilder was on hardy as a shell script that used to be called ubuntu-vm-builder.
<nijaba> When Soren rewrote in python for intrepid, the source package was renamed python-vm-builder and contains a binary package called ubuntu-vm-builder which is just a wrapper to the old CLI to maintain upward compatibility.
<nijaba> Now that we have covered what vmbuilder is (in a nutshell), let's explore what you could use it for as a developer.
<nijaba> A couple scenarios come to mind, but I'm sure there are many others.
<nijaba> 1/let's imagine that you want to test something (a program that you wrote, an upgrade, a bug) in a clean environement.
<nijaba> chroot is generally great for this, but is not really what we could call a complete environment.
<nijaba> Using vmbuilder, you can generate a virtual machine on the fly that contains whichever package and configuration that you want almost as quickly as you would generate a chroot environment.
<nijaba> You can then start the machine in your favorite hypervisor and start testing.
<nijaba> Some of the great options vmbuilder provides are the ability to chose wich series you want (dapper, gutsy, hardy, intrepid, ...) and, to the difference of pre-built images that you would duplicate, is building machines from the latest versions of the packages in the repositories.
<nijaba> Since vmbuilder does not require any user interaction to run, this can be scripted and made part of build or test process.
<nijaba> 2/let's imagine that you want to deliver your package/packages/application/integration as a pre-built virtual machine for various hypervisor (providing so called "virtual-appliances", for example).
<nijaba> The traditional way would imply creating reference virtual images for each target environements and each time you updated your code, after building your package you would have to:
<nijaba> a- start each vm
<nijaba> b- update your package in each vm manually
<nijaba> c- clean up the vm
<nijaba> d- save it
<nijaba> e- send it to testers/users
<nijaba> Since vmbuilder knows about your various Hypervisors, it is very easy to integrate this work in your build scripts so that your virtual images are almost ready to ship once your build process is completed.
<nijaba> To make things even easier, vmbuilder includes three "sub-scripts" features that can be specified:
<nijaba> a- an "exec" script that is called during the machine build process just after finishing the the installation.  The script can chroot within the target machine and make additional changes.
<nijaba> b- a "first-boot" script that is copied to the virtual machine and executed in batch mode the first time the vm will boot
<nijaba> c- a "first-login" script that is copied as well to the vm and executed as the user the first time someone logs-in to the vm (and therefore allows to perform some final interactive setup).
<nijaba> ok, now that I have covered the main use cases, I'll try to answer the first few questions before we move on
<nijaba> QUESTION: What do I need to use KVM?
<nijaba> You need a processor that supports hardware virtualization
<nijaba> there is a detailed step by step procedure to test this on http://help.ubuntu.com/communtity/KVM
<nijaba> err community
<nijaba> QUESTION: are there plans to also support qemu/kqemu?
<nijaba> That really should no be too hard to had, but it is not on any official roadmap, AFAIK
<nijaba> contributions, again, are very welcome
<nijaba> QUESTION: vmbuilder on gutsy?
<nijaba> unfortunately not.  ubuntu-vm-builder was first developped on hardy
<nijaba> we badly need kpartx for it, and it is not available before hardy
<nijaba> QUESTION: which one should I choose between KVM, Xen, VMWare and for Amazon EC2 (if I got a machine that supports hardware virtualization and I want to do ubuntu package testing for instance) ???
<nijaba> it all really depends on your use case
<nijaba> VMWARE (esx) is certainly the most complete virtualization solution available today
<nijaba> but it has some hard dependency, and is not really free software
<nijaba> Xen is nice if you processor does not have hardware virtualization extension
<nijaba> but then it will only provide paravirtualized os virtualization
<nijaba> and it is a BULKY thing to maintain in a distro
<nijaba> so that's mainly why, if your use case is server virtualization, we prefer KVM
<nijaba> ok, lets move on
<nijaba> To start using vmbuilder, you need to first install its package:
<nijaba> $sudo apt-get install python-vm-builder
<nijaba> note that if you want to create EC2 images, you will need to install the python-vm-builder-ec2, which, for licence reasons on the AMI tools, had to be made a separate package and placed into multiverse.
<nijaba> Once the install is complete, the first thing to do is to have a look a the help.
<nijaba> As I said before, python-vm-builder uses a plugin mechanism.
<nijaba> This implies that you will have different sets of options depending on the hypervisor and distribution that you pick.
<nijaba> This is the reason why the man page or a basic 'sudo vmbuilder --help' will only list options that are common to all hypervisors or distributions.
<nijaba> To get all options displayed, you need to specify your target hypervisor and distribution.  For example try doing:
<nijaba> $sudo vmbuilder kvm ubuntu --help
<nijaba> or
<nijaba> $sudo vmbuilder xen ubuntu --help
<nijaba> and notice the additional options provided in each case.
<nijaba> So now, assuming that you all are going to use vmbuilder intensively, let's start setting up a package caching system.
<nijaba> Soren likes apt-cacher while I've preferred apt-proxy.
<nijaba> Since the later is what I know and is quite simple to enable, I'll invite you to:
<nijaba> $sudo apt-get install apt-proxy
<nijaba> once this is done, apt-proxy will immediately start listenning on all your interfaces on port 9999.
<nijaba> There are multiple options you can set on /etc/apt-proxy/apt-proxy.conf, but the default will work very nicely for our purpose.
<nijaba> In order for apt-proxy to be used by vmbuilder automatically, we could very well
<nijaba> add the option "--install-mirror http://127.0.0.1:9999/ubuntu" each time we would invoke vmbuilder, but since I am quite lazy, I have defined this as a permanent option in my ~/.vmbuilder.cfg file by putting in the following two lines:
<nijaba> [ubuntu]
<nijaba> install_mirror = http://127.0.0.1:9999/ubuntu
<nijaba> in fact, any command line option that can be passed to vmbuilder can added to this config file, and you can even specify an additional config file that uses the same format using the --config option.
<nijaba> not that the format of the config file changed between hardy and interpid... so I assume your are all on intrepid or jaunty here
<nijaba> Another option that speeds up the creation of vm is the --tmpfs one, which will use a ramdisk to store temporary file.
<nijaba> I have added in my ~/.vmbuilder.cfg file the following 2 lines:
<nijaba> [DEFAULT]
<nijaba> tmpfs = -
<nijaba> how is everyone doing so far?
 * rmcbride nods
<nijaba> ok, so we are now ready to start building our first image.
<nijaba> For this example we'll build and equivalent of an Intrepid JeOS using the following command:
<nijaba> $sudo vmbuilder kvm ubuntu --suite intrepid --flavour virtual --arch i386 --verbose
<nijaba> I do not think the above options need much comments, do they?
<nijaba> The first time you will build a machine for a new suite, it will obviously take a bit longer as apt-proxy is not loaded.
<nijaba> While your vm is building, let's open the floor to questions.
<nijaba> In the absence of Soren, I may not be able to answer some of them
<nijaba> in which case I'll make sure to write them down and provide you with valid answers on my blog as soon as I can get them
<nijaba> QUESTION: sry to dwell on this but why could KVM only be used for server testing? cant I run X.org inside a KVM?
<nijaba> well, sure you can run X.org inside a KVM
<nijaba> but the interface has not really been tuned to provide you with the best experience possible for full desktop vritualization
<nijaba> but, I do use kvm for testing gnome once in a while
<nijaba> and apart from a few quirk, it is quite useable
<nijaba> I would not recommend it for any real usage on a daily basis though
<nijaba> qUESTION:  what I have done in the past is boot from an .iso and then use rtegular tools to make mods
<nijaba> this is a CLI approach based on, listing all the pkgs you want to install in a text file, for example?
<nijaba> (please try to write your question starting with QUESTION without breaks)
<nijaba> yes, this is the general approach, yes
<nijaba> UESTION: when running vmbuilder, it printed a bunch of these: "Can not write log, openpty() failed (/dev/pts not mounted?)"   is that a problem?
<nijaba> no, actually the reason why you saw those is because we enabled the --verbose option
<nijaba> but, unless vmbuilder stops before sayng it is done, these error are just transient
<nijaba> QUESTION what about custom downloads.. eg not debian/ubuntu packages.. not covered by this approach?
<nijaba> this is the reason why we have multiple scripts options
<nijaba> as I described earlier
<nijaba> you could have a --exec script
<nijaba> that download something with wget
<nijaba> and untars it wherever you want
<nijaba> ok, is everyone done building their first vm?
 * sebp nods
 * Quintasan nods
<nijaba> another very inresting part of vmbuilder are templates
<nijaba> have a look at what is inside /etc/vmbuilder/
<nijaba> each of these directory contains base templates for file that we'll use for configuration during the build process
<nijaba> for example, to enable bridging in our vm, we'll need to modify the libvirt template
<nijaba> $mkdir -p mytemplates/libvirt
<nijaba> $cp /etc/vmbuilder/libvirt/* mytemplates/libvirt/
<nijaba> we can then edit mytemplates/libvirt/libvirtxml.tmpl
<nijaba> and change the interface section of it to:
<nijaba>     <interface type='bridge'>
<nijaba>       <source bridge='br0'/>
<nijaba>     </interface>
<nijaba> and then specify which template set to use by adding the following to our command line:
<nijaba> --templates mytemplates
<nijaba> QUESTION: how can I start the kvm I just built?
<nijaba> this brings me to the --libvirt option
<nijaba> assuming that libvirt is installed and running
<nijaba> (if it is not, have a look at https://help.ubuntu.com/community/KVM/Installation )
<nijaba> then you can pass "--libvirt qemu:///system" to the command line
<nijaba> which will automatically add the generated vm as a livirt domain
<nijaba> which can be started immediately
<nijaba> https://help.ubuntu.com/community/KVM/Managing#From%20the%20shell gives an overview of how to manage running vm
<nijaba> I you do not want to use libvirt, see https://help.ubuntu.com/community/KVM/Directly
<nijaba> QUESTION: kvm is a standard'ish ubuntu VM I take it?
<nijaba> yes, it is the official virtualization technology since hardy
<nijaba> have a look at http://www.ubuntu.com/products/whatisubuntu/serveredition/technologies/virtualization
<nijaba> For additional reference, apart for the --help, I would like to point you to a tutorial I have writen on using VMBuilder which is available at https://help.ubuntu.com/community/JeOSVMBuilder
<nijaba> Hope this was a useful session for most of you and feel free to drop by #ubuntu-virt at any time if you have additional questions or just want to say hi :)
<Quintasan> Thanks nijaba, this is very helpful :)
<jdstrand> thanks nijaba!
<nijaba> Thanks for attending and asking very good questions everyone :)
<thekorn> thanks nijaba
<nijaba> I'm glad I could answer most of them
<mnemo> nijaba: hey, I started run.sh and I get to the prompt... but what is the password to my new VM ??
<nijaba> mnemo: by default user and password are ubuntu
<mnemo> sweet
<mnemo> thanks
<nijaba> of course there is a command line option to change that too :)
<mnemo> great session btw!! :)
#ubuntu-classroom 2009-01-22
<Guest40234> hi
<Guest40234> all
<dholbach> So who's here for Ubuntu Developer Week and who's excited about it? :-)
<cool2k> Me!!!
<dholbach> come on everybody! :)
<dholbach> who else.... don't be shy :)
 * MrKanister clapps
 * Ireyon too
<dholbach> Who did NOT tell their friends to come yet? :-)
<dholbach> Do it now, you still have 5 minutes before ara kicks it off! :-)
<ara> dholbach: discreet way to ping me ;-)
<dholbach> ara: I knew you'd be around, I wasn't really worried :)
<dholbach> alrightie... we have Ara Pulido here today, who's going to talk about "Automated Desktop Testing"
<dholbach> it'll take just an hour for you to realise that it's the best thing since sliced bread
<duanedesign> :)
<dholbach> if you have questions, please ASK :-)
<dholbach> but please ask in #ubuntu-classroom-chat prefixed with QUESTION
<dholbach> ie: QUESTION: ara: what is your favourite band?
<ara> and I would say; dholbach: Saint Etienne
<dholbach> I'm sure you're going to have a lot of fun here, so let's have an applause for Ara!
 * Ireyon claps
<blah> claps
<dholbach> (and you still have one minute to grab a coffee, tea or something stronger before we kick off!)
 * [srx] claps
<dholbach> YAY! :-)
<dholbach> enjoy
<ara> OK, it is 4pm UTC, I think that we can start with the session
<ara> thanks dholbach and everybody else for the warm welcome
<ara> as dholbach just said, I am going to talk about Automated Desktop Testing, but first let me tell you a secret
<ara> a secret very few developers know
<ara> it will change your life as you know it
<ara> ok, here it is:
<ara> testing software is *FUN*
<ara> not boring, not tedious, but FUN
<ara> my name is Ara and I am part of the Ubuntu QA Team
<ara> (https://wiki.ubuntu.com/QATeam/)
<ara> as part of my duties in the team I have started the Ubuntu Desktop Testing project
<ara> (http://launchpad.net/ubuntu-desktop-testing)
<ara> The project aims to create a framework to run & write automated desktop tests for Ubuntu
<ara> To be able to try some of the tools that I am going to present, you will need to have installed 'bzr' in your computers. If you don't have it, you can install it easly:
<ara> $ sudo apt-get install bzr
<ara> Also, if you don't understand something or you think I am going too fast, please, please, please, stop me at anytime (asking in the -chat room)
<ara> Ape3000: QUESTION: Should I use my Intrepid desktop or Jaunty virtualbox machine?
<ara> Ape3000: Both of them should work
<ara> Let's start with a brief introduction to desktop automated testing, just in case you don't know what this session is about
<ara> With automated desktop testing we name all the tests that runs directly against the user interface (UI), just like a normal user would do
<ara> a script will run and you will start to see buttons clicking, menus poping up and down and things happening, automagically
<ara> Ireyon: does that answer your question?
<Ireyon> yes it does, thanks
<ara> In Ubuntu we do this by accessing the GNOME accessibility layer (AT-SPI)
<ara> This layer was originally written for assistive technologies, like screen readers and such
<ara> technologies to make computers accessible to people with disabilities
<ara> but it turned out that it works pretty well for desktop automated testing
<ara> that is why some testing frameworks use the AT-SPI layer to get access to the UI objects, get some information from them, and get them to do things (push buttons, write text, etc.).
<ara> if you want to be able to run the examples during the session you would need to enable the assistive technologies
<ara> and you must use GNOME, as the layer does not work for KDE
<ara> Here they are some instructions on how to do it: https://wiki.ubuntu.com/Testing/Automation/Desktop/#How%20to%20run%20the%20tests
<ara> basically is checking the box in the dialog in System->Preferences->Assistive Technologies
<ara> the bad bad bad news is that you would need to restart your gnome session if you want the changes to be applied (if you are using a virtual machine for the examples this is not as bad news)
<ara> weboide: QUESTION: Can those tests make the machine become unstable/frozen/broken?
<ara> weboide: depending on what you do with your tests :-) normally they do no harm, but the at-spi layer still have some bugs, so you may spot some of thems
<ara> For the Ubuntu Desktop Testing project we are using LDTP (http://ldtp.freedesktop.org/), that has a python library for writing tests. This is one of those automated desktop testing frameworks that use the at-spi layer
<ara> If you want to run the examples in this session, please, install LDTP:
<ara> $ sudo apt-get install python-ldtp ldtp
<ara> ia: QUESTION: does exist some log system in this tests, so user/developer after testing could see, what goes well and what goes wrong?
<ara> ia: sure! you don't have to watch your tests as they are running. You can go and do your things and come back to check the results. We will be seeing that later on
<ara> When using this library you have to use some specific information from the UI in order to recognize the objects (window titles, object hierarchy, etc)
<ara> I.e. if you want to click a button in the Gedit window, first you will need to recognize the window, then obtain its children, and finally click the selected button.
<ara> If we add all that information to the script and then the UI changes, we would need to change all the scripts to match the new UI changes.
<ara> One of the main objectives that we are trying when we create a testing framework for Ubuntu desktop is to avoid scripts to know anything about the objects behind them.
<ara> Definitively, these objects will still require to be maintained, but the logic of the scripts will remain the same.
<ara> One example. Letâs imagine that we had a regression test suite for Gedit that will edit, modify, open and save several files.
<ara> If any of the Gedit features changes its UI, only the Gedit class will be modified. All the scripts will still be valid.
<ara> The other good thing about it is that people willing to add new test cases to ubuntu, can do it easily
<ara> they don't need to know much about ap-spi or LDTP, just some basic python scripting will do
<ara> If you're running Intrepid or Hardy you can get the Ubuntu Desktop Testing library as:
<ara> $ bzr branch lp:ubuntu-desktop-testing/intrepid  ubuntu-desktop-testing
<ara> If, by any chance, you're running Jaunty, the trunk fixes some differences in this release:
<ara> $ bzr branch lp:ubuntu-desktop-testing
<ara> If you find any bugs in the UDT library itself, please, report them in the Launchpad project:
<ara> https://launchpad.net/ubuntu-desktop-testing
<ara> don't report them to the Ubuntu project :-)
<ara> The Library API is up-to-date and it is available at: http://people.ubuntu.com/~ara/ubuntu-desktop-testing/doc/
<ara> Right now we have classes for Gedit, Update Manager and PolicyKit and Seahorse. We also have a generic Application class to gather common behaviour from GNOME applications.
<ara> Let's see an example on the difference on writing tests for ubuntu using the testing library and using only LDTP
<ara> so you can understand better what I mean with "basic python scripting"
<ara> This is the link to the code using the testing library: https://wiki.ubuntu.com/Testing/Automation/Desktop/HowToUseTestingLibrary/Comparison/UsingDesktopTestingLibrary
<ara> what would you say this code does?
<ara> weboide, Ireyon: yes. that's it
<ara> the code is more or less self explanatory
<ara> (and commented, just in case...)
<ara> Now the code using pure LDTP code, with out the Ubuntu Desktop testing library:
<ara> https://wiki.ubuntu.com/Testing/Automation/Desktop/HowToUseTestingLibrary/Comparison/PureLDTPCode
<ara> It is not very very complicated, but the code is becoming less clear, and more difficult to understand for new people
<ara> Also the desktop testing library include error checking code that I have removed from this example to make it clearer
<ara> not to say that using at-spi code directly would make things even harder...
<ara> Ok, let's try a small example. Remember that you will need to have the Assistive Technologies enabled to try this at home :-)
<ara> if you don't have them enabled, you can log out and come back (I will answer questions in the next 5min if people decide this) or wait and try it when the session finishes
<ara> what do you guys prefer?
<ara> Ireyon:  I don't get the libs installed
<ara> Ireyon: what libs?
<Ireyon> the python libs
<ara> Ireyon: what error do you get?
<ara> ok, we will go on
<ara> The example that we are going to run will open gedit, will write some characters in there, will save the file, and will compare it to another one to check for pass/fail. Be sure to close all your gedit sessions before running this test, to avoid messing up your documents.
<ara> Let the magic start:
<ara> $ cd ubuntu-desktop-testing
<ara> $ ../bin/ubuntu-desktop-test -a gedit
<ara> change that last one by
<ara> $ ./bin/ubuntu-desktop-test -a gedit
<ara> sorry
<ara> OK, once that your test has finished, you can grab the logs
<ara> ia: ^
<ara> the logs can be found at ~/.ubuntu-desktop-tests/gedit
<ara> you will find and XML log (in case you want to transform it to something else)
<ara> and a nice HTML report, in case you want to publish that somewhere
<ara> Ireyon: LdtpExecutionError: "Mmm, something went wrong when saving the current document:'The mnuSave menu was not found.'"
<ara> Ireyon: did you close the window? before the test finished?
<ara> Ape3000:  QUESTION: Would it be possible to create desktop macros for general use with this?
<ara> Ape3000: yes, you could. I don't think that it is the best library for macros, though, but yes, you could use it for that
<ara> one of the classic questions that people ask is, can I use this to test Fedora/OpenSuSE/Debian/OtherDistroOfMyChoice...
<ara> the answer is yes
<ara> and the good thing is that it is the perfect timing if you want to join a brand new team
<ara> The GNOME people started to be really interested in the project, so we decided to create a GNOME desktop testing project
<ara> (https://launchpad.net/gnome-desktop-testing)
<ara> The code is now in LP, but it will move eventually to GNOME SVN servers.
<ara> It includes the things in ubuntu-desktop-testing that can be apply to all the GNOME environments
<ara> i.e. it does not include UpdateManager class, because that it is something Ubuntu exclusive
<ara> If you'd like to contribute and be part of this motivating new project, go ahead and show your love at http://live.gnome.org/DesktopTesting
<ara> Ape3000: QUESTION: So what are the best things with using this kind of automation?
<ara> Ape3000: regression testing, mainly. If something breaks between releases, those tests can be useful to catch this kind of regressions
<ara> This technology can be used also to test Xubuntu
<ara> so, if you are using Xubuntu and want to contribute, that would be great
<ara> right now we are only giving coverage to Ubuntu (GNOME desktop)
<ara> Ok, only ten minutes left, let's wrap up
<ara> Ape3000: QUESTION: Do you have any example bugs / cases where automated desktop testing was helping greatly?
<ara> Ape3000: The project is still very young, but we helped solving some accessibility bugs, while creating our tests
<ara> Ape3000: a list https://wiki.ubuntu.com/Testing/Automation/AtspiBlockers
<ara> You can contribute easily, with very little programming knowledge, to the automated testing efforts by writing new test scripts using the testing library. A How-To guide is available at https://wiki.ubuntu.com/Testing/Automation/Desktop/HowToUseTestingLibrary
<ara> Also, if you have more advanced python knowledge and would like to give a try on extending the desktop library that would also be great
<ara> Please, apply your changes in your branch and use "Merge proposal" feature in Launchpad!
<ara> Any other questions?
<ara> counting down...
<ara> 5...
<ara> 4...
<ara> 3...
<ara> 2...
<ara> 1...
<ara> ...
<ara> loic-m:  QUESTION: Is it possible to use this for benchmarking desktop tasks (i.e. Ã  la Phoronix)?
<ara> (with the bell)
<ara> loic-m: Yes. It is not specifically a benchmarking framework
<ara> loic-m: but times are always taken between tests
<ara> loic-m: and it is pure python code, so you can use any python library of your choice
<ara> no more questions?
<ara> [srx]:  QUESTION: can we print like this?
<ara> [srx]: I don't understand the questions, sorry
<ara> One more thing. These tests work only (for the moment) if you have your desktop in English :-)
<ara> Ireyon: ^
<ara>  QUESTION: is this only for Gnome applications, or will it work for qt/tcl-tk/etc?
<ara> loic-m, StyXman: KDE is working on having a better accessibility layer. but for the moment these tests only work for GNOME
<iamarockstar> i guys
<ara> Ireyon: QUESTION: Is there any chance to get it working with any language?
<iamarockstar> what is this room for i am new here
<ara> Ireyon: right now we are starting giving coverage to English desktop. Maybe in the future...
<ara> OK. No time for more. If you have any questions you can ping me in #ubuntu-testing channel or at my email address <ara AT ubuntu.com>
<ara> Thanks all for coming! I hope you all enjoyed the session!
 * Ireyon claps again
<charlie-tca> ara: Great job! Thanks you.
<somaunn> iamarockstar: for sharing and learning more about ubuntu "it's a classroom"
<weboide> thank you ara, that was awesome :)
<iamarockstar> somaunn:  then what is the diff betwween this and nirmal ubuntu irc room?is this for devs?
<Ape3000> iamarockstar: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<silwol> iamarockstar: for devs and those who are interested in becoming one
<cool2k> thanks!! great session!!
<iamarockstar> silwol: ok thx
<somaunn> iamarockstar:follow the link given by Ape3000 for more info
<schmiedc> somaunn: https://wiki.ubuntu.com/Classroom
 * repete looks at the clock...
<repete> Can we start the next session?
<repete> Ok, in the absence of a moderator, we will :-)
<repete> Hi and welcome to the Ubuntu Netbook Remix session for Ubuntu Developer Week.  I am Pete Goodall, the product manager for the OEM Services group at Canonical.  And joining me are Neil Patel and Bill Filler, also with OEM Services, and the lead developers for the Ubuntu Netbook Remix project.
<repete> We did a session on Ubuntu Netbook Remix (UNR) back in November for Ubuntu Open Week, so this will be an update on UNR followed by a question and answer session.
<repete> Neil, Bill and I work for the OEM Services group at Canonical, and we are the group responsible for customising Ubuntu for device manufacturers.  By "customising" we mean making sure that all the hardware components work, integrating custom interfaces (ala Dell and HP) and providing on-going maintenance.
<repete> So you know what is coming, here is a quick agenda for this hour:  1) Installing UNR  2) Developing for UNR and netbooks in general 3) Question and answer session.
<repete> OK, so lets start with installing UNR.  Hopefully many of you are already running UNR on your laptop or netbook, but if you are not you can find information on how to install UNR at the UNR wiki - http://wiki.ubuntu.com/UNR.
<repete> To date, Ubuntu Netbook Remix has been an addon to Ubuntu 8.04 and Ubuntu 8.10.  Installing the UNR interface involved either adding the PPA to your software sources list and twiddling configuration bits, or running the UNR installer which overwrites your entire hard drive.
<repete> However, starting with Ubuntu 9.04 (Jaunty) you will have two new and improved ways to install UNR on your existing device.  If you don't already have Ubuntu or you just want to do a clean install you will be able to download a Live CD image just like you can with Ubuntu Desktop Edition and go through the normal installer.  That means you can choose your own partitioning or just use the Live CD to see what UNR is all about.
<repete> We are still working out the exact way it will be done, but the second option is for those that have an existing Ubuntu 9.04 system and want to install the UNR interface as well.  You will no longer have to add a PPA to your software sources list because UNR will be in the official Ubuntu software repositories.  Therefore you can just install the UNR interface with apt-get, aptitude, or synaptic.  This may or may not involve tw
<repete> Before I move on to developing for UNR, does anyone have questions about installing?
<njpatel> QUESTION: Should it work with virtualbox?
<njpatel> No, unfortunately, as there will not be OpenGL acceleration available for the launcher
<StyXman> repete: previous-to-last paste got truncated at 'This may or may not involve tw...'
<repete> ah... thx
<njpatel> so the launcher will run with software accel., which is slow and a bit buggy
<repete> This may or may not involve twiddling configuration bits, but we're trying to make it easy. :-)
<njpatel> QUESTION: Will the LIVECD (iso) image have support for many common netbooks? ie. corrcet driver for eeepc wifi?
<repete> As much as possible we try to support all the hardware
<repete> To your specific question, the wireless should work just fine in the eeePC
<repete> Many people use UNR on a eeePC
<njpatel> there are always device-dependant quirks (just like with ubuntu desktop), which will need tweaking after install
<njpatel>  QUESTION: Do you also have the ordinary Ubuntu interface with the netbook remix?
<bfiller> yes, you have the option to switch to "classic" Ubuntu interface
<njpatel> Yep, we have a nifty utility called Desktop Switcher, which allows you to switch between netbook-mode and classic-mode without losing your customisations
<njpatel> this was not available for intrepid, but will be for jaunty
<repete> You can find the Desktop Switcher in Preferences
<repete> OK. Next let's talk about developing for Ubuntu Netbook Remix.  If you are interested in contributing to the development of the UNR interface and components there a couple of things you need to know.  First, the UNR launcher (netbook-launcher) is written using the Clutter (http://clutter-project.org/) toolkit.  If you are not already familiar with Clutter it is basically a toolkit that simplifies common OpenGL and OpenGL ES ope
<repete> The second consideration is that we need to keep things simple.  That is a core value of the UNR project.  At Canonical, we work with OEMs and ODMs to create devices that are sold to consumers.  "Consumers" may be people whom are not techies and just want things to be easy to use.
<repete> They don't want a spinny cube, they don't want a thousand functions available at a single click and they don't want to open a terminal from any place in the system.  :-)
<repete> I'm conscious that my long posts are being truncated so I'll make them shorter
<repete>  If you are not already familiar with Clutter it is basically a toolkit that simplifies common OpenGL and OpenGL ES operations and allows you to create rich, annimated user interfaces.  If you are already familiar with gtk+ and gobject, Clutter should not be hard to learn.
<repete> Since the inception of this project we have received invaluable feedback from the Ubuntu user and developer community, and this has been a key advantage of UNR.
<repete> If the project leads reject your feature as "out of scope" please don't be offended.  We are just trying to keep things simple.
<repete> If you really want to implement a more advanced or crazy feature all the code for the UNR launcher and the various components is in Launchpad.  From there you can create your own branch.
<repete> Finally, if you already maintain an application in Ubuntu or are considering creating an application for UNR please consider the available verticle resolution.
<repete> Last year most netbooks had a resolution of 1024 x 600.  This year 1024 x 576 is the new black.
<repete> Canonical has worked to fix some applications such the Evolution account dialog, Pidgin and various GNOME utilities.
<repete> Also, you should be mindful of the emergence of touch.  Touch will be more and more prevalent and application developers should keep this in mind.
<repete> Bigger icons, simpler interfaces
<njpatel> Not too reliant on right-click, menu-bars etc
<repete> Ok.  let's field some questions about developing for UNR.
<njpatel> thats ok
<njpatel> <creek23> " and various GNOME utilities." --- ?!? o_O
<njpatel>  I thought GNOME was not used in UNR?
<njpatel> UNR is based on Gnome, but we have a different UI for launching and switching applications
<bfiller> gnome-panel is used, but configured differently by default in UNR
<repete> The reason UNR is called a "remix" is because it is based on Ubuntu Desktop Edition, but adds some components and changes some configuration bits
<njpatel> QUESTION: I submitted 2 bugs a while ago for UNR, however it took around a month for them to get seen, are you making steps to shorten this time?
<njpatel> the bug situation is almost definitely my fault, and yes it is getting better
<bfiller> our QA team is now formally involved in initially confirming/triaging bugs, so the initial response time should be much faster
<bfiller> it is a goal of ours for sure to improve this process
<bfiller> QUESTION: some graphic effects (ex, spinning icon during opening app) doesn't looks correct, if compiz enabled (i think, it's becase exist some confilcts in graphic between compiz and clutter). does UNR team plan to include correct compiz support?
<njpatel> The intel video drivers (on most netbooks), do not support displaying Compiz and a GL window (like the launcher) at the same time
<njpatel> you can get some more information here https://bugs.edge.launchpad.net/netbook-remix-launcher/+bug/237731
<njpatel> This is a bug that's fixed in xorg bugzilla and will hopefully be available fr testing in Jaunty
<njpatel> QUESTION: Are there plans to support LXDE?
<repete> We have looked at LXDE as a base, but the GNOME environment is a well developed environment
<bfiller>  QUESTION: What are the goals wrt Memory footprint as well as boot time for UNR? And how have you been striving to meet them?
<repete> by that I mean that GNOME has things such as advanced power management utilities, accessibility
<bfiller> boot time 30 secs or less, RAM 1GB, HDD/SSD 4GB minimum
<repete> Boot time is a major focus of Ubuntu 9.04, so there should be some big improvements when UNR is released on Ubuntu 9.04
<bfiller> we test those configurations, boot time is the biggest challenge and we spent much time trying to reduce boot time, Jaunty should help in this area
<bfiller> QUESTION: why opengl? why not plain gtk?
<bfiller> it's sexier :)
<njpatel> We wanted a nicer user experience with the launcher, using animations, fades etc to enhance it. We are currently quite tight on which animations we use, but we plan to start experimenting more over the next few months
<repete> QUESTION: If most people say GNOME is bloated (in contrast to other desktop environments); And UNR team is trying to make thing light and simple, why not choose other like Xfice?
<repete> This is similar to the LXDE answer
<repete> We have looked at XFCE, and we actually have one of the core devs on staff, but the GNOME environment is still better developed for our purposes
<repete> Several years ago, GNOME was stripped down for the 2.0 release
<repete> ever since them they have been building up capabilities as needed.  We believe it is the best environment for the job.
<repete> s/them/then/
<repete> Anymore questions?
<njpatel>  QUESTION: do all the development made for OEM appear in the repositories, i.e. 1. hw drivers 2. hw and software tweaks 3. interface configuration ?
<njpatel> Yes. The user interface components that make up the netbook remix are all developed in launchpad and available from there
<njpatel> the patches to desktop apps to make them fit in the smallr space are being reviewed and merged into Ubuntu main and we are working with the upstreams to get them integrated
<repete> Where appropriate we push the hardware drivers upstream as well
<repete> As part of the OEM engagement we require close collaboration with the component manufacturers
<njpatel> So all hw should function the same, wether from the OEM install or if one wants to reinstall from scratch using for example a (sometimes newer) LiveCD?
<repete> Well with our customers they are using hardware that may not actually be on the market yet :-)
<repete> As soon as the product is released we work to get those drivers in upstream, but that doesn't mean we can necessarily get it in Ubuntu 8.04
<bfiller> there also may be custom work we've done for an OEM is newer than the latest release of Ubuntu
<repete> because that is a released product and we cannot change that kernel too much
<bfiller> we work to ensure mods which are made to the kernel, drivers, apps, etc.. make it into the next Ubuntu release where applicable
<njpatel> Any more questions? (We've moved onto Q&A now, if it wasn't obvious ;)
<bfiller> QUESTION: I understand ten that the Ubuntu Dell is shipping is the same as the Ubuntu I can install via the Canonical CD? or are there differences?
<bfiller> there are differences, the publicly available UNR from Canonical is completely free, open-source components and standard UNR launcher
<bfiller> Dell and other OEM are able to ship applications which require a license (i.e Adobe Reader, Skype, etc..) where the free version doesn't have these components by default
<bfiller> Dell's launcher is also customized, but it is open source
<bfiller> so there are differences, yes
<repete> QUESTION: has any OEM asked for non GPL/LGPL development (f.e. hw drivers)?
<bfiller> it's the same baseline of code though
<repete> sorry, bfiller :-)
<bfiller> I'm done :)
<repete> ok.  So to answer the non-GPL question...
<repete> Canonical does not do any non open source development work on the client
<repete> Anything that is not open source is done by a third party
<repete> Wherever possible we always encourage our customers to use and contribute to open source software
<bfiller> QUESTION: difference bw OEM install and Ubuntu repos means if i buy an OEM with UNR, the only way to be sure hw will be "perfectly" supported is to stick with an "old" version of Ubuntu?
<bfiller> I think you are referring to the fact OEM version of UNR is based on 8.04
<bfiller> updates are released to the OEM repository, but is based on 8.04
<repete> With a device that is sold in retail it is not a good idea to change the underlying OS every six months.  Ubuntu 8.04 is a long term support release (LTS), so that mean we will support it (and products based on it) for up to three years.
<bfiller> so yes, for a fully supported product released by the OEM you should stick with their install and update as appropriate
<bfiller> it doesn't mean the latest and greatest free version won't run on it, but it may not be specifically tested and supported on that particular device
<njpatel>  QUESTION: how can users check that a netbook that comes with UNR is entirely supported by OS drivers (so no lock-in), and to make it easier is there a logo Canonical is advising OEM to stick when it's the case?
<repete> As much as possible drivers from an OEM install will make it into the next version of Ubuntu.
<repete> If you want to test your hardware, you can (as of Ubuntu 9.04) use a Live CD.
<njpatel> any other questions?
<njpatel> QUESTION: AFAIU, Intel IGP used in most netbooks aren't open-source (and the one they plan to use for their next Atom platform, based on PowerVR tech, isn't either), are you in discussions with Intel to improve the situation?
<repete> loic-m is obviously very interest in UNR :-D
<repete> Intel is a close partner of Canonical.  As I mentioned earlier, we *always* advocate for the use of open source software.  That being said, it is entirely up to Intel how the license drivers.
<bfiller> QUESTION: Has Canonical tied up with other company (aside from Dell) to release Ubuntu as netbooks default OS?
<njpatel> Also, the IGP cipset isn't the one that's being used the most. Most of the netbooks have 954GMA, which has very good drivers
<repete> There are two other vendors that have released products based on Ubuntu
<repete> sorry, three :-)
<repete> No, two...
<repete> Toshiba NB100 and the Sylvania G Netbook Meso
<repete> both running UNR
<creek23> woohoo!
<repete> of course there is lots of interest in products based on UNR, so look out for more to be released this year
<repete> Ok, we are out of time, but thank you for attending.
<njpatel> thanks everyone!
<bfiller> thank you
<loic-m> njpatel, repete, bfiller: thanks a lot
<creek23> thank you!
 * Keybuk wanders in and fiddles with the projector
<Keybuk> I guess that I just get started
<Keybuk> so, Hello
<Keybuk> I'm Scott James Remnant, and I'll be having a bit of a chat about Boot Performance
<Keybuk> I've not done one of these before, but I'll do my best
<CrownAmbassador> Hi guys. Do you think I can list these 2 bugreports together? https://bugs.launchpad.net/ubuntu/+bug/320105 and https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/319553 the last one happens to be mine.
<CrownAmbassador> sorry!
<CrownAmbassador> wrong room
<Keybuk> I'll try and answer any questions as I go, if they're relevant to what i'm talking about
<Keybuk> and there should be plenty of time for general questions at the end
<Keybuk> ok, so
<Keybuk> boot performance, it's all about making Ubuntu useful to its users quicker
<Keybuk> one of the first things is deciding exactly when you start and stop the clock
<Keybuk> from a user's point of view, the machine starts booting when they press the power button
<Keybuk> and stops booting when things stop moving around on the screen, and the machine stops making a loud disk noise
<Keybuk> which is usually when they feel it's safe to try starting firefox
<Keybuk> unfortunately us geeks know a bit more about what's going on
<Keybuk> and we try and play games
<Keybuk> for a long time, distributions only measured how long it took them to get to the login screen
<Keybuk> and sped that up by starting lots of things after the login screen was up
<Keybuk> (slowing down the login process)
<Keybuk> and now there's a phase of starting things after the basic desktop is visible
<Keybuk> and you hear things like "can we not start that 30s after boot?"
<Keybuk> which is just doing the same again - it makes it slower for the user to use their machine
<Keybuk> Windows tries many of these tracks
<Keybuk> and years of experience has taught users not to touch it while things look like they're still loading
<Keybuk> but then Windows has bugs like it closing the start menu on you ;)
<Keybuk> and Ubuntu doesn't have any bugs like that
<Keybuk> <fx: loud coughing noises>
<creek23> :D
<Keybuk> so, really, there's three distinct phases of a boot
<Keybuk> you press the power button, and the hardware starts up and initialises (BIOS, etc.)
<Keybuk> that hands over to our bootloader, and we start up the core operating system
<Keybuk> (kernel, etc.)
<Keybuk> and then we start the X server, and all of your desktop components and applets
<Keybuk> now, we can't do anything about the first one
<Keybuk> that's firmly in the hands of the hardware and chip manufacturers
<Keybuk> but the last two are definitely under our control
<Keybuk> so that's what we time
<Keybuk> but be sure when you hear someone talking about a 30s boot, that they tell you what they mean by "Boot"
<Keybuk> my times start from the boot loader, and end when we have a full desktop up
<Keybuk> I'm hopeful that in the future, as we get better relationships with hardware partners, we'll be able to work closely on the hardware initialisation with them and start the time at the power button where it should be!
<Keybuk> so
<Keybuk> you may have noticed that boot performance has gotten a bit slower over the past 20 years
<Keybuk> my modern, quad-core, all singing and dancing machine takes over a minute to boot
<Keybuk> whereas the ZX Spectrum I had when I was 5 pretty much booted immediately
<Keybuk> well, not quite it had a splash screen ;)  -- the screen went white, black, and then white again <g>
<Keybuk> of course, it's not really fair
<Keybuk> those machines had fixed hardware, their Operating System code was in ROM, and they just executed it
<Keybuk> nowadays, not only do machines vastly differ in hardware, even from the same manufacturer
<Keybuk> but users are able to add and remove hardware on the fly
<Keybuk> and will often do so during boot and wonder why things go wrong ;)
<Keybuk> and you can actually upgrade your operating system without a soldering iron
<Keybuk> (someone who had a BBC Micro is going to point out that you didn't need a soldering iron because the chip was designed to come out fairly easily <g>)
<Keybuk> so yes, we don't boot as fast as home machines of the 80s
<Keybuk> but that's because they didn't really boot at all
<Keybuk> and you can't plug a USB printer into a C64
<Keybuk> so, I'm going to let you into a little secret
<Keybuk> you can make your machine instantly boot faster
<Keybuk> (or slower, if you're so inclined)
<Keybuk> all it takes is changing one thing
<Keybuk> the disk
<Keybuk> your hard drive is by far the slowest part of your computer
<Keybuk> if one person shows you a boot char on a quad
<Keybuk> oops
<Keybuk> if one person shows you a boot chart on a quad-core machine
<Keybuk> and it's faster than your little laptop
<Keybuk> it's not because of the cores, or even the blue leds on the side
<Keybuk> it's because it has a much faster disk
<Keybuk> and, unfortunately
<Keybuk> the disk is where the operating system code lives
<Keybuk> it's where all your configuration lives
<Keybuk> boot is all about getting things from the disk and into memory
<Keybuk> (and executing them on the processor)
<Keybuk> so, to speed up the boot we need to either:
<Keybuk>  1. load less from the disk
<Keybuk>  2. be more efficient about our use of the disk
<Keybuk> Loading less is the easy one
<Keybuk> We take a good look at everything we do in the boot sequence, and we start being ruthless about it
<Keybuk> How much of this stuff do we _really_ need to do on boot?
<Keybuk> A good example here is a change we made quite early on in Ubuntu compared to Debian
<Keybuk> we used to generate the database of available kernel modules on every single boot
<Keybuk> this involves reading a lot of data, doing some CPU work, and writing it out to disk before using it
<Keybuk> we don't do that anymore
<Keybuk> now we regenerate that database only when you install a new kernel, or a new module package
<Keybuk> and we do it in the package's maintainer scripts so it happens while you're running apt
<Keybuk> it turns out that a lot of things done on boot could really be done during upgrades or software installations
<Keybuk> another similar change is looking at whether services could be started on demand
<Keybuk> do we need to start the entire printing subsystem until the user actually tries to print something?
<Keybuk> do we need to start the bluetooth stack that early?
<Keybuk> these are just examples of questions which haven't been answered yet, but that's the kind of thing we look at here
<Keybuk> can we cut down on the amount of data we load
<Keybuk> And secondly can we be more efficient about booting
<Keybuk> this is kinda the same thing, but from a different point of view
<Keybuk> oliver_g_ asked a question about compression
<Keybuk> and it's a good example
<Keybuk> in many cases, if there's a large amount of data to be read off the disk, it's better to have that data compressed
<Keybuk> and decompress it in memory
<Keybuk> the cost of decompression is frequently less than the reduction in disk time
<Keybuk> and he's absolutely right that the prime target here is translations ;)
<Keybuk> if you read 1,000 files on boot, that's slower than reading one single file with the same data
<Keybuk> it might be easier to maintain your software with 1,000 xml files describing its configuration
<Keybuk> but if you could pre-process that at build time to produce a single, compressed or binary file, with the data in it - you'd be amazed at the different
<Keybuk> <Mirv> QUESTION: What chance of having an ugly, but very effective cache which includes collected files in a sequential order (200MB or so) that takes 2s to read, and includes every file needed for the whole boot? Prefetch had something experimental?
<Keybuk> Mirv: ls /etc/readahead/boot
<Keybuk> we've had such a thing for a number of releases now ;)
<Keybuk> So, that's the "how" part
<Keybuk> Do less and be more efficient
<Keybuk> What approach do we take?
<Keybuk> There's two schools of thought on this too
<Keybuk> The first one is that you start off with your last release, and you sit down and examine it
<Keybuk> you see what you can cut out, you see what you can improve, and make lots of incremental fixes
<Keybuk> hopefully at the end of it, your boot will be a little bit faster
<Keybuk> You can tell who's doing this, they say things like "the new version boots 10s faster than the old"
<Keybuk> The second school of thought is that you start from scratch, and set yourself a target boot time from the very start
<Keybuk> you say "we're going to boot in 30s"
<Keybuk> you then split that up, and work out how much time you're going to give to each piece
<Keybuk> "15s for the desktop, 15s for the core"
<Keybuk> and split it up again
<Keybuk> "5s for the kernel, 5s for basic stuff, 5s for services"
<Keybuk> and at the end of it you have a budget
<Keybuk> and you start at the beginning, and you work on one piece until you get it in under budget
<Keybuk> and then you move on to the next piece
<Keybuk> The second school gives much better results
<Keybuk> but the first school means you can still release your distro if you don't make it
<Keybuk> We're still following the first method, because we have a LOT of low hanging fruit
<Keybuk> We already know a lot of the bugs and problems with our boot sequence, and we have more than enough work just fixing those for the next release or two
<Keybuk> we're still at the point where our boot is over a minute
<Keybuk> and we're looking at detail of multiple seconds or more
<Keybuk> so we've got plenty of work to do ;)
<Keybuk> At some point, we'll have reached the fastest we can go with this method
<Keybuk> all the fixes and bugs we know about will be gone
<Keybuk> and it'll be as fast as we can get it
<Keybuk> (I reckon this is around the 30s mark)
<Keybuk> at that point, we'd be looking at switching to the second method
<Keybuk> we might spend an entire release or two just making the kernel come up in 1s instead of 2.5s to get it under budget
<Keybuk> So how do you know how fast your computer is booting?
<Keybuk> And how do you work out where you can speed it up
<Keybuk> There's a piece of software in the archive called "bootchart"
<Keybuk> it's really easy
<Keybuk> apt-get install bootchart
<Keybuk> and every time you reboot, you'll get a PNG file in /var/log/bootchart
<Keybuk> it won't include your login and suchforth, but you can abuse it to chart everything
<Keybuk> if you remove the /etc/rc2.d/S99stop-bootchart symlink, and remember to run "/etc/init.d/stop-bootchart start" after you login
<Keybuk> you can have the whole thing
<Keybuk> (and then use gimp to cut the right hand side off that you don't want)
<Keybuk> <Ireyon> doesn't bootchart slow down the boot process, too? :D
<Keybuk> yes.
<Keybuk> but that's ok
<Keybuk> bootchart is for when you're looking at what your boot does
<Keybuk> and you make some changes
<Keybuk> and compare the before and after
<Keybuk> it's not something you'd leave installed all the time
<Keybuk> so you have bootchart
<Keybuk> you also need a machine to run it on
<Keybuk> comparing bootcharts produced from two different installations is rarely  useful
<Keybuk> comparing bootcharts produced from two different machines is almost never useful
<Keybuk> we're using a standard machine for our work
<Keybuk> which means we can compare bootcharts between ourselves
<Keybuk> the machine we picked was a Dell Mini 9
<Keybuk> it's got a few features we wanted
<Keybuk> it has the slower Intel Atom processor, which means that things tend to show up better
<Keybuk> and it has an SSD disk
<Keybuk> also boot speed is a hot topic in the netbook space in general
<Keybuk> and most importantly, it's a standard off-the-shelf piece of equipment
<Keybuk> anyone who has one is pretty much guaranteed to have an identical piece of kit to everyone else
<Keybuk> so for the last bit, I'd like to talk a bit about how we're doing
<Keybuk> and what's next ;)
<Keybuk> so I have some boot charts to show you
<Keybuk> http://people.ubuntu.com/~scott/boot-performance/mini9_factory_hardy-20081118-1_cropped.png
<Keybuk> this is from the Mini 9 with the factory-installed UNR image
<Keybuk> the guys in Lexington did some amazing work, the whole desktop comes up in 36s
<Keybuk> (or even 35s
<Keybuk> so how does Intrepid compare?
<Keybuk> http://people.ubuntu.com/~scott/boot-performance/mini9_intrepid-20081222-1_cropped.png
<Keybuk> Not well.
<Keybuk> a default Intrepid install is 71s!
<Keybuk> twice as long
<Keybuk> this is because the UNR image is extremely customised for its hardware
<Keybuk> whereas the Intrepid image is generic, and portable to any Intel hardware
<Keybuk> and, most importantly, any user configuration
<Keybuk> but we've been working on that
<Keybuk> here's one for Jaunty with some of the improvements we've made
<Keybuk> http://people.ubuntu.com/~scott/boot-performance/mini9_jaunty-20090115-2_cropped.png
<Keybuk> down to 53s
<Keybuk> and that's still a generic image
<Keybuk> you should be able to see a similar improvement on any machine
<Keybuk> there's lots of interesting things to read off these charts
<Keybuk> I'll cover the hilights
<Keybuk> the top graph is useful
<Keybuk> it tells us how much of the CPU we're using
<Keybuk> (or at least how much time we're not in userspace)
<Keybuk> we rarely max out the CPU during boot
<Keybuk> so paradoxically, computing data on boot is faster than reading a cache off disk - assuming you don't need the disk for computation
<Keybuk> that's why compression can help
<Keybuk> but note that it's not as if the CPU is idle
<Keybuk> so just compressing the entire disk would be a net loss
<Keybuk> Red in that top graph is *BAD*
<Keybuk> it means we're waiting for the disk
<Keybuk> the second red graph is disk utilisation
<Keybuk> there's some interesting spikes
<Keybuk> the first one is the readahead process, where we read the data in from the disk that we think we use
<Keybuk> it goes all spiky after X starts because we don't read that stuff in yet
<Keybuk> there's a cute spike around 13s - no idea what that one is
<Keybuk> (the processes in the chart go red if they're using disk too)
<Keybuk> the larger one around 18s seems to be the rc script, that's got to be a bug
<Keybuk> and the big spike at 24s is syslog starting up
<Keybuk> <StyXman> QUESTION: why thre's this big gap of no CPU or disk activity around the 45s in the last chart?
<Keybuk> a VERY good question ;-)
<Keybuk> in fact, as soon as I looked at this graph, I asked the very same one
<Keybuk> dead space in the graph means the system is idle
<Keybuk> I have a theory
<Keybuk> scroll down and look what's happening around then
<Keybuk> we're starting gnome panel applets
<Keybuk> the panel looks like it's started around 40-43s in
<Keybuk> and there's a whole bunch of applets that get started with it
<Keybuk> then there's a pause
<Keybuk> and a SECOND round of applets get started
<Keybuk> I think the session manager has a sleep(5) in it <g>
<Keybuk> I think it starts one set, sleeps for 5s and starts the second set
<Keybuk> this is exactly what I mean about gross and obvious bugs
<Keybuk> there's some other bugs in here too
<Keybuk> see the sleep around 14s in, and the other one around 20s in?
<Keybuk> every time someone calls sleep during boot, kittens die
<Keybuk> there's still some obvious hogs of processes
<Keybuk> udev (well modprobe really)
<Keybuk> X
<Keybuk> compiz
<Keybuk> nautilus
<Keybuk> the gnome-panel
<Keybuk> these are doing an extraordinary amount of work
<Keybuk> there's a bizarre logsave call around 14s in as well
<Keybuk> no idea why
<Keybuk> and some other bugs
<Keybuk> trackerd gets started, but is disabled
<Keybuk> so why is it doing so much IO ?
<Keybuk> and the bluetooth applet and jockey-gtk seem very expensive for their size
<Keybuk> <loic-m> QUESTION: are you also loking on suspend-to-disk/resume speed (and can bootchart be used for that purpose)?
<Keybuk> loic-m: personally, no;  suspend and resume speed is almost certainly disk bound
<Keybuk> hard to use bootchart for that due to the way it works
<Keybuk> you'd need something in-kernel
<Keybuk> <Ireyon> QUESTON: Does the system use multiple cores to boot if available? Wouldn't it be possible to load some less important services while GDM/Gnome starts up? (GDM is horribly slow in intrepid)
<Keybuk> Ireyon: we always use multiple cores
<Keybuk> however you'll note that we're really not maxing out a single low-powered CPU here
<Keybuk> so it won't help any
<Keybuk> with autologin, GDM doesn't seem to take any time to start up
<Keybuk> the X.org server does
<Keybuk> and loading services alongside will just slow it down more
<Keybuk> <oliver_g_> btw. is the Dell Mini 9 have a dualcore system?
<Keybuk> oliver_g_: it's a dual-core Intel Atom iirc
<Keybuk> so any other questions? :-)
<tethridge> So what is the boot goal for 9.04?
<Keybuk> we don't have a specific goal at this point, we're just cutting the crap and fixing bugs for now
<tethridge> or what do you see as realistic considering the amount of time you have left to work out low hanging fruit
<Keybuk> it looks like a full desktop is attainable in around 30s
<Keybuk> but I think for jaunty, on this platform, 45s is more likely
<Keybuk> <StyXman> QUESTION: can readahead be improved in this regard? ir is the disk activity after it already finished all write calls?
<Keybuk> StyXman: the prime improvement for readahead will be building the list of blocks to read
<Keybuk> right now, it's generated for each CD, and gets increasingly out of date
<Keybuk> <GSMX> QUESTION: Can't boot time be less than 2 seconds? I mean, with all this computing power nowadays, boottime was faster on win95!
<Keybuk> GSMX: boot time is nothing to do with computing power, see above ;-)
<tethridge> is upstart now fully optimized for boot speed?  I know that in past releases we were making a gradual shift to upstart.
<Keybuk> <StyXman> QUESTION: if they're write calls, can these be cached and flushed after we finished booting? I've seen my laptop not writing anything to disk while on batteries
<Keybuk> StyXman: we shouldn't really write anything during boot ;-)
<Keybuk> tethridge: upstart is unrelated to boot speed
<Keybuk> ok, I'm out of time now ;)
<Keybuk> but do feel free to grab me at any time
<duanedesign> good job!!
<pochu> thanks a lot!
<tethridge> yeah, awesome work!
<dinxter> thanks Keybuk
<duanedesign> (applause)
<weboide> thanks :)))
<schmiedc> nice session, thx a lot ;-)
<oliver_g_> thanks Keybuk!
<gman16k> great info.  thx!!
<Ireyon> nice session *clap*
<CrownAmbassador> thanks keybuk!
<Mirv> go Keybuk! :)
<vorian> thanks Keybuk
<vorian> OK THEN!
 * apachelogger hands Keybuk a cup of tea and wonders if he and vorian are now on schedule :P
<vorian> Kubuntu Ninjaâs - Packagers in Unicorn mode
<vorian> we are up, i do beleive
<apachelogger> Aloha/Hola/Salut/Ni Hao/Hello/Servus/Konnichiwa/Ahoy... Ladies, Gentlemen, IRC Bots, and Supernatural beings!
<apachelogger> My name is not vorian (aka Steve Stalcup) and I am not going to show you how ninjas update a package.
<apachelogger> Before we start, please ask questions any time. First question was already ask before this session even started :)
<apachelogger> ...was something like: "what are 'Ninjas in Unicorn mode'"
<apachelogger> Ninjas are magic blue headed monkeys with batwings and a horn looking like a gear on their foreheads, who are mostly talking jibberish so that the other Ubuntu developers don't understand them.
<apachelogger> As for the unicorn mode ... I would really like to tell you, but then I would have to kill you.
<apachelogger> Now, let's get started for real. First of all, a bit of History :P
<apachelogger> KDE has a kind of unique way to publish releases. About one week before the actual release, unofficial packages get distributed amongst the super nice distribution packagers, so they can update their packages and do some final testing to ensure everything is in proper shape for release.
<apachelogger> If we stumble upon serious issues, these get directly corrected in the tarballs... so after that week the users get
<apachelogger> a) binary packages right away
<apachelogger> b) tarballs tested by quite an amount of people on different architectures with different software stacks
<apachelogger> All in all stuff to be happy about \o/
<apachelogger> Well, at least as user. This pre-release publishing for packagers only works as long as the tarballs don't get published right away, but only when the embargo ends. That makes the whole process of getting the packages updated a whole lot more difficult because we can't just dump the tarballs somewhere and ask people who have some spare time to take a glimps at them.
<apachelogger> So eventually in earlier days Kubuntu robot Riddell did manual package coordination via IRC queries (I suppose at least), until once he was not available for a release. Kind apachelogger started working on it instead ...and what do you know, I was so annoyed by the work that I summoned a whole team of specialists in KDE packaging just to handle the release packaging.
<apachelogger> Super high quality packaging of course ... what else would that being a specialist be good for ;-)
<apachelogger> Nowadays the "Ninjas" take care of the packaging. Well, actually it's a set of scripts I created for this task, the Ninjas just run them :P As a matter of fact the ultimate target is to streamline the process so much that we can assign the packaging to a minion guinea pig... so we can lie under the sun in miami beach and consume loads of captain morgan with coke.
<apachelogger> Those of you who follow KDE development might now be wondering if I will give you access to the tarballs of upcoming KDE 4.2.0
<apachelogger> ... well, I am not :P
<apachelogger> That being said, unfortunately I can not show you how the update process works using an example, because only getting a certified Ninja build environment probably takes longer than this session ;-) I suppose it is enough if I just tell you. :P
<apachelogger> First of all let me outline the very basics of a Ninja build environment:
<apachelogger> Currently (in Ninjaland nothing lasts longer than 2 months due to constant improvement to the process, in regards to speed as well as quality) it consists of: a PBuilder enhanced with hooks for automatic execution of list-missing, for dropping to a shell if the build fails, to run apt-get update before fetching the packags and (if wanted) a hook for distributed compiling and one to maintain a very simple local package pool.
<apachelogger> In addition to that every Ninja environment is equiped witht the so called batscripts. A whole suite of scripts only created to streamline the process of updating core KDE packages ... and ... they are written in RUBY ... ha! take that you python lovas :P
<apachelogger> Ruby Ruby Ruby ... oh, I am loosing foucs...
<apachelogger> So. How does it work?
<apachelogger> First of all some poor dood, namely me, will run a script to secretly download the secret original source tarballs from KDE's even more secret server and store them in some as secret location, so that the secret Ninjas can obtain them using a secret config for their not so secret batscripts.
<apachelogger> Just for reference... we also have a secret PPA ;-)
<apachelogger> Then, considering a Ninja becomes bored from watching the uTube, they run another script to download the source tarball and merge it with the packaging branch (in Kubuntu we have a lot of our packages ... all of core KDE ... in bazaar branches on Launchpad).
<apachelogger> Once that is done, the real work starts (and immediately ends again ;-).
<apachelogger> The Ninja bumps some version requirements, eventually applies some other random change and runs a script to build the package.
<apachelogger> Using the pbuilder hooks the Ninja will be able to fix a broken build on-the-fly (e.g. to update .install files because some installation path changed etc.).
<apachelogger> The build script will collect loads of information the Ninjas ignores... eh... does quality assurance with.
<apachelogger> Once the package is ready another script takes care of sending all necessary stuff to the release coordinator, who reviews the changes and passes the finalized package to a core-dev for sponsoring.
<apachelogger> For KDE 4.2.0 that coordinator would be vorian.... talking about vorian... didn't you want to talk about something as well? *hint* *hint*
<vorian> yes! indeed
<apachelogger> don't say :P
<vorian> but first, anyone have questions for apachelogger?
<vorian> I'm not apachelogger (aka Harald Sitter), and I am not going to talk about ninja magic.
<vorian> However I am going to talk about:
<vorian>    _  __ __ _  __   __  _
<vorian>   / |/ // // |/ /  / /.' \
<vorian>  / || // // || /n_/ // o /
<vorian> /_/|_//_//_/|_/ \_,'/_n_/
<vorian>   _ __ ___  __    _  _____ ___   ___  /7
<mariuz> how we can package an qt-snapshot
<vorian>  /// // o |/  \ .' \/_  _// _/ ,' _/ //
<vorian> U // _,'/ o |/ o / / / / _/ _\ `.
<mariuz> ?
<vorian> \_,'/_/  /__,'/_n_/ /_/ /___//___,'()
<vorian> mariuz: great question
<vorian> mariuz: our qt pro's are in #kubuntu-devel atm, the process is a bit complex, too complex for this session
<vorian> so afterwards, feel free to join us in #kubuntu-devel
<mariuz> people ask about arora with flash and is possible only with snapshot
<mariuz> ok
<vorian> ok
<vorian> so Ninja updates
<vorian> Seeing as we don't have much more time, i'll try and be as quick as possible.
<vorian> To give a little taste on how we update packages, we will actually do one right now.
<vorian> excited?!
<mariuz> wet
<vorian> ohmy
<vorian> the name is plasmoid-toggle-compositing, which is a nice little plasmoid that turns your desktop effects on and off.
<vorian> so, if everyone would please get the source, by either 'apt-get source plasmoid-toggle-compositing' or 'pull-lp-source plasmoid-toggle-compositing'
<vorian> when you have the source, version 0.2.1, raise your hand o/ (or both!)
<dinxter> me hands up!
<vorian> yay dinxter
<vorian> who else is gonna give it a shot?
<apachelogger> \o/
<vorian> all set?
<vorian> We are lucky that this package has a watch file, so we will use that to get the new upstream release.
<dinxter> as ready as i'll ever be
<vorian> so, if everyone could cd plasmoid-toggle-compositing-0.2.1
<vorian> let me know when you're there
<apachelogger> there
<dinxter> aye
<vorian> and now run this command: uscan --verbose --report
<vorian> What this does is scan the known source repository for this upstream package. If there is a new version, it will download it.
<vorian> Pretty awesome eh?
<vorian> We are going to pimp this watch file a little bit
<vorian> Using your editor of choice, edit the debian/watch file and put 'debian uupdate' at the very end of the second line.
<vorian> it should look something like: http://ivplasma.googlecode.com/files/toggle-compositing-([\d\.]*).tar.gz debian uupdate
<vorian> let me know when you are finished
<dinxter> done
<apachelogger> +1
<vorian> excellent
<vorian> now run 'uscan --verbose'
<vorian> What is happening?
<dinxter> new source directory and diffs and everything!
<vorian> w00t
<vorian> that's magic
<vorian> now, with most of the packages we deal with, it's not quite this simple
<vorian> Do a "cd ../plasmoid-toggle-compositing-0.2.2" to see the new package
<vorian> We are not going to use pbuilder for this excersize, so please make sure you 'sudo apt-get install debhelper cdbs cmake libplasma-dev quilt' for our building.
<vorian> let me know when your done downloading, (theres quite a bit to pull there)
<dinxter> its there
<vorian> fantastic
<vorian> Ok, now 'debuild -us -uc'
<vorian> and tell me what happens
<apachelogger> apachelogger__
<dinxter> 2 out of 2 hunks FAILED -- rejects in file CMakeLists.txt
<vorian> boy thats a bummer eh?
<dinxter> i always expect pain :)
<vorian> lucky for us, the new upstream release fixes what this patch is for
<vorian> please remove the patch and patch directory 'rm -rf debian/patches'
<vorian> Make sure to note in the change log (dch -e) that - patch cmake-find-plasma.patch removed competely, resolved upstream - or somethng to that effect.
<vorian> let me know when thou art done
<dinxter> done
<vorian> dinxter: care to paste your changelog?
<vorian> http://paste.ubuntu.com
<dinxter> hold on, debian/patches in 0.2.2?
<vorian> dinxter: yes, remove the entire directory
<dinxter> just double checking http://paste.ubuntu.com/108347/
<vorian> no problems :)
 * vorian looks
<vorian> FANTASTIC
<vorian> ~order cookies for dinxter
<vorian> ok, now 'debuild -us -uc'
<mariuz> for me it gives an error
<vorian> what error mariuz
<dinxter> build fine here
<vorian> so dinxter, you have a shiny new deb?
<mariuz> undefined reference to `typeinfo for Plasma::Applet' collect2: ld returned 1 exit status
<vorian> did you install all the packages i mentioned?
<vorian> mariuz: we can sort it our after our session
<vorian> if you look in the directory which holds the two versions of this package, you should see a shiny new deb
<mariuz> yes is all installed ,  ok
<dinxter> shiny deb plasmoid-toggle-compositing_0.2.2-0ubuntu1_amd64.deb
<vorian> and that is the down and dirty, first ninja steps, kind of way we update a package
<vorian> You have updated a Package!
<vorian> What questions do you have?
<apachelogger__> Any kind of questions that is :)
<JontheEchidna> vorian: how would we contribute our updated package?
<JontheEchidna> I assume we can't just hand over debs :P
<vorian> JontheEchidna: that is correct
<vorian> once you know your package is buildable
<vorian> you always want to build it in a pbuilder environemnt (or sbuild)
<vorian> and when you are 100% sure your package is ready
<vorian> you can create a debdiff to submit to Launchpad for updating
<apachelogger__> You might also want to poke someone in #kubuntu-devel to speed up the process :)
<vorian> to create a debdiff, you simply use 'debdiff old_package.dsc new_package.dsc > new.debdiff
<vorian> great question JontheEchidna
<vorian> ~order cookies for JontheEchidna
 * kubotu slides a whole bunch of world's finest cookies down the bar to JontheEchidna.
<JontheEchidna> :)
<vorian> any other questions (of any kind)?
<vorian> We are always looking for folks who want to help out in Kubuntu Land, so if you are interested in helping out and becoming a ninja, please stop by #kubuntu-devel!
<vorian> if there are no more questions then, i'll just end with
<vorian> ______________ ___    _____    _______   ____  __.  _________._._.
<vorian> \__    ___/   |   \  /  _  \   \      \ |    |/ _| /   _____/| | |
<vorian>   |    | /    ~    \/  /_\  \  /   |   \|      <   \_____  \ | | |
<vorian>   |    | \    Y    /    |    \/    |    \    |  \  /        \ \|\|
<vorian>   |____|  \___|_  /\____|__  /\____|__  /____|__ \/_______  / ____
<vorian>                 \/         \/         \/        \/        \/  \/\/
<vorian> hope to see you all in #kubuntu-devel!
<vorian> and happy packaging
<dinxter> cheers vorian
<apachelogger__> now party in #kubuntu-devel I suppose?
 * directhex starts rearranging podium
<vorian> yup yup
<vorian> you all have 10 minutes before the next glorious presentation:
<vorian> Packaging software for Mono, for great justice: Iâm very pleased weâre having Jo Shields and Mirco Bauer here to give a session about Mono packaging. How is it different? Why is it a lot of fun? Where does the team need help? Find out today!
<directhex> or tomorrow if you're in australia. technically.
<vorian> true
<mariuz> ok thanks for an interesting session
<RAOF> directhex: No, it's still today in Australia.  It's *yesterday* where you are :P
<directhex> good morning RAOF. out of bed early just for me & meebey ?
<RAOF> Well, because my fiancÃ© has to get up at 6 to get to work at 8.
<directhex> bip bip bip bip bip BEEEEEEEEEP!
<directhex> Ladies, gentlemen, and everyone in between, welcome to our little session on Mono.
<meebey> you are 3 seconds late! :-P
<directhex> During the next hour, you will be regailed with tales of delight and intrigue, by myself and meebey, who is a long-time Debian Developer and the current Debian Mono Pope.
<directhex> We've got buckets of valuable knowledge to splash about, and only an hour, so we're going to try and structure things a little.
<directhex> So we're going to dedicate 5-10 minutes to a brief introduction to Mono in Debian, followed by about 20-30 minutes on a few other topics with an example package or two, then spend our remaining time on Q&A
<directhex> i'll try and keep an eye on questions as we progress though
<directhex> so, i'm delighted to introduce international sexpot extraordinaire, meebey!
<meebey> oh, that's me I guess....
<directhex> i can check /whois if you like
<meebey> nah, not needed, my IRC client highlighted me
<meebey> I would like to talk about the nice team setup we have in debian and ubuntu for packaging mono, mono based application and mono based libraries
<meebey> we have the mono team, that maintains mono itself and other core components of it, like libgdiplus, xsp, mono-basic, mono-debugger and so on
<meebey> that team has currently 6 members, and is a mix of debian developers and ubuntu developers
<meebey> debian and ubuntu work directly on the source packages hosted on SVN using the alioth project
<meebey> we do the same with Mono based applications like f-spot, beagle, tomboy, which are in the pkg-cli-apps team
<meebey> the pkg-cli-apps team focus on sexy applications using Mono, which has currently 16 members
<meebey> and the last team is pkg-cli-libs, which focuses on packaging libraries for Mono with 12 members
<meebey> to get an idea of which package set those 3 team are working on, check this URLs:
<meebey> http://svn.debian.org/viewsvn/pkg-mono/
<meebey> http://svn.debian.org/viewsvn/pkg-cli-apps/packages/
<meebey> http://svn.debian.org/viewsvn/pkg-cli-libs/packages/
<meebey> yes, thats alot of packages we share there, between debian and ubuntu, doing a great joined team effort
<meebey> the 3 teams mainly operate using the #debian-mono channel found on OFTC and pkg-mono-devel mailing list (hosted at alioth)
<directhex> and we're such sexy people that even gentoo packagers and upstream devs are starting to pop up in there
<meebey> 4 of the team members are currently on this channel btw :)
 * meebey says hello to Laney, RAOF and RainCT
 * RainCT hides *g*
<meebey> ok I think I will continue now with packaging...
<RainCT> go, meebey, go :)
<meebey> one of the first issues we had (the pioneers of mono in the debian land :-P) was that there are no rules specific to Mono packaging
<meebey> as Mono is a new runtime, we hit new issues
<meebey> compared to the known C, known Java, known Python land
<meebey> for that reason, we developed a CLI Policy, that addresses those issues
<meebey> the current CLI Policy can be found at: http://pkg-mono.alioth.debian.org/cli-policy/
<directhex> CLI in this case doesn't stand for command line interface, it stands for Common Language Infrastructure, which is the trademark-free name for the main part of the ECMS 335 spec that Mono implements
<directhex> ECMA
<meebey> correct, that term is explained in the policy btw too: http://pkg-mono.alioth.debian.org/cli-policy/ch-terms.html#s-CLI
<meebey> so when you package Mono based applications, you should have the CLI policy handy...
<meebey> ok now the good news: you don't have to know all details of the CLI policy in order to create proper package!
<meebey> we created debhelper tools that make CLI libs/apps packaging much simpler! :)
<meebey> this leads us to the cli-common-dev package
<meebey> that package contains nice debhelper tools made just for making your lifer easier with CLI packaging
<meebey> re
<directhex> debhelper tools being those handy things which fill in your dependencies etc for you, and do all that tedious stuff nobody wants to do manually in a package
<meebey> sorry for the delay, my computer crashed :(
<DBO> no problem =)
<directhex> pfft, debian
<directhex> ;)
 * meebey learned, don't install new memory before doing a classroom session
<meebey> *cough*
<directhex> anyway... debhelper tools...
<meebey> the most important tool for you is the dh_clideps tool from the cli-common-dev package
<meebey> it generate for you the complete Depends line
<meebey> just like dh_shlibdeps does for C libs
<meebey> now I will head over how to use that tool in a package
<meebey> as example I will use a dh7 style package: smuxi
<meebey> http://svn.debian.org/viewsvn/pkg-cli-apps/packages/smuxi/trunk/debian/control?rev=4284&view=auto
<directhex> (smuxi is a sexy irc client you should all switch to)
<meebey> thats the control file of smuxi, which uses the cli:Depends variable generated by dh_clideps
<meebey> see the Depends line:
<meebey> Depends: ${shlibs:Depends}, ${misc:Depends}, ${cli:Depends}
<meebey> thats a short nice list of deps isn't it? it's that simple :)
<directhex> in control it is
<meebey> the dh_clideps tool needs to be invoked in the debian/rules file of course
<meebey> nothing happens automagically
<meebey> so take a look at the rules file:
<meebey> http://svn.debian.org/viewsvn/pkg-cli-apps/packages/smuxi/trunk/debian/rules?rev=4410&view=auto
<meebey> that rules file might look confusing to some of you, it's using debhelper 7 minimalistic rules style
<directhex> dh7's like cdbs, but awesome
<meebey> now you might think: "well and where is now the dh_clideps call?!?"
<meebey> ok I lied, it's a bit of automagic flying around
<meebey> dh7 allows to extend the automatically called debhelper commands
<meebey> and cli-common-dev does that for you when you include the /usr/share/cli-common/cli.make file
<meebey> if you dont like dh7, don't worry, the dh_* tools can be used with cdbs and tradtional debhelper style too!
<meebey> here a cdbs example (different package though):
<meebey> http://svn.debian.org/viewsvn/pkg-cli-apps/packages/f-spot/trunk/debian/
<directhex> you SHOULD like dh7 though, 'cos it's awesome
<meebey> and here a old dh style rules file:
<meebey> http://svn.debian.org/viewsvn/pkg-cli-apps/packages/gfax/trunk/debian/
<meebey> nobody likes old dh, compare gfax rules and smuxi rules :)
<meebey> they both do the same thing ;)
<meebey> ups sorry, I pasted the directories rather than the files
<meebey> cdbs cli-common-dev usage: http://svn.debian.org/viewsvn/pkg-cli-apps/packages/f-spot/trunk/debian/rules?rev=4339&view=auto
<directhex> f-spot being a super-complicated package installed in ubuntu by default
<meebey> old dh cli-common-dev usage: http://svn.debian.org/viewsvn/pkg-cli-apps/packages/gfax/trunk/debian/rules?rev=4292&view=auto
<directhex> with a rules file a few lines long :)
<meebey> you will probably notice that both the cdbs and old dh example do something funny with MONO_SHARED_DIR
<meebey> thats nicely explained in the CLI policy at: http://pkg-mono.alioth.debian.org/cli-policy/ch-mono.html#s4.3
<meebey> with the dh7 integration though you don't need to handle that, because it makes sure that MONO_SHARED_DIR is not needed!
<meebey> another reason to use the sexy dh7
<meebey> :-P
<directhex> free gifts for every dh7 user never happened, so you need to settle for it making life easier instead
<meebey> now I will pass control back to directhex, so he can put some words on the on going transition in debian/ubuntu with Mono 2.0
<directhex> okay then kiddies, the infamous Mono 2.0 transition.
<directhex> the first thing to be aware of is that Mono is awesome. Accusations of bloat, fr'example, are lies and hax. Mono is thin and slender
<directhex> but not slender enough. We identified a number of issues which prevented us from making a ridiculously thin Mono which could still run big powerful apps like f-spot
<directhex> the main issue being that there are two published versions of CLI (1.0 and 2.0), and therefore two versions of most of the libraries in Mono - but an app which used version 2.0 would still end up pulling in pieces of 1.0
<directhex> bad. fat. icky poo poo bloaty.
<directhex> so we took the launch of Mono 2.0 by the Mono community as a chance to go to town on Mono dependencies, and by allowing us to create the world's first "pure" CLI 2.0-only Mono release
<directhex> this means rebuilding all apps and all libs using only CLI 2.0, which exposes a whole world of little issues and bugs, and therefore triggered a big ol' packaging transition
<meebey> side note: CLI 1.0 and 2.0 are 2 different runtime profiles, generics is implemented at runtime level in CLI, and thus the CLI runtime had to be extended giving us the 2.0 version
<directhex> you can check on the current progress of the transition at http://wiki.debian.org/Teams/DebianMonoGroup/Mono20TransitionTODO - you'll see almost every app in Ubuntu (and most but not all in Debian) are now 2.0-only. The libs haven't been attacked yet, as we need to do apps first to prevent breakage
<meebey> the CLI 1.0 runtime is only used by applications compiled with mcs (the 1.0 compiler) while gmcs targets the 2.0 runtime version
<meebey> so there is no reason to ship both runtime versions flying around, when 2.0 can do everything for you :)
<directhex> the transitions been powered by people from both Debian and Ubuntu, and i want to give a special note of thanks to Laney and james_w for their ubuntu-sourced help with a number of packages, as well as those packages whose maintainers are based in ubuntuland (like RAOF or RainCT )
<directhex> the theory (yay, theories) is that this transition should save 20-40% of the disk space required to install f-spot, which directly means savings on ubuntu desktop install disks
<meebey> and might lead to a tomboy installed by default for debian ;)
<directhex> so if you want to help us out, be sure to come & visit us in #debian-mono on oftc (irc.debian.net)
<directhex> now, we've gone on far longer than i was expecting, so i'm gonna invite you to start asking questions in #ubuntu-classroom-chat, and ramble on a little more whilst waiting for questions
<directhex> there's a second little transition which has sorta jumped us when we weren't expecting it, for gnome sharp (gnome bindings for mono). it's an irritation which i'd welcome willing packagers to lend a hand with, as it means (sigh) revisiting some packages we thought were done & dusted, and altering their build-deps
<meebey> questions regarding the Mono runtime, Mono applications or library or even deeper topic like C# are welcome too btw
<directhex> or other tangentially monoish questions
<directhex> like "how do you manage to be so awesome?"
<meebey> KDE4 ships with Mono bindings now btw, so you can write KDE applications with C#
<meebey> at least KDE4 in debian, not sure about ubuntu
<directhex> yes, in jaunty definitely
<directhex> we'd encourage you to do so! it looks like an interesting platform, and you can do lots of interesting things rather easier than in languages like c
<RAOF> It might be good to mention the mono dllmap situation, which I find is a common packaging trap for the unfamiliar.
<meebey> good point
<meebey> dh_clideps might spit warnings about unresolved modulerefs
<meebey> a moduleref is a refence to a C library, that is used by a C# application
<meebey> like GTK# calls GTK+ libraries
<meebey> the C# application has to specifiy a library name, and thats where those dllmaps come in
<meebey> the C# application usually only specifies "libfoo.so"
<meebey> but the runtime package of libfoo0 only contains libfoo.so.0, the libfoo.so name is a symlink sitting in libfoo-dev
<meebey> and nobody wants to install development package to run applications :)
<meebey> so Mono provides dllmaps, which redirect the libfoo.so usage to libfoo.so.0
<meebey> a dllmap is a simple XML file next to the .exe file or the .dll file (which ever invokes the C lib)
<meebey> it looks like this: http://svn.debian.org/viewsvn/pkg-cli-apps/packages/f-spot/trunk/debian/NDesk.Glitz.dll.config?rev=4037&view=markup
<meebey> so shipping that file using the source package fixes those issues, it's also explained in the CLI policy at: http://pkg-mono.alioth.debian.org/cli-policy/ch-mono.html#s4.2
<meebey> this might look complicated, but you don't have to pay attention to this issues if dh_clideps is not showing any warnings :)
<directhex> it might point to foo.dll if the app is designed to run on windows as well as linux, and the dllmap does the same job to rediect to libfoo.so.0
<RAOF> It's also worth noting that the .config files are generally _not_ automatically generated.  No-change rebuilds to pick up a new library SONAME won't work in general.
<directhex> unless you include some rules magic to generate them
<meebey> RAOF: thats on purpose though, as the changed ABI might break the application
<directhex> <dinxter> maybe something about moonlight progress, thats mono 2.0 is it?
<directhex> moonlight!
<RAOF> meebey: Right.  But it's something that people unfamiliar with CLI packaging might not expect.
<meebey> directhex: your part :)
<directhex> moonlight is in debian's NEW queue, which is a bit like being stuck in Revu but with even longer delays
<meebey> RAOF: correct, dh_clideps will tell them though that there is something to handle
<directhex> I'm expecting it to leave NEW in about a week or so, at which point I can sync it to jaunty
<directhex> i already have packages for intrepid & jaunty in my PPA, and meebey has some for debian experimental in his personal repository
<meebey> moonlight allows to run/see silverlight webpages on linux
<directhex> but this is moonlight 1.0, which only supports silverlight 1.0! no netflix for you yet
<directhex> hm, we're overrunning. so much mono joy to spread
<meebey> oh noez
<directhex> still last session of the day, nobody'll notice
<meebey> ;)
<directhex> as long as nobody mentions it out loud
<meebey> so what did we learn from this session? install the sexy IRC client called smuxo! :-P
<directhex> smuxi!
 * dinxter has sealed lips
<meebey> ups
<meebey> smuxi!
<directhex> nice typu, meebey!
 * meebey hides
<meebey> too much mono for today I guess
<directhex> anyone who wants to learn more exciting stuff, or remembers a question they forgot, please join us in #debian-mono on oftc
<directhex> oh, or wants to help us. we want lots of people like that
<meebey> yeah with ~90 source packages on our back we welcome any help we get
<directhex> yeah, anyone wanna be the new ikvm maintainer?
<hyperair> how many maintain mono packages?
<meebey> don't be that nasty
<hyperair> and what's ikvm?
<meebey> hyperair: I said that in the beginning
<meebey> of the talk
<directhex> he missed it. hang on...
<directhex> <meebey> we have the mono team, that maintains mono itself and other core components of it, like libgdiplus, xsp, mono-basic, mono-debugger and so on
<directhex> <meebey> that team has currently 6 members, and is a mix of debian developers and ubuntu developers
<directhex> <meebey> the pkg-cli-apps team focus on sexy applications using Mono, which has currently 16 members
<directhex> <meebey> and the last team is pkg-cli-libs, which focuses on packaging libraries for Mono with 12 members
<hyperair> i see
<directhex> and ikvm's the most lightweight way to install openjdk you can get! :p
<meebey> some source packages are very heavy though and needs lots of attention
<hyperair> wait a sec. ikvm is mono right? jdk is java right?
<directhex> it's a java compiler and classlib for mono, so you can compile java or run .class files on mono, or use .class files indie your mono apps
<meebey> hyperair: ikvm is a java implementation running on mono :)
<hyperair> that's interesting
<meebey> hyperair: a java vm
<meebey> we have more than C# in debian and ubuntu!
<hyperair> but of course
<directhex> yeah, for those who don't know, CLI is designed (as the name implies) for multi-language interop
<hyperair> well. i should check out smuxi
<meebey> there is: python running on mono (ironpython), java running on mono (ikvm), boo which is a python like language
<directhex> in debian/ubuntu we have c#, java, python, nemerle, boo, vb.net, and possibly others i forgotted
<meebey> yeah I missed some languages, too much of them!
<directhex> though nobody with sense wants to compile vb.net o_o
<meebey> :-P
<hyperair> i'm sure those with lecturers with no sense would ;)
<RAOF> directhex: F#?
<directhex> RAOF, non-free
<RAOF> Awww.
<meebey> IronRuby is non-free too right?
<directhex> when f# is relicensed under a Free license like Ms-PL, we use it
<meebey> yeah we are waiting for those to become free too and we will package them
<directhex> meebey, no, ironruby is ticking all the free boxes, but i don't wanna do the git snapshot dance... give me a tarball
<meebey> directhex: so we miss a release there, ic
<directhex> okay. ANY MORE QUESTIONS? :o
<directhex> no?
<directhex>      _ _                   _ _             _
<directhex>   __| (_)_ __   __ _    __| (_)_ __   __ _| |
<directhex>  / _` | | '_ \ / _` |  / _` | | '_ \ / _` | |
<directhex> | (_| | | | | | (_| | | (_| | | | | | (_| |_|
<directhex>  \__,_|_|_| |_|\__, |  \__,_|_|_| |_|\__, (_)
<directhex>                |___/                 |___/
<directhex> session over. remember you can find us in #debian-mono on oftc!
<hyperair> directhex: now that the session's over, http://revu.ubuntuwire.com/details.py?package=bansheelyricsplugin
<directhex> hah
<hyperair> =p
<hyperair> also it seems that smuxi renders all the text on the tabs black
<hyperair> eventhough the backgorund is dark grey
<hyperair> hard to read X_X
<meebey> oh
<meebey> its a setting!
<meebey> it uses black as default...
<hyperair> eh?
<hyperair> hmm
<meebey> feel free to open a bugticket that I use the system color there
<meebey> I never used a theme with dark background :-P
<meebey> and light foreground
<directhex> meebey, thoughts on hyperair's package, as linked above?
<meebey> directhex: which part? source package?
<directhex> meebey, yeah
<meebey> it contains cli:Depends but no dh_clideps call in rules
<hyperair> meebey: doesn't cdbs do that?
<meebey> there is no cdbs integration for it
<meebey> would be nice if someone could contribute that to cdbs :)
<meebey> besides that the package looks good
<directhex> and since you're repackaging, IMHO you should purge the autofoo rubbish like autom4te.cache in your haxed orig
<hyperair> ah
<hyperair> okay
<directhex> may as well. no reason not to
<meebey> +install/banshee-extension-lyrics::
<meebey> +	chmod 0644 debian/banshee-extension-lyrics/usr/lib/banshee-1/Extensions/Banshee.Lyrics.dll
<hyperair> then what should i rename the tarball to?
<meebey> cli-common-dev contains a tool for that
<meebey> run dh_clifixperms
<hyperair> okay
<directhex> i'd better give wifey back her pc
<meebey> hyperair: did changing the setting helped?
<meebey> -ed
<hyperair> meebey: yeah it did
<hyperair> meebey: i'll switch from pidgin when i'm more awake
<meebey> cool :)
<hyperair> having irc with huge backlogs makes pidgin throw up
<meebey> just shoot in #smuxi if you miss something or having a issue
<hyperair> eventually it hangs for 5 seconds every minute or so
<hyperair> alright
<hyperair> oh yeah
<hyperair> nickserv support?
<meebey>  /msg NickServ poo?
<meebey> :-P
<hyperair> sigh
<hyperair> i'd really prefer not to =\
<hyperair> but i could put in the autorun commands i guess
<meebey> you can use nickserv directly if the IRCd supports
<meebey>  /raw nickserv poo
<hyperair> hmm
<hyperair> i see
<meebey> but yeah, autorun commands on the specific server
<meebey> I need a plugin API for nickserv support
<meebey> directhex: has ubuntu now smuxi 0.6.3 btw? :)
<directhex> ausimage, thank you for posting the log so quickly
<ausimage> yw :)
<hyperair> meebey: what about autojoin? or do i just add /join lines?
<meebey> hyperair: jep
<directhex> meebey, i didn't get a chance to today, i was busy rescuing a Â£1m deal
<meebey> hyperair: smuxi expects users to be irssi used :-P
<meebey> directhex: shame over you
 * meebey runs
 * directhex sends the oom killer after meebey with a machete
<meebey> not needed, my pc crashed for the first time ever today
<meebey> maybe 2.0 V was too high
<meebey> one module wants 1.8 while the other 2.0, odd
<directhex> 2.0 for ddr2? o_o
<meebey> thats too much?
<directhex> hm, it might be fine. ddr3 is where it's fragile
<meebey> I will probably get another hyperx pair so I can run it at full speed
<hyperair> meebey: ah. i've never used irssi before. i've used xchat though
<meebey> hyperair: I want to add such nice GUIs of course! dont get me wrong :)
<meebey> hyperair: I like software that just works and is simple to use
<meebey> but using irssi for 4 years might caused some bad habbits on my side :-P
<directhex> oh, for those who asked, moonlight is currently 68th from the top of the debian NEW queue, of 171 packages total
<meebey> go moonlight go!
<hyperair> meebey: it would be nice to obscure all your passwords
<meebey> hyperair: now you can stab directhex
<meebey> hyperair: smuxi 0.6.3 has that
<hyperair> heh
<hyperair> alrght
<hyperair> no actually i'll wait until directhex is done reviewing =p
<directhex> i'm not a MOTU, i can't give you an ack
<hyperair> oh you're not?
<directhex> my only comment is about cleaning up your repackaged orig
<hyperair> =(
<directhex> which is something i have far too much experience with
<hyperair> hahah
<hyperair> every single one of my packages has a repackged tarball
<hyperair> as in revu packages
<directhex> you do know how to pick 'em
<hyperair> sigx only comes in bz2, bansheelyricsplugin is miserable shit that comes in bz2, and codelite.... had some stuff removed as per dfsg
<hyperair> ah then one more.. vazaar
<hyperair> only comes in bz2
<hyperair> sigx is the unique one that uses scons. ew
<hyperair> okay i've tidied my tarball
<mneptok> hey guys. would you mind moving the conversation to more appropriate channels. we should try to keep -classroom reserved for DevWeek stuff this week.
<jpds> hi mneptok
<jpds> Oh, yeah, right.
<mneptok> jpds: heya! :)
#ubuntu-classroom 2009-01-23
<Matr|X> hello i need help in ubntu plz
<jmarsden|work> Matr|X: Ask in #ubuntu, not in here, #ubuntu-classroom is for classes at specific times.
<Matr|X> thx
<Matr|X> sorry
<Lucy> I'm having a bit of trouble getting the right performance from all but one SATA drives. instead of around 110 mb/s with hdparm -t i get around 50-60 mb/s . Help anyone ?
<istaz> Ask in #ubuntu, not in here, #ubuntu-classroom is for classes at specific times. (c) jmarsden|work
<somaunn> i'm looking for someone who have knowledges of sed
<techno_freak> somaunn, #bash
<somaunn> techno_freak: thank you
<CrownAmbassador> Does anyone have the getting started talk from Monday? It is not on http://wiki.ubuntu.com/MeetingNotes
<istaz> CrownAmbassador: the one on this channel?
<CrownAmbassador> istaz: yeah
<istaz> (the link you gave doesnt exist)
<istaz> CrownAmbassador: I can send you my log if you want
<MarkoKaa> There it is https://wiki.ubuntu.com/MeetingLogs/devweek0901/GettingStartedEN
<CrownAmbassador> istaz: oops! Should be MeetingLogs
<CrownAmbassador> MarkoKaa: Thanks. Seems like the link to it on the https://wiki.ubuntu.com/MeetingLogs does not work.
<MarkoKaa> and also you can go to the logs by clicking the topic on https://wiki.ubuntu.com/UbuntuDeveloperWeek
<CrownAmbassador> MarkoKaa: Thanks.
<MarkoKaa> No problem
<CrownAmbassador> Does anyone know when Pitti will be doing his deleted talk?
<Ape3000> I just packaged my first package. It's 0.6.5 version of typespeed. There is 0.6.4 available on the Ubuntu repos.
<Ape3000> https://launchpad.net/~ape3000/+archive
<Ape3000> It says that it needs building.
<james_w> cool :-)
<james_w> do you know the process for getting it updated in jaunty?
<Ape3000> Not perfectly
<james_w> k
<Ape3000> I think I could send to Debian, since it has also only 0.6.4
<james_w> is there already a bug open on the package about there being a new upstream release?
<james_w> that would be great
<Ape3000> I didn't find any bug reports
<james_w> ok, the first step is to file one
<Ape3000> I just wanted to practice building and I knew that the version of typespeed isn't the newest upstream version.
<james_w> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=499133 is the Debian bug about it
<james_w> so you can link the reports in launchpad once you have filed the Ubuntu bug
<Ape3000> So what is the package where I file the bug?
<Ape3000> Is it the typespeed source package or Ubuntu?
<james_w> the former
<james_w> https://bugs.launchpad.net/ubuntu/+source/typespeed/+filebug
<Ape3000> https://bugs.launchpad.net/ubuntu/+source/typespeed/+bug/320484
<Ape3000> So how do I link the debian bug?
<james_w> Ape3000: click on "Also affects Distribution", select Debian, and enter the url I gave
<dholbach> HELLO EVERYBODY!
<zerwas> Hi :)
<dholbach> Who's here for the last day of the week of awesome?
<dholbach> Who's excited? :-)
<dholbach> COME ON! :)
 * liw cracks knuckles
<zerwas> i hope all 144 here are!
<dholbach> liw: seems like you have a bit of a shy audience today :-)
<dholbach> Ok... welcome everybody!
<dholbach> We have the amazing Lars Wirzenius here today and I promise he won't bite
 * weboide is ready for it!
<dholbach> instead, he'll talk about the fantastic things you can do with piuparts and I hope you enjoy the ride
<dholbach> questions, as always, go into #ubuntu-classroom-chat please
<dholbach> and please prefix them with QUESTION:
<liw> if someone wants to volunteer to paste questions to this channel, that would be fabulous!
<dholbach> ie: QUESTION: liw: why don't Finns hug?
<dholbach> enjoy the session, liw: the floor is yours :)
<liw> dholbach, thank you, thank you
<dholbach> :-)(
<liw> so, I'm going to talk about piuparts. Questions are welcome at any time. I've structured this into sections: What is piuparts; basic usage; interpreting the results; speeding it up; testing for newer releasees; gotchas
<liw> if I'm going too fast, or too slow, don't hesitate to tell me
<liw> first section: What is piuparts?
<liw> Piuparts is a tool to test that a .deb package can be installed and removed, and installed, upgraded, and removed.
<liw> It is primarily meant for people who maintain and upload packages.
<liw> It works by constructing a chroot with a minimal Debian or Ubuntu installation, and then installing the package being tested into the chroot. It also installs the dependencies.
<liw> After this is done, it removes and then purges the package, and any other packages that got installed.
<liw> Finally, it compares the state of the chroot before the package and its dependencies were installed, and after they got purged.
<liw> It checks that all files are still there, and haven't been changed, and that there are no new files.
<liw> Obviously, some things will always change, such as log files. Piuparts ignores those.
<liw> any questions so far? anyone getting this at all?
<zerwas> <weboide> QUESTION: is this like pbuilder ?
<liw> zerwas, thanks (I was just fighting my irc client to do that :)
<liw> weboide, pbuilder uses a chroot to build a package in a clean environment; piuparts uses a chroot to test that a package installs into a clean environment, so there are similarities, but they are solving different problems with chroots
<liw> I will get back to pbuilder in a bit
<liw> any other questions? if not, I'll continue on to the next section
<liw> second section: Basic usage
<liw> The very basic way of using piuparts is as follows:
<liw> piuparts foo.deb
<liw> where foo.deb is a .deb package you have built.
<liw> Note that this can take a long time, and can produce quite a lot of output.
<liw> You probably don't want to run the command just now.
<liw> Because piuparts builds a chroot, it must run as root.
<liw> Prefix the command with sudo. (But not yet)
<liw> To avoid people accidentally copypasting commands when they shouldn't, I'm not prefixing it in examples.
<liw> The above command will run the install/remove/purge test.
<liw> If the package is already in the archive, it will also test that the package can be upgraded from the archive to the .deb you give.
<liw> The other way of running piuparts is as follows:
<liw> piuparts -a foo
<liw> Here foo is the name of a package, not of a .deb.
<liw> Piuparts will fetch the package from the archive and test it.
<liw> This will, obviously, not test upgrades since there is no newer package.
<liw> If you feel like being evil, you can spend your time worse than running piuparts on all sorts of random packages and filing bugs for serious problems.
<liw> any questions so far?
<liw> continuin...
<liw> You can also test upgrading from release to release:
<liw> piuparts -a -d dapper -d hardy -d intrepid -d jaunty foo
<liw> This will take even longer.
<liw> it will first construct a chroot with dapper, install the package into that, then upgrade the whole chroot to hardy, then to intrepid, then to jaunty, and then remove and purge the package and its dependencies
<zerwas> <ia> QUESTION: can piuparts use pbuilder's tgz chroot images (so to don't create for each tool each set of chroots)?
<liw> ia, yes; I'll show an example in a while
<zerwas> <weboide> QUESTION: what version of piuparts should be we use? repos version? dev version?
<liw> weboide, you should use the version in current development version of Ubuntu, by preference, unless that breaks
<liw> piuparts development has not been very fast in the past couple of years, so there are not a lot of versions to choose from that are easily available
<liw> third section: Interpreting the results
<liw> Piuparts outputs quite a lot of text when it runs.
<liw> This is because when I was developing it, it was quite useful to me to see what was going on and figure out when things broke.
<liw> I never got around to fixing things so that it was nice to use for other people.
<liw> (sorry)
<liw> Since the output can be pretty large, up to several hundred kilobytes, it is best to capture it in a file:
<liw> piuparts -l foo.log foo.deb
<liw> The output will go to the named file, and also to the screen.
<liw> Every line of output piuparts outputs is prefixed with a relative timestamp (minutes and seconds since piuparts started), and a log level: DUMP, DEBUG, INFO, WARNING, ERROR, FATAL.
<liw> DUMP and DEBUG you can mostly ignore; unfortunately there is no switch to let you do that at the moment.
<liw> (sorry)
<liw> The useful stuff is in INFO, and in ERROR if it is there.
<liw> Therefore, the way to read a piuparts log file is to grep for INFO and ERROR.
<liw> Then, if those don't make any sense, read DUMP and DEBUG as well.
<liw> When piuparts finishes, it outputs one of two things: either a PASS or a FAIL message.
<liw> They look like these:
<liw> 2m11.0s INFO: PASS: All tests.
<liw> 5m33.8s ERROR: Broken symlinks:
<liw> Obviously these were from different runs. You only get one of them per run.
<liw> I should pastebin some actual log output, just a minute.
<liw> http://paste.ubuntu.com/108624/ and http://paste.ubuntu.com/108625/ are two snippets of an actual log file
<liw> just to give you a taste of what they look like. the beginning and the end.
<zerwas> <Ape3000> QUESTION: How much time does the basic test usually take?
<liw> Ape3000, the second pastebin answers that for the hello package: almost 7 minutes (but that was running inside kvm)
<liw> any questions about interpreting those log files? they're long, but hopefully not too obscure
<liw> next section (is this 12765 already?): Speeding it up
<liw> (everyone's favorite topic)
<liw> It can take a long time to construct the chroot.
<liw> Since most package maintainers use pbuilder, and it constructs a chroot too, piuparts provides the --pbuilder (-p) option to use the pbuiler tarball to create the chroot.
<liw> This makes things much faster.
<zerwas> <Laney> QUESTION: Does the chroot have to be created every time?
<liw> On the server I used to use to run piuparts on all packages in Debian, a couple of years ago, piuparts took only a few seconds per typical small package, when using a pre-built chroot tarball.
<liw> Laney, so yeah, some kind of chroot gets created every time. When it is created by unpacking a tarball, it is pretty fast, just a couple of seconds
<liw> except on a netbook, perhaps
<liw> In addition to -p, piuparts can create its own tarballs. Or you can construct one by hand. But let's stick to pbuilder ones, they're easiest for most people.
<zerwas> QUESTION: (by Laney) piuparts understands debian and ubuntu releases, right?
<liw> Laney, yes; piuparts just uses apt-get to do stuff, so it is fine with anything that apt understands
<liw> next+1 section: Testing packages for newer releases
<liw> Piuparts can test packages for newer releases of Ubuntu, on older release of Ubuntu, if you use the debootstrap package from backports.
<liw> This way, if your machine runs intrepid, but you want to test that your package works in jaunty, you can.
<liw> okay, I have one final section to go through (Gotchas), and after that you're all ready to actually start running things without ruining things :)
<liw> last section: Gotchas
<liw> Piuparts works on a chroot.
<liw> This means that it does not properly protect the host system.
<liw> A malicious package, or a really unfortunately buggy package, may ruin the host system.
<liw> In the three years since I wrote piuparts, I have had that happen, but it's possible.
<liw> The solution, of course, is to fix piuparts to use KVM. (Volunteers welcome.) Or to run piuparts in a virtual machine (that's what I do now).
<liw> Piuparts can use a lot of CPU, RAM, disk I/O, and network bandwidth.
<liw> Be prepared for that. It's nowhere near as fast to use as, say, lintian.
<liw> Some of the checks piuparts does often fail, but they don't matter much in real life.
<liw> The manual page has lists all options, so you can look there if something annoys you.
<liw> For example, piuparts checks that all symlinks point somewhere that actually exist.
<liw> For some reason, this is triggered fairly often, so you can disable it with the --no-symlinks (-N) option.
<liw> piuparts in Ubuntu defaults to gutsy, since it hasn't been updated since the hardy release to a better default. You can blame me for that.
<liw> Actually, don't blame me, file a bug in Launchpad, and subscribe me to it (liw on Launchpad).
<liw> (Yes, everyone reading this can do that. I can take it.)
<liw> You can work around this by specifying the distribution manually with the -d option:
<liw> piuparts -d jaunty foo
<liw> OK. Go run piuparts now. I want questions.
<liw> <Laney> So what's the command to test upgradability from the current stable release? I guess -d intrepid -d jaunty foo.deb?
<liw> yep, unless I forget something
<Laney> \o/
<liw> it's possible piuparts can only test upgrades between releases for packages already in the archive, in which case you need to specify "-a foo" instead of "foo.deb"
<zerwas> <weboide> I just had this error: E: Couldn't find package debfoster
<liw> weboide, hmm, let me check
<liw> ah, I think we're hitting the difference between "main" in Debian and Ubuntu here
<liw> let me check something
<liw> the problem is that debfoster is in main in Debian (almost everything is), but in universe in Ubuntu, and piuparts was written before I really knew about Ubuntu, so it assumes it's enough to just use main
<liw> so the solution is to tell piuparts to use universe as well as main
<liw> except for some reason, for me the debfoster thing works, so I have a hard time testing, hmm
<liw> oh, I forgot -p
<liw> no wonder it was slow :)
<liw> debugging under public scrutiny does wonders for my humility muscles
<liw> weboide, anyway, the solution should be to specify the mirror for piuparts: -m 'http://your.mirrorhere/ubuntu main universe'
<liw> weboide, could you test that?
<weboide> liw: sure
<weboide> liw: It just passed the debfoster installation. so it helped :)
<liw> weboide, yay
<liw> any further questions? is everyone busy waiting for their machines to stop churning?
<jbernard> yep ;)
<mneptok> liw: i thought "Thou shalt not paste Unix commands from Finns on IRC into thy shell," was one of the new commandments.
<liw> I think we're just about out of time. Thank you, everyone. If you have further questions about piuparts, I'm often available on #ubuntu-devel and other IRC channels.
<dinxter> cheers liw!
<Ape3000> I just got it working :D
<liw> Ape3000, yeay
<zerwas> THANKS for all this liw!
<mvo> hello
<mvo> I think I'm next :)
<mvo> the next topic is "fun with python-apt"
<mvo> is there anyone interessted in montioring #ubuntu-classroom-chat for questions while I talk and paste them there ?
<dinxter> yep... oops :)
<mvo> aha, cool. I will just start then - you can ask questions anytime :)
<mvo> python-apt exposes most of the functionatliy that apt-get/libapt
<mvo> provide via python.
<mvo> so everything that apt-get/synaptic and friends can do can be done via python-apt
<mvo> lets start with a example to see how scary it really is :)
<mvo> Here is a simple example:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> cache = apt.Cache()
<mvo> pkg = cache["apt"]
<mvo> print "name: ", pkg.name
<mvo> print "installed version: ", pkg.installedVersion
<mvo> (feel free to copy/paste that into a text file and run to see what it outputs)
<mvo> This example illustrates the central piece of the libapt system. The
<mvo> package cache (availalbe as apt.Cache()). It is a fast representation
<mvo> of the data available in /var/lib/apt/lists and is created as a
<mvo> mmap-able binary file in /var/cache/apt/pkgcache.bin. It contains
<mvo> information about all the available binary packages and
<mvo> dependencies. In the python version it behaves like a dict.
<mvo> The other piece is the package object. It contains general information
<mvo> like name and description, version information and information about
<mvo> the status (installed, downloadable, ..). It can also be used to
<mvo> manipulate the state of the package.
<mvo> Documentation is available via: "pydoc apt", "pydoc apt.Cache", "pydoc
<mvo> apt.Package", etc. There is also a (very new and good) website
<mvo> available here:
<mvo> http://apt.alioth.debian.org/python-apt-doc/
<mvo> any questions so far?
<mvo> package can be in a lot of different states
<mvo> Here is a example to inspect package states:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> cache = apt.Cache()
<mvo> print "available packages: ", len(cache)
<mvo> for pkg in cache:
<mvo>     if pkg.isInstalled:
<mvo>        print "installed: ", pkg.name
<mvo> print "num installed: ", len([pkg for pkg in cache if pkg.isInstalled])
<mvo> If I'm going too fast (or too slow) please shout :)
<mvo> This shows that the cache can be manipulated in a similar way like a
<mvo> regular dict, it should feel "python-ish" :)
<mvo> this example again shows that the cache is the central structure, it contains all the package object that can be used to get information about the system
<mvo> QUESTION: what is the difference between Package.installedSize and Package.installedPackageSize?
<mvo> the package size is the size of the download (the compressed package itself)
<mvo> the installedSize is the actual size on disk
<mvo> of the unpacked thing
<mvo> it may be not 100% accurate because the package may create files in its postinst or other scripts
<mvo> but generally its good enough
<mvo> Lets do anohter example:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> progress = apt.progress.OpTextProgress()
<mvo> cache = apt.Cache(progress)
<mvo> print "summary: ", cache["apt"].summary
<mvo> This shows another important concept. Progress objects. Everytime apt
<mvo> does something that takes a long time (like building the caches,
<mvo> fetching stuff from the network or installing packages) it can use
<mvo> progress objects to give user feedback. There are some text based
<mvo> progress objects available that can be readily used.
<mvo> those progress object are regular python classes so they can be used as the basis to make fanncier progress information available
<mvo> gtk or qt progress would be a example
<mvo> currently there is text based progress available in the lib, but the jaunty version already has some gtk based progress widgets available as well
<mvo> that should make intergration even easier
<mvo> Here is a example how to create your own progress objects:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> class MyOpProgress(apt.progress.OpProgress):
<mvo>         " example class that demonstrates how a progress can be subclassed "
<mvo> 	def update(self, percent):
<mvo> 		print "update: ", percent
<mvo> 	def done(self):
<mvo> 		print "done!"
<mvo> progress = MyOpProgress()
<mvo> cache = apt.Cache(progress)
<mvo> print "summary: ", cache["apt"].summary
<mvo> This creates a new class based on the normal progress class that
<mvo> overwrites the the functions called by apt.
<mvo> information about the methods in the progress code is avialable via "pydoc apt.progress"
<mvo> there is also a lot of example code in update-manager or gdebi (big users of pyhton-apt :)
<mvo> all good so far? examples working :) ?
<mvo> The python-apt system is not limited to querrying but it can also
<mvo> perform actions. Here is a example (that needs to run as root) of a
<mvo> apt-get update like call:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> fetchprogress = apt.progress.TextFetchProgress()
<mvo> cache = apt.Cache()
<mvo> cache.update(fetchprogress)
<mvo> cache.open(apt.cache.OpProgress())
<mvo> Its important to re-open the cache after it was updated (this will
<mvo> eventually become part of update() api I think so that it happens
<mvo> automatically).
<mvo> while the api is pretty solid there are some small warts still (like this open() is required after update())
<mvo> we are working on it :)
<mvo> fetchprogress can again be your own class, it just has some more methods that can be overwriten
<mvo> We can of course install stuff too:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> fetchprogress = apt.progress.TextFetchProgress()
<mvo> installprogress = apt.progress.InstallProgress()
<mvo> cache = apt.Cache()
<mvo> cache["2vcard"].markInstall()
<mvo> cache.commit(fetchprogress, installprogress)
<mvo> cache.open(apt.cache.OpProgress())
<mvo> the open() is important again so that apt knows about the chanages. you could omit it and save time is the cache is not needed afterwards
<mvo> e.g. because your applicaiton exists after it installed something
<mvo> (the last line should be cache.open(apt.progress.OpProgress()) - thanks to maxb)
<mvo> any change done in the cache is just "simulated" until commit() is called
<mvo> by default python-apt will ensure that everything is consistent, i.e. if you install a package in the cache that requires dependencies, it will automatically mark them for install in the cache as well
<mvo> This lets us do multiple install/removes too, it will commit
<mvo> whatever is currently set in the cache. So its a good idea to inspect
<mvo> the cache before we commit changes. This is done like this:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> cache = apt.Cache()
<mvo> cache["4g8"].markInstall()
<mvo> for pkg in cache.getChanges():
<mvo>     if pkg.markedInstall:
<mvo>        print "installing: ", pkg.name
<mvo>     elif pkg.markedUpgrade:
<mvo>        print "upgrade: ", pkg.name
<mvo>     elif pkg.markedDelete:
<mvo>        print "removing: ", pkg.name
<mvo> See the "pydoc apt.package" documentation for all the available
<mvo> states.
<mvo> python-apt gives you full control over the consistency if you want, you can e.g. prevent it from automatically fixing problem and do that yourself, but its recommended to let it run in autoFix mode :)
<mvo> states like automatic dependencies (for apt-get autoremove) will also be done correctly and a commit() will do the right thing and write them out
<mvo> Each package has two versions. The installed version (if any) and the
<mvo> candidate version. Those can be querried via:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> cache = apt.Cache()
<mvo> for pkg in cache:
<mvo>     if pkg.isUpgradable:
<mvo>        print "pkg '%s': now '%s' candidate: '%s'" % (pkg.name, pkg.installedVersion, pkg.candidateVersion)
<mvo> Each package can of course have multiple versions, but apt will show you two by default
<mvo> the candidate is the one that you can install
<mvo> and the installed is self explaining :)
<mvo> the candidate version can be manipulated with the apt policy and by setting it directly, but that again is not recommended, usually its doing the right thing when it calculates the candidate
<mvo> usually the candidate is just the higest available downloadable version
<mvo> One nice feature of python-apt is that you can give it a alternative
<mvo> rootdir to look for status file and sources.list. If you want to know
<mvo> what warty loooked like (back in the days) you could do:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> import os
<mvo> import os.path
<mvo> alt_root = "/tmp/warty"
<mvo> for d in ["/etc/apt/",
<mvo>       	  "/var/lib/apt/lists/partial",
<mvo>       	  "/var/lib/dpkg",
<mvo> 	  "/var/cache/apt/archives/partial"]:
<mvo> 	  os.makedirs(alt_root+d)
<mvo> open(alt_root+"/var/lib/dpkg/status","w")
<mvo> open(alt_root+"/etc/apt/sources.list","w").write("deb http://old-releases.ubuntu.com/ubuntu warty main")
<mvo> c=apt.Cache(rootdir=alt_root)
<mvo> c.update(apt.progress.TextFetchProgress())
<mvo> c.open(apt.progress.OpProgress())
<mvo> print "warty apt version: ", c["apt"].candidateVersion
<mvo> in this example first a bit of directory structure is created (that should probably go into the lib itself) and then the alternative rootdir is created
<mvo> the cache then reads the information from there instead of the main system
<mvo> this is handy in some situations, e.g. to debug stuff or to calculate differences in the packages between multiple version or for history interesst or or .)
<mvo> you could do e.g. a daily "whats new available in jaunty" thing with it while still runing hardy etc
<mvo> you may have noticed that the apt.package.Package object does not expose everything there is in a package record
<mvo> (the package record is the stuff that is output via apt-cache show package)
<mvo> e.g. apt-cache show apt has a task field
<mvo> that is not exposed there
<mvo> or the bugs field
<mvo> the reason is that in the mmap struture only the most important information is represented
<mvo> for performance reasons
<mvo> but the information is still available, its just a little bit slower when checked :)
<mvo> (and a lot slower if you querry every package with the full record instead of the mmap-ed struture)
<mvo> The package object does not expose all fields of a package, just the
<mvo> most important ones. To access the others, there is the package
<mvo> "Record". It contains the full content of the Packages entry for the
<mvo> particular package. It can be accessed as a dict or as a string. Here
<mvo> is a example:
<mvo> #!/usr/bin/python
<mvo> import apt
<mvo> cache = apt.Cache()
<mvo> pkg = cache["synaptic"]
<mvo> print "Bugs entry: ", pkg.candidateRecord["Bugs"]
<mvo> print "Full record: ", str(pkg.candidateRecord)
<mvo> This covers the most important aspects of the python-apt high level
<mvo> interface.
<mvo> more examples (of mixed quality :P are availalbe in the python-apt examples folder:
<mvo> /usr/share/doc/python-apt/examples/
<mvo> There is also the aptsources interface to manipulate the sources.list
<mvo> and the low level apt_pkg and apt_inst interfaces that provide a
<mvo> direct mapping of the underlaying C++ interface of libapt to python
<mvo> (and its not very python-ish :). apt_pkg/apt_inst is used to implement
<mvo> the higher level apt interface.
<mvo> apt_pkg is nowdays no longer needed for most tasks, the apt interface covers most of it
<mvo> apt_pkg does not follow PEP08 (the python code style guidelines) and is generally a bit "rough"
<mvo> so only use it if you really need it :)
<mvo> otherwise use "import apt"
<mvo> Developement power is always welcome! Projects that use python-apt are
<mvo> update-manager, gnome-app-install, gdebi, software-properties and
<mvo> more. If you are interessted in hacking on python-apt (or any of the
<mvo> tools that use it) you are very welcome to do so. The code is
<mvo> maintained in bzr.
<mvo> that was my overview about python-apt - any questions?
<mvo> or suggestions?
<mvo> if there are none, thank you very much for your attention and I hope you have enjoyed it :)
<jbernard> thanks alot, very helpful
<mvo> let me answer the packagekit question first
<mvo> packagekit is currently in universe, we plan to move it to main for jaunty, but we can not use it for everything
<mvo> the problem is basicly that packagekit does not allow anything like debconf during installation
<mvo> that is fine most of the time
<mvo> but there are packages that require some form of interaction, otherwise they fail to install
<mvo> thing of virtualbox (at least that used to need it)
<mvo> or java
<mvo> or stuff like this
<mvo> so we will use it for some stuff were we know its save to use
<mvo> but not for e.g. update-manager where it maybe any package (including those that require debconf)
<mvo> but packagekit is really something on top of python-apt, its a layer higher
<mvo> (in fact, the packagekit backend for apt is implemented using python-apt :)
<mvo> QUESTION: i take it getting the apt.Cache() locks the cache file? if so how do i release it for other apps
<mvo> threre are the "apt_pkg.PkgSystemLock() and apt_pkg.PkgSystemUnLock()" calls for this
<mvo> if python-apt is used as non-root then no locking is needed, that is the safest option :)
<mvo> gdebi for example only switches to root for the actual installing, everything else is done as the user
<mvo> a last note. a pretty nice overview over the apt system is here: http://algebraicthunk.net/~dburrows/blog/entry/images/apt-diagram-simple.png
<iulian> Next up is rockstar and beuno with "Bazaar and Launchpad - How to do it".
<iulian> Rock on guys!
<rockstar> Hi everyone.  My name is Paul Hummer, and I work on the Launchpad Code team.  Also with me is my cow orker, Martin Albisetti, who is awesome in his own rite.
<rockstar> Today we're going to be talking about some good principles and practices for using bzr with Launchpad.  Most of these things are only suggestions, but I would say that they are very STRONG suggestions.
<rockstar> First, some pre-requisites...
 * beuno waves
<rockstar> If you're not using bzr from the bzr ppa, you REALLY should be.
<rockstar> It can be found here: https://edge.launchpad.net/~bzr/+archive/ppa
<rockstar> This will make sure you're getting the best out of Bazaar, and in effect, the best out of Launchpad.
<rockstar> I'm not sure if emmajane covered this in her session, but I can't stress enough the importance of setting your name in bzr.
<rockstar> You can do this at the terminal by typing `bzr whoami` first.
<rockstar> If I were to type that on this system without configuring it, it would return <rockstar@megatron>, as my system user is rockstar, and my system name is megatron.
<rockstar> If it returns a <user@host> to you, you need to configure it.
<rockstar> So you'll need to type `bzr whoami "Paul Hummer <paul@example.com"` obvious substitutions.
<rockstar> ...apply
<rockstar> Now bzr will know who attribute your revisions to.
<holloway> sorry for the interrupt, you mean `bzr whoami "Paul Hummer <paul@example.com">` ?
<rockstar> `bzr whoami "Paul Hummer <paul@example.com>"`
<rockstar> Thanks for the clarification beuno
<beuno> holloway, please head over to #ubuntu-classroom-chat for questions
<beuno> apw, asked: QUESTION: is bzr whoami global or per checkout?
<rockstar> Er, holloway, thanks.
<holloway> yeah sorry
<beuno> answer: global, although you can specify it per branch additionally
<rockstar> apw, yes, what beuno said.  ~/.bazaar/locations.conf is where you'd set it per banch.
<rockstar> s/banch/branch
<rockstar> It's important that the email address you set here is one that Launchpad knows about (and it's confirmed).
<rockstar> Launchpad will then look at those revisions, and say "I know this email address!  It belongs to X user!"
<rockstar> Then, when you look at a branch's revisions, the ones that belong to you will be linked to your account.
<rockstar> And, for those who are karma happy, you'll get karma for the revisions that belong to you.
<rockstar> So, let's get on to the Launchpad part.
<rockstar> You've got your project all set up, with it's accompanying branding bling, and now you're ready to make it host some code.
<rockstar> For the next few examples, I'm going to use my username and a project I work on called Entertainer.
<rockstar> So I have a branch that I'd like to be considered THE entertainer branch.  It's the one that releases will be cut from.
<rockstar> Inside that branch I'll type `bzr push lp:~rockstar/entertainer/trunk`
<rockstar> This will push up a branch of entertainer called trunk
<rockstar> Now I need to make launchpad reflect that this is the Entertainer "trunk"
<rockstar> I do that by setting it as the "Development Focus"
<rockstar> This has a few side effects.
<rockstar> The first is that I can now branch that same branch by typing `bzr branch lp:entertainer`
<rockstar> Launchpad knows the development focus branch is lp:~rockstar/entertainer/trunk and so that's the branch I end up with.
<beuno> < apw> QUESTION: how did you tell it that it was the Development Focus, was that a ticky somewhere in LP ?
<rockstar> Also, when new users come to hack on my project (because that's Launchpad's best thing about it), they'll know where to focus their efforts.
<rockstar> apw, if you go to https://edge.launchpad.net/entertainer you'll see a link that says trunk (focus of development)
<rockstar> Click on that, and you'll see a link to the "trunk" branch.
<rockstar> On the right hand side, you'll see a Link to branch link.
<rockstar> That's how you would set it.
<rockstar> I need to add a caveat here.  It's best to have you trunk branch owned by a team (this will require creating a team).
<rockstar> This way, you don't block development landings when you go on vacation for two months.  Other members can merge branches into trunk while you're gone.
<rockstar> Alright, moving on...
<rockstar> Now we have the "trunk" set up.
<rockstar> I'm going to context switch to act as a user named cthulu on Launchpad.
<rockstar> I come to the entertainer project and I want to hack on it.
<rockstar> The first thing I want to do is to get a local mirror of trunk.
<crashsystems> I'm late
<rockstar> The benefit of a local mirror of trunk is that it doesn't require internet connections to create a new branch.
<rockstar> So I `bzr branch lp:entertainer` and now have a local branch called entertainer.
<rockstar> So I branch from that one to fix bug 1234567 by doing `bzr branch entertainer bug-1234567`
<rockstar> I can then go into the bug-1234567 branch, and push it to Launchpad by doing `bzr push lp:~cthulu/entertainer/bug-1234567`
<beuno> 16:25 < DoruHush> QUESTION: How a sub-branch of a main branch of a project get registred. What steps a user should to register a sub-branch (his working bzr
<beuno>                   branch in Launchpad, not localy ) ?
<beuno> 16:26 < DoruHush> like another branch in a team project
<rockstar> I blogged about some configuration settings that I use to make pushing simpler here : http://theironlion.net/blog/2009/01/13/using-bazaar-launchpad-making-pushing-easy/
<rockstar> DoruHush, I think what you're asking is what I just went over.  Do you have other questions?
<rockstar> The branch for bug-1234567 is now registered with Launchpad as a hosted branch (notice I didn't have to use the Web UI at all.  Launchpad is so s-m-a-r-t)
<beuno> < postalchris> Is the bug-XXXX branch name magically recognized by Launchpad, or are you using that as a personal convention?
<rockstar> Personal convention really.
<rockstar> However, this would be a good time to note a cool way to link your branch to a bug.
<rockstar> So I (as cthulu) hack and commit a few times, and finally get the code that fixes bug 1234567.
<rockstar> So when I commit, I'll type `bzr commit --fixes=lp:1234567`
<rockstar> When that revision gets pushed, it'll automatically link the branch to the bug.
<beuno>  newz2000> QUESTION: is there a convention you use when working on new features not driven by bugs?
<rockstar> newz2000, not really.
<rockstar> newz2000, for instance, I just created a branch called "do-some-important-things-with-unicode"
<rockstar> Branch names are only limited by your own creativity.
<rockstar> I suggest leaving out cursewords unless the branch absolutely warrants it.  :)
<rockstar> james_w also notes "for the packagers amongst you if you use changelog bug closing and debcommit then (from intrepid onwards) the links will happen magically"
<rockstar> Alright, moving on.
<rockstar> So now cthulu has his branch all completed, with tests (because he wrote his tests first, right?), and he wants to see his work land in mainline.
<rockstar> Mainline being "trunk"
<rockstar> cthulu, however, doesn't have write privileges to trunk, and, frankly, teh Entertainer dev process is a little less "Wild west" with their commits.
<rockstar> We require code reviews and all that.
<rockstar> Looking at his branch page on Launchpad, cthulu then clicks "Propose for merging into another branch"
<rockstar> He then follows the form through, setting it to land on trunk, and, since the Default Reviewer is set to Entertainer-Releases, he doesn't have to mess with that.
<rockstar> Although, when I have a Launchpad branch that introduces new ui, I usually will request beuno to look at.  He's awesomer than me at that stuff.
<rockstar> So now there's a new merge proposal showing cthulu's bug-1234567 branch as the "source branch" and lp:entertainer as the "target branch"
<beuno> < apw> QUESTION: if i commited something --fixes=lp:123456 how can i see that in bzr on my branch?
<rockstar> apw, on Launchpad, when you view either that branch or that bug, you'll see a link to the other.
<apw> nothing on my local branch copy?
<rockstar> apw,  not sure actually.  I've never had to do that.  beuno?
<beuno> apw, I don't think we expose that through the command line
<beuno> it's hidden meta-data that you can get out through the API
<rockstar> apw, I think I could probably whip together a plugin for that data later.
<rockstar> Alright, moving on to the review process.
<rockstar> I (as myself again) get an email that there's a branch proposed for merging.
<rockstar> First I get really excited to see a new contributor.
<rockstar> Then I'll look at the branch, and usually look at a patch by doing `bzr merge lp:~cthulu/entertainer/bug-1234567` in my trunk mirror, and then `bzr diff` to look at the diff.
<rockstar> Soon, Launchpad will generate that diff for you.
<rockstar> I'll make comments and suggestions, and then I'll give it a vote.  For this example I'll vote "Needs Fixing"
<rockstar> cthulu will then respond with justifications on why he did things the way he did, and fix the code to follow the Entertainer coding conventions.
<rockstar> After I look at it again, I see the changes made, and I change my review vote to "Approve"
<rockstar> At this point, the branch is ready to be merged.
<rockstar> However, my band had an emergency tour to go on with my favorite band ever, so I disappear off the face of the planet for 6 months.
<rockstar> Not to worry though, because there are other members of entertainer-releases that can merge (or "land") cthulu's changes into trunk.
<rockstar> They do this by merging his branch into their local mirror copy, committing it (with a detailed commit message), and then pushing it up.
<rockstar> Any questions?
<rockstar> I should also mention that if you're prototyping something, and it doesn't have a project in LP, you can push what we call a "junk branch".
<rockstar> We don't call it "junk" as a judgment of your coding skills, but because it's either going to become a project, or just scratch your itch.
<beuno> < ia> QUESTION: how to create project at launchpad, so anyone else could download source via "bzr branch lp:<project>", not via "bzr branch
<beuno>             lp:~<id>/+junk/<project>"?
<rockstar> You can push a junk branch by doing "bzr push lp:~rockstar/+junk/total-hack"
<rockstar> ia, creating a project is a pretty easy process.  https://edge.launchpad.net/projects/+new
<rockstar> Then just pick up where I started in this session.
<rockstar> Any other questions?
<rockstar> Also, if a project you like is using CVS or Subversion, but won't give you access to their repo, you can set up an import branch.
<rockstar> Import branches sync a CVS or SVN trunk to a bzr branch that you can branch from and hack on.
<rockstar> This way, when you submit a patch to upstream, you also have a versioned path to creating that patch, instead of just having an svn checkout or something.
<beuno> < LaserJock> QUESTION: so do you do all the code review via email?
 * beuno doesn't
<rockstar> LaserJock, I do most of my code reviews via email, because I like to use Vim as I review a patch.
<beuno> < LaserJock> QUESTION: is there any real advantage to using a vcs-import instead of bzr-svn?
<rockstar> LaserJock, but I sometimes use the web interface.
<rockstar> LaserJock, well, the real advantage is that a vcs-import will stay synced for you, instead of you having to sync it yourself.
<LaserJock> rockstar: assuming the vcs-import stays in sync, right
<rockstar> LaserJock, they usually do once the initial import is over.
<rockstar> There is some work being done to the import system to make it even more robust.
<LaserJock> .. I'll leave that one alone then ;-)
<rockstar> The import system uses cscvs (https://edge.launchpad.net/launchpad-cscvs) to import.  Patches welcome.
<rockstar> <tyhicks> QUESTION: In terms of migrating a project to bzr/launchpad, is it possible to import the code from git and preserve all commit history?
<rockstar> I know there is some work being done on bzr-git (/me looks at jelmer), but currently, the only way to import is using fastexport/fastimport
<rockstar> Launchpad is planning on supporting git imports this year.
<rockstar> Alright, thanks everyone!
<dinxter> thanks!
<Ape3000> Anybody know anything about the time of "Debugging program crashes by pitti"?
 * BenC wonders if there is a moderator, or should I just jump in
<iulian> Thank you rockstar, beuno!
<iulian> We now have BenC with "Packaging Kernel modules with DKMS."
<iulian> The stage is yours, Ben.
<BenC> iulian: Thanks
 * Arc applauds for BenC
<crashsystems> was this discussion logged anywhere?
<Ape3000> crashsystems: It can be soon fount here: https://wiki.ubuntu.com/MeetingLogs/devweek0901/BzrAndLp
<BenC> I have to start off by saying that because of last minute schedule changes, I'm going to have to keep this short and sweet :)
<BenC> So this sessions is about DKMS, and using it to package kernel modules...
<DoruHush> thank you
<BenC> DKMS is a program that allows you to easily manage sources for modules, and have them automatically build against the kernel you are running/installing
<BenC> Generally it's used by users so they can have third party modules, and have those modules stay in sync with the kernel provided by your distro
<BenC> But we also use it for modules provided by vendors, especially those where there is a binary blob or other closed source portion (e.g. broadcom, fglrx, nvidia)
<BenC> http://kernel.ubuntu.com/~bcollins/dkms-presentation/
<BenC> At the above URL, you can find a presentation I did awhile back, and an example dkms package created for the presentation
 * BenC pauses for questions...
<BenC> Ok, I guess I'll go into some details of the package itself
<BenC> The source is always installed as /usr/src/<module>-<version>
<BenC> the package registers this with dkms during postinst
<BenC> in the above directory is a dkms.conf file that describes the module and how it needs to be built
<BenC> When the kernel is upgraded (or specifically, when the headers are upgraded) a script installed by dkms is triggered, and checks if any of the modules need to be rebuilt
 * BenC is assuming people interested in the kernel are already out drinking right now
<BenC> Great, that will let me wrap things up quick so I can take care of some other things...
<BenC> Last chance for questions...
<BenC> Ok, thanks for having me...have a great weekend everyone
<Dykam> BenC, you should write this up in a text file somewhere, so people can read it later...
<Dykam> it is a join/part mess now
<dinxter> thanks BenC
<duanedesign> .
<cody-somerville> Hello Folks :)
<thiebaude> hi
<cody-somerville> A coworker of mine is just showing me Xubuntu running on some ARM hardware. :) Pretty neat.
<cody-somerville> Anyhow, today I'm here to chat about Xubuntu
<cody-somerville> I'm going to cover some of the upcoming changes in Jaunty, how you can take part in making those changes, and then I'm going to hand things off to charlie-tca
 * charlie-tca waves
<cody-somerville> charlie-tca will talk to you about how to get involved in Xubuntu via testing and QA efforts
<cody-somerville> So, first, lets start off with what I'm sure most Xubuntu users would like to hear about... Xfce 4.6.
<cody-somerville> We currently have Xfce 4.4.3 uploaded to Jaunty and backported to Intrepid. We're currently working on preparing and uploading the third beta of Xfce 4.6.
<cody-somerville> Xfce 4.6 will be the next major release of the Xfce desktop
<cody-somerville> environment. The previous release was 4.4 with the last bugfix release
<cody-somerville> being 4.4.3.
<cody-somerville> Xfce 4.6 comes with a lot of new components, some of them replacing old
<cody-somerville> code and some of them being completely new.
<cody-somerville>  
<cody-somerville> Replaced components:
<cody-somerville>  * libxfce4mcs      => xfconf
<cody-somerville>  * xfce-mcs-manager => xfconf, xfce4-settings
<cody-somerville>  * xfce-mcs-plugins => xfce4-settings
<cody-somerville>  * xfce4-mixer      => xfce4-mixer (rewrite)
<cody-somerville>  * xfce4-appfinder  => xfce4-appfinder (rewrite)
<cody-somerville>  
<cody-somerville> New components:
<cody-somerville>  * libxfce4menu (used by xfdesktop and xfce4-appfinder)
<cody-somerville> Lets take a quick look at some of the changes:
<cody-somerville> While Xfce 4.4 shipped a centralized settings storage system with
<cody-somerville> dynamically loaded plugins, 4.6 features a D-Bus based settings
<cody-somerville> daemon (xfconfd). All settings dialogs are just standalone
<cody-somerville> applications now which makes the whole platform more flexible. You
<cody-somerville> can now much easier write a settings dialog and remove/add
<cody-somerville> components from/to Xfce.
<cody-somerville> In addition to xfconf and the settings dialogs being ported to
<cody-somerville> xfconf, there will also be tools addressed to users who would you
<cody-somerville> like to have direct access to the settings. There is a shell
<cody-somerville> application xfconf-query which allows to list/get/set properties
<cody-somerville> and a graphical settings editor is in development and will most
<cody-somerville> likely be part of 4.6 as well.
<cody-somerville> So scripting your desktop will become super-duper easy in Xubuntu.
<cody-somerville> One major complaint I hear is about keyboard shortcuts in Xubuntu, luckily Xfce4 developers have addressed that too. Xfce4 developers have tried to make the keyboard shortcuts settings more
<cody-somerville> transparent to the user. Shortcut themes have been completely
<cody-somerville> dropped and there are dialogs now which help resolving conflicting
<cody-somerville> shortcuts between xfce4-settings (command shortcuts) and xfwm4
<cody-somerville> (window manager shortcuts).
<cody-somerville> Any questions thus far?
<cody-somerville> Okay, awesome.
<cody-somerville> Another major complaint was the menu!
<cody-somerville> In 4.4 xfdesktop used a pseudo-fd.o-compliant menu system. In 4.6
<cody-somerville> this is replaced by libxfce4menu which aims at implementing the
<cody-somerville> fd.o menu spec. It's still in development but covers enough of the
<cody-somerville> specification already to replace the old code.
<cody-somerville> The volume control (xfce4-mixer) has also been replaced with a
<cody-somerville> completely new mixer based on GStreamer 0.10. This removes the need
<cody-somerville> to maintain support code for different sound architectures and also
<cody-somerville> provides some new features.
<cody-somerville> QUESTION:will xubuntu continue to be supported by low machines (~192 RAM)even though applications are growing?
<cody-somerville> This is a difficult question to answer. I'd certainly like to see Xubuntu attempt to maintain a lightweight, responsive feeling. Unfortunately, performance degradation in Xubuntu often has to do with low-level components such as X and the kernel.
<cody-somerville> However, there has been changes made in Jaunty that will hopefully see a faster login to desktop time.
<cody-somerville> QUESTION: What "different sound architectures" did you have in mind?
<cody-somerville> bullgard4, since the new xfce4-mixer uses gstreamer, it no longer has to maintain code for different sound architectures like alsa, esd, etc. Gstreamer takes care of it.
<cody-somerville> Anyhow, if you'd like to see some videos of Xfce 4.6 in action, an Xfce4 Developer has posted some here:http://lunar-linux.org/~jannis/videos/xfce/
<cody-somerville> Some other enhancements that we're making to Jaunty include:
<cody-somerville>  * Samba browsing via Thunar
<cody-somerville> You can take a look at a screenshot here: http://cody.zapto.org/screenshots/xubuntu_delivers_samba.jpg
<cody-somerville>  * GIO Mount Manager
<cody-somerville>  * And other improvements to thunar such as a meta-data pane
<cody-somerville> You can take a look at a screenshot here:http://cody.zapto.org/screenshots/Screenshot%20-%20thunar4.png
<cody-somerville>  * Search in Thunar
<cody-somerville> You can take a look at a screnshot here: http://cody.zapto.org/screenshots/Screenshot%20-%20thunar2.png
<cody-somerville> QUESTION: Will old plugins to Thunar and Panel work?
<cody-somerville> TheSheep, yes
<cody-somerville> The next item on my list of things to discuss with you guys today is getting involved.
<cody-somerville> Getting involved in Xubuntu is easy and fun! :)
<cody-somerville> To start, simply sign up on our xubuntu-devel mailing list and join #xubuntu-devel on Freenode
<cody-somerville> We're a friendly bunch and enjoy helping folks learn the ropes :)
<cody-somerville> There are tons of opportunity to take initiative and make your mark.
<cody-somerville> Packaging, artwork, evangelism, coding, web design, documentation writing, etc. you name it.
<cody-somerville> :)
<cody-somerville> Not to mention bug triage and testing!
<cody-somerville> charlie-tca, :)
<charlie-tca> Thank you, cody-somerville
<charlie-tca> I am the lead for Xubuntu QA, Testing and Bug Triage.
<charlie-tca> Xubuntu is an ideal candidate for old or low-end machines, thin-client networks, or those who would like to get more performance out of their hardware.
<charlie-tca> Also, Xubuntu is the Xfce-based distribution with a native 64-bit architecture. We produce both a 32-bit and 64-bit versions.
<charlie-tca> We also produce ports for the Mac PowerPC and Sony PlayStation 3.
<charlie-tca> Along with producing those versions comes testing to make sure the distribution actually works.
<charlie-tca> The goal is to have each image tested thoroughly before release. Being a small group, that becomes difficult at times.
<charlie-tca> To accomplish this testing, almost any hardware will work. I personnally favor a PIII myself.
<charlie-tca> I do not use any restricted drivers, and normally get 1400x900 resolution out of these machines. The cpu is only 866MHz.
<charlie-tca> We have information on the xubuntu developers wiki at https://wiki.ubuntu.com/Xubuntu/Testing/TestingInfo for testing Xubuntu.
<charlie-tca> Since it is Xfce-based, many of the tests are unique to Xubuntu. We also use Thunar for the file manager and Listen for music.
<charlie-tca> We maintain a short test case for daily images, to allow a quick test to be done. This test is also used for the liveCD testing and shouldn't take more than about 5 minutes to complete.
<charlie-tca> We also maintain a longer, more involved test for milestone releases. This allows more thorough testing before the users get the image.
<charlie-tca> When testing the images, results are reported on the qa tracker. This allows the Ubuntu QA team to know the images are good or bad, also.
<charlie-tca> Most of the bugs we find in Xfce are forwarded upstream to http://bugzilla.xfce.org/
<charlie-tca> OpenOffice.org is not included as a default in Xubuntu, so we handle most of the Gnumeric and AbiWord bugs too, since those are the default applications. They are both very powerful for the user, yet lightweight.
<charlie-tca> We have provided procedures for forwarding Xfce and AbiWord bugs upstream. These procedures help to smooth the processes greatly.
<charlie-tca> We work very close with xfce, abiword and gnumeric bug teams to help resolve the bugs found.
<charlie-tca> We have some really exciting things happening, with Xfce 4.6 coming! We will be the first distribution running this, and will be doing extensive tests to make sure it works.
<charlie-tca> we welcome anyone who would like to assist in development, testing, and bug triage!
<charlie-tca> Any questions?
<charlie-tca> <cody-somerville> QUESTION: What do I do when I find a bug?
<charlie-tca> I did leave that out, didn't I. There is information on https://wiki.ubuntu.com/Xubuntu/Bugs for filing bugs found in Xubuntu testing.
<charlie-tca> We do report bugs found through launchpad.
<charlie-tca> We also try to make sure the bugs are forwarded upstream when needed.
<charlie-tca> <tictacaddict> QUESTION: Is XFCE 4.6 planned for Jaunty, then?
<charlie-tca> At this time, we are planning to include it in Jaunty.
<charlie-tca> The beta 3 is being packaged for us at this time. Hopefully, I get to test it before the Alpha4 release.
<charlie-tca> <bullgard4> charlie-tca: GNOME is there because many users like it.Why don't they choose to take XFCE instead?
<charlie-tca> Great question! I used Gnome and Ubuntu desktop in the past. I found that on my older equipment, Gnome would react much
<charlie-tca> too slow for my uses. I could firerox by itself, with at most 4-5 tabs.
<charlie-tca> I had to replace OpenOffice.org apps with AbiWord and Gnumeric.
<charlie-tca> Xubuntu comes ready for me to use on that same equipment. I can now use the system without replacing many of the applications.
<charlie-tca> Xubuntu's lower memory requirement and use of light weight applications fit the older hardware very well.
<charlie-tca> Any more questions?
<charlie-tca> I think that for anyone trying it, you will find that Xubuntu gives excellent performance with no loss of applications.
<charlie-tca> We maintain the same release schedule as Ubuntu, and did release Hardy Heron 8.04 as an LTS.
<charlie-tca> Since we are using the same repositories as Ubuntu, Xubuntu is as up to date as Ubuntu.
<charlie-tca> <ongolaBoy> QUESTION: when will be xubuntu 8.04.2 available ?
<charlie-tca> Due to the packaging requirements, Xubuntu will not be releases as .2 ; however, if you update your system, it is automatic.
<charlie-tca> The .2 release is simply Ubuntu 8.04 with the latest updates to the point of the .2 release.
<charlie-tca> <ongolaBoy> charlie-tca: ok. so the last spin was xubuntu 8.04.1
<charlie-tca> Yes, the last 8.04 spin was .1
<charlie-tca> And, it will probably stay as the 8.04.1 through it's lifetime. Our images are built by the same team, and do use most of the same software.
<charlie-tca> I would like to thank everyone for participating! Have a great day!
<iulian> Thank you cody-somerville, charlie-tca.  That was very interesting.
<iulian> OK, so I'm afraid I will have to say that this is the end of Ubuntu Developer Week.
<iulian> I would like to thank you all for participating and have a wonderful weekend!
<iulian> I am sure you all had a great time!
<mneptok> iulian: multsumesc!
#ubuntu-classroom 2009-01-24
<The|Back|> find quote
<The|Back|> oops
<schwinn434> ./ date -u
<jmarsden|work> schwinn434: Please type the command date -u in a *terminal* (shell) window, not into an IRC client.
<Johane> Hello
<SherokiX> good night
#ubuntu-classroom 2009-01-25
<darkslayer> irc://irc.rizon.net/anime-keep
<pidgin1>  
<FrankJPLang> date -u
#ubuntu-classroom 2010-01-25
<Flannel> jono: Please test
<jono> thanks Flannel
<jono> works :)
<nigel_nb> great :)
<jono> why is it set like this at the moment?
<nigel_nb> either someone forgot or spam
<jono> gotcha
<jono> thanks!
<jono> I am just testing some Lernid fixes
<nhaines> haha
<jono> everything seems to be working pretty well
<nhaines> That one was a doozy.  ;)
<jono> lol nha
<jono> nhaines,
<jono> it now has a more native IRC pane
<jono> app indicator support
<jono> and a bunch of fixes, ready for dev week
<nhaines> Ooh!  Just in time.  :)
<nigel_nb> oh great :)
<jono> just want to fix up some last bits and then release a package
<jono> :)
<nigel_nb> jono, you got rid of webchat? (native irc?)
<jono> nigel_nb, yep
<nigel_nb> awesome! looking forward to UDW
<paultag> jono, did you fix the IRC backend to fragment the window viewer, so it does not use two nicks?
<nigel_nb> paultag, hm, I think so, I only see jonobacon and not lernid_jonobacon ;)
<paultag> awesome :)
<paultag> Then again I was not in -chat
<paultag> Ah, there it is. Well done jono
<jono> just finalizing some fixes
<jono> and then will pump out a release
<persia> Can lernid point at a proxy for client multiplexing, or does it always connect here?
<nhaines> I don't understand how to get session information into Lernid.  :)
<paultag> Perhaps lernid can ship with bindings for Firefox. So we can send lernid:// URLs to new users
<paultag> lernid://irc.freenode.net/#ubuntu-classroom
<paultag> and tweet the hell out of it :)
<jono> anyone on Karmic here?
<paultag> jono, yo
<jono> paultag, are you on Karmic?
<paultag> jono, yes
<jono> paultag, could you check out Lernid and test it?
<paultag> jono, sure thing, off your PPA?
<jono> bzr branch lp:lernid
<jono> and then:
<jono> quickly run
<paultag> Sure
<jono> make sure you have it's dependenices
<paultag> jono, sure thing. Let me give it a go
<jono> thanks paultag!
<paultag> sure thing
<jono> paultag, any luck?
<paultag> jono, working on getting EventManager in place
<paultag> jono, is it in the repos?
<jono> paultag, EventManager in place?
<jono> no, like I say, I just want you to check out the code and run it
<jono> <jono> bzr branch lp:lernid
<jono>  and then:
<jono>  quickly run
<paultag> jono, oh, I was doing setup. Gimme a sec to grab quickly
<jono> cool
<jono> I just want someone to test it on Karmic
<jono> I am running Lucid
<paultag> Righto
<nhaines> jono: I can test it after the Ubuntu California meeting.
<paultag> Jeez, quickly is huge
<jono> nhaines, can you test, would be awesome
<paultag> nhaines, oh christ. I'm glad I'm not there ;)
<paultag> jono, another minute or so
<nhaines> jono: I'd be happy to.  :)
<jono> thanks paultag
<jono> cheers nha
<jono> cheers nhaines
<paultag> jono, it's up. Let me hammer on her
<jono> paultag, cool, join Ubuntu Example Week
<paultag> jono, I did, it bombed out. No IRC connection
<paultag> Oh, there I am
<paultag> jono, looking good so far
<jono> paultag, cool, check Lernid
<paultag> jono, I have it up :)
<nhaines> Heh, longest. LoCo meeting. ever.
<nhaines> I'm really looking forward to seeing Bazaar Explorer.  Sounds awesome.
<nhandler>  QUESTION: Will I get an error in lernid with this?
<paultag> already tried nhandler :)
<paultag> night nhandler, nhandler_lernid :)
<nhandler> ANSWER: Nope. But it might be a good idea to add an anchor at the start of the UDW schedule so that lernid can display the timetable portion of the page (which is the most interesting part)
<nhaines> Looks like I'm missing gtkmozembed
<nhandler> nhaines: If you are running the bzr version, it won't pull in the dependencies. Install lernid from a ppa first, and then run it from bzr
<nhaines> Details!
<nhaines> Hehe, let me do that.
<thebwt> test...
<nhaines> Hm, seems to be working.
<nhaines> Maybe.  :)
<nhaines> Quickly is so awesome.
<cjohnston> test
<linuxnoob> hallo
<nhaines> Hello
<qwebirc51456> -
<Omar87__> Hi all
<Omar87__> I wanted to ask, the times of the classes are based on what timezone?
<Hammerhard> they are based on the UTC timezone
<Omar87__> Hammerhard: So, there's going to be a Django class today?
<Hammerhard> yes
<Hammerhard> maybe this can help you, but it's in german
<Hammerhard> http://ikhaya.ubuntuusers.de/2010/01/24/ubuntu-developer-week-im-januar-2010/
<Omar87__> Hammerhard: thank you very much. I will do my best to attend as many of the classes as possible.
<nhaines> Omar8714: this might help: https://wiki.ubuntu.com/Lernid
<Omar87> For some reason, when I open lernid, I automatically get connected to a an Ubuntu chatroom in Spannish.
<Omar87> How do I fix that?
<jpds> jono: ^--.
<Omar87> ahh.. no that was nothing. Sorry. :)
<jono> Omar87, np :)
<AlanBell> !ping
<ubottu> Here I am, brain the size of a planet and you expect me to respond to a ping? How depressing.
<ubot2> Here I am, brain the size of a planet and you expect me to respond to a ping? How depressing.
<AlanBell> and this is the classroom where the instructor will speak
<netritious> Has the classroom event been canceled?
<persia> No.  It hasn't started yet.
<persia> Check the wiki, but I think it starts around 15:00 UTC.
<persia> Right now, it's about half past ten.
<netritious> persia: thank you for clearing that up...I had no idea why I thought it was at 10 UTC
<netritious> *have no idea why
<AlanBell> first is at 16:00 utc
<AlanBell> @now
<ubottu> Current time in Etc/UTC: January 25 2010, 10:27:15
<netritious> I seem to know why now..somehow when I imported the iCal available at the wiki into thunderbird everything starts at "10 a.m."..not sure why that happened
<netritious> I must be losing it..that is exactly when the classes start in my timezone..10 a.m. CST
<persia> Then you better sleep fast :)
<netritious> heading that way now :)
<push_ebx_> or get some coffee ;)
<netritious> nah, think I'll opt for sleep..won't retain much after being awake 24+ hours :D
<push_ebx_> :D
<gudvin> hi all
<gudvin> ÐµÑÑ ÐºÑÐ¾ Ð¶Ð¸Ð²Ð¾Ð¹?
<mbudde> http://ubuntu.com
<Omar87> Hi all.
<AlanBell> good afternoon everyone, todays sessions will begin at 16:00 UTC
<AlanBell> @now
<ubottu> Current time in Etc/UTC: January 25 2010, 13:21:06
<thebwt> @now
<ubottu> Current time in Etc/UTC: January 25 2010, 13:55:46
<rodge> ls
<cjohnston> @now
<ubottu> Current time in Etc/UTC: January 25 2010, 14:55:22
<bulldog98> Ã¼brigens ist tiledqt in meinem PPA nun nutzbar
<thetofucube> date -u
<nigel_nb> thetofucube, in your terminal
<nigel_nb> @now
<ubottu> Current time in Etc/UTC: January 25 2010, 15:14:36
<thetofucube> opps wrong window
<thetofucube> @now
<ubottu> Current time in Etc/UTC: January 25 2010, 15:16:17
<thetofucube> thanks
<xteejx> Hi all!
 * thebwt waves at xteejx
<shadeslayer> hey
<thebwt> I think chatter is supposed to go to #ubuntu-classroom-chat
<alecu> testing...
<cjohnston> thebwt: yes.. it is :-)
<xteejx> Hi thebtw :)
<dholbach> [SLIDE 1]
<dholbach> HELLO EVERYBODY! WELCOME TO UBUNTU DEVELOPER WEEK!
<dholbach> I'm very very happy you all made it here
<dholbach> First I'll talk about a few organisational things before we dive into session 1 "Getting Started with Ubuntu Development"!
<dholbach> first of all: for those of you who are not using lernid to connect to Ubuntu developer week:
<dholbach>  - #ubuntu-classroom is for the presentation only, so please keep chatter out of the channel
<dholbach>  - #ubuntu-classroom-chat for discussion and for questions (please prefix with QUESTION:, ie: "QUESTION: What does xyz mean?")
<dholbach>  - I put up some slides at http://people.canonical.com/~dholbach/ubuntu-development-getting-started.pdf which should at least give you a nice link collection - lernid users will see those slides as we move on through the session
<dholbach> if you have general questions about the schedule, you can find it at https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dholbach> [SLIDE 1]
<Omar87> dholbach: nothing here.
<dholbach> another organisational note:
<dholbach> if you plan to be here the full week and speak more languages than just English, consider adding yourself to the bottom of https://wiki.ubuntu.com/UbuntuDeveloperWeek
<thebwt> rmunn_: lernid only clients can't get to #lernid
<BluesKaj> howdy
<dholbach> so for example:
<dholbach> Catalan: #ubuntu-cat
<dholbach> Danish: #ubuntu-nordic-dev
<dholbach> Finnish: #ubuntu-fi-devel
<dholbach> German: #ubuntu-classroom-chat-de
<dholbach> Spanish: #ubuntu-classroom-chat-es
<dholbach> French: #u-classroom
<dholbach> it'd be great if you would help out translating questions and answers for those who are not comfortable speaking in English yet :)
<dholbach> (thanks in advance)
<dholbach> [SLIDE 1]
<qwebirc98256> when it will start?
<dholbach> thanks a lot jussi01
<dholbach> ok... let's get started :)
<dholbach> so what we're going to cover during the session is the following:
<dholbach>  - get a basic development environment set up (gpg key, tell the packaging tools who we are, get pbuilder set up, etc.)
<dholbach>  - cover the basics of contributing
<dholbach>  - and hopefully answer lots of questions :)
<dholbach> [SLIDE 2]
<dholbach> so first of all, please run:
<dholbach>  sudo apt-get install --no-install-recommends ubuntu-dev-tools build-essential pbuilder dpkg-dev gnupg
<dholbach> this will install a bunch of packages we are going to need
<dholbach> build-essential will pull in compilers and general tools for building packages
<dholbach> gnupg we will need to sign packages (or encrypt data generally)
<dholbach> ubuntu-dev-tools itself contains a lot of useful tools and will pull in a few others we are going to need to packaging and every-day tasks
<dholbach> also please enable "Source code" in System -> Software Sources -> Ubuntu Software
<dholbach> a question that is asked a lot of times is: "Do I really need to run the current development release? Won't that break my system?"
<dholbach> The answer is "yes, for building and testing you need one form 'latest development release'"
<dholbach> to do that in a sane way, you better check out https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases
<dholbach> Also we do have these very fine sessions lined up for this week which talk about a similar topic:
<dholbach>    TODAY, 19.00 UTC - Working on the Bleeding Edge -- kees
<dholbach>    Wed 27th Jan, 19.00 UTC, Developing and Testing in KVM --kirkland
<dholbach> <xteejx71> QUESTION: Do any of the classes cover how to use debhelper and CDBS?
<dholbach> xteejx71: there is no explicit "debhelper and cdbs" session, but I'm sure that some sessions will cover it briefly
<dholbach> in any case I can recommend https://wiki.ubuntu.com/PackagingGuide
<dholbach> [SLIDE 3]
<dholbach> ok, let's start with setting up a gpg key
<dholbach> gnupg stands for GNU privacy guard and can be used to sign and encrypt data in general (you'll see it in use very often with emails, but also general files)
<dholbach> we use it to prove that one person (and nobody else) made a particular change to a file
<cjohnston> < LumpyCustard> Question: What is the command to show the current gpg keys on the system?
<dholbach> thanks cjohnston
<dholbach> LumpyCustard: gpg --list-keys <email address>         should do that
<cjohnston> < xteejx71> QUESTION: Do the gpg keys *have* to be registered with Launchpad?
<dholbach> so if you already have a key set up, you can skip this step obviously
<dholbach> xteejx71: it's necessary to use a PPA (Personal Package Archive) or to upload a package to Ubuntu (once you are part of any of the uploader teams)
<dholbach> ok... so to generate a key you run the following
<dholbach>   gpg --gen-key
<dholbach> it's generally safe to just stick to the defaults
<dholbach> if you want to have more information on setting gpg up, check out https://help.ubuntu.com/community/GnuPrivacyGuardHowto
<dholbach> now you tell gpg your name and your email address
<dholbach> a comment is not necessary
<dholbach> now it will create the key and that's likely going to take a bit longer
<dholbach> (it will take random numbers from whatever your machine is doing right now to put that key together)
<cjohnston> < Navaneeth> QUESTION: How can I upload a package to ubuntu repository? Where is that information documented?
<dholbach> Navaneeth: we'll get to that later on
<cjohnston> < bullgard> QUESTION I obtain: "public key not found." What should I do?
<dholbach> bullgard: it likely means that you have no key set up yet?
<dholbach> bullgard: I don't know what you just did, so can somebody please try to debug the problem with bullgard in #ubuntu-classroom-chat?
<dholbach> cjohnston: next?
<cjohnston> < bullgard> QUESTION I obtain: "public key not found." What should I do?
<dholbach> cjohnston: next?
<cjohnston> < Paddy_NI> QUESTION: What is the comment generally used for?
<cjohnston> sorry
<dholbach> Paddy_NI: gpg is used to create the key with which we sign data, files and emails or encrypt and decrypt them - you actually don't use the command itself very often, but there's other tools which rely on it
<dholbach> alright, so let's move on to the next topic :)
<dholbach> pbuilde
<dholbach> pbuilder
<dholbach> [SLIDE 4]
<dholbach> pbuilder is a great tool to test-build packages in a clean and minimal environment
<cjohnston> < fubarrrr44> QUESTION: Why do I need root permissions to (just) build a .deb package? (wi    th rpm this is not needed)
<dholbach> whenever you start a build it will set up a minimal environment, install the build-dependencies, start the build itself and remove the build-dependencies afterwards again (it will cache them though)
<dholbach> fubarrrr44: pbuilder uses chroot internally
<dholbach> fubarrrr44: if you use just "debuild" (and install the build-dependencies on your "live system"), you don't need root permissions either
<dholbach> the maint points of pbuilder are:
<dholbach>  - keep your live system clean (you don't need to install 427697426246 build dependencies)
<dholbach>  - make sure the package builds in a minimal, unmodified environment
<dholbach> there are other tools that do similar jobs, and there's pbuilder-dist (in the ubuntu-dev-tools package), which is great
<dholbach> there's more info on https://wiki.ubuntu.com/PbuilderHowto
<dholbach> please edit ~/.pbuilderrc in your favourite editor
<dholbach> and add this to it:
<dholbach> COMPONENTS="main universe multiverse restricted"
<dholbach> then save the file
<dholbach> then run
<dholbach>    sudo pbuilder create
<dholbach> this, too, will take a while
<dholbach> as it will create a minimal system "from scratch"
<dholbach> ok, let's crack on
<dholbach> [SLIDE 5]
<dholbach> now we'll tell the development tools who we are
<dholbach> please edit ~/.bashrc with your favourite editor
<dholbach> and add something like this to the end of it:
<dholbach>  export DEBFULLNAME='Daniel Holbach'
<dholbach>  export DEBEMAIL='daniel.holbach@ubuntu.com'
<dholbach> afterwards please save the file
<dholbach> and run
<dholbach>   source ~/.bashrc
<dholbach> (or restart your terminal)
<dholbach> by setting DEBFULLNAME and DEBEMAIL:
<dholbach>  - you don't have to type in your email address
<dholbach>  - and name
<cjohnston> < xteejx71> QUESTION: I never done the COMPONENTS bit before...does this make a difference when using pbuilder?
<dholbach>  - and gpg key id all the time
<dholbach> and ... PLEASE ... use your own name and email address!
<dholbach> :-)
<dholbach> xteejx71: if you want to use universe and multiverse to build packages, then yes, you need it
<dholbach> are there any more questions? please keep them coming in #ubuntu-classroom-chat
<dholbach> if not, I'll keep on talking about a few things while pbuilder and gpg are doing their thing
<cjohnston> < ulysses> QUESTIN: Can I use characters in DEBFULLNAME like 'Ã³' and 'Ã¡'?
<dholbach> ulysses: yes, I'd be surprised if that wouldn't work :)
<cjohnston> < xteejx71> QUESTION: Can pbuilder be used to create anything other the the Lucid environment?
<dholbach> xteejx71: yes, have a look at https://wiki.ubuntu.com/PbuilderHowto - there's some variable you need to set, or use pbuilder-dist which can easily cope with multiple parallel pbuilders
<dholbach> alright... let's talk about the release schedule for a bit
<cjohnston> < xteejx71> QUESTION: If I already have run 'sudo pbuilder create' will this overwrite the old one or create a new one?
<dholbach> xteejx71: I think I creates a new one
<dholbach> xteejx71: might be best to check the manpage
<dholbach> [SLIDE 6]
<dholbach> https://wiki.ubuntu.com/LucidReleaseSchedule
<dholbach> that's the current release schedule we have for this cycle
<dholbach> you can see that we're in the "yellow phase" right now
<dholbach> in every cycle we roughly do the following:
<dholbach>  - set up the toolchain (the core build tools)
<dholbach>  - discuss features at the Ubuntu Developer Summit
<dholbach>  - merge changes from Upstream and Debian
<dholbach>  - work on features
<dholbach>  - debug problems
<dholbach>  - polish
<dholbach>  - release
<dholbach> it was just pointed out that we're in the orange phase... yeah, that's right :)
<cjohnston> < kjele> Question: When I build with pbuilder it pulls down the required dependencies to compile the program. Is it possible to make sure it does not download each time I try to build?
<dholbach> as you can easily see, the later it gets in the release cycle, the more conservative we get about changes
<dholbach> towards the end we focus more on testing and obvious good bugfixes than on "crack of the day"
<dholbach> kjele: it does cache those build-depends by default
<dholbach> so if you ask the question "How can I help out?" or "What can I do?" it heavily depends on where we stand in the release cycle
<cjohnston> < Navaneeth> QUESTION: I heard ubuntu is not contributing to upstream. is that correct? If yes, why?
<dholbach> Navaneeth: that's not correct
<dholbach> Navaneeth: if you have a look at https://wiki.ubuntu.com/Upstream you can see that we put a lot of energy in collaborating effectively with upstreams
<dholbach> maybe I should clarify what "upstreams" are and how everything fits in one picture
<dholbach> if you imagine millions of Ubuntu users on the one side
<dholbach> and thousands of software projects like the kernel, like X, like GNOME, KDE, like Mozilla, like the authors of the crack-attack game and lots of others
<dholbach> on the other side
<dholbach> then Ubuntu (and other distributions) stand in the middle and try to make the conversation happen between the two of them
<dholbach> those "software authors" on the other side are our upstreams
<dholbach> here's a list of things we contribute to upstream projects:
<dholbach>  - exposure of their software (distributions are the best way to get great software without hassle)
<dholbach>  - well-researched bug reports: we get LOADS and LOADS of bug reports every day and we put a lot of work into making them top-notch reports by automatically getting debug stacktraces, etc etc - basically we filter "defect reports" for upstream project
<dholbach> s
<dholbach>  - we test their software in lots of different scenarios
<dholbach>  - and we forward patches
<dholbach> sure there's not a group of Ubuntu developers for every piece of software that exists
<dholbach> but we put a lot of hard work into working with Upstream projects
<cjohnston> < fubarrrr44> QUESTION: How do I prevent pbuilder from doing clean up after work (to look at the generated chroot environment)?
<dholbach> check out "Adopt-an-Upstream" by jcastro and dholbach on Thursday
<dholbach> fubarrrr44: you can use    sudo pbuilder login   or just chroot for testing
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases might be helpful oto
<dholbach> too
<cjohnston> < LumpyCustard> Qn: How do I register the gpg key I've just made with Launchpad?
<dholbach> LumpyCustard: great question!
<dholbach> so first of all to find out your gpg key id, do the following: run
<dholbach>    gpg --fingerprint your.name@email.com
<dholbach> for me it displays the following:
<dholbach>  pub   1024D/059DD5EB 2007-09-29
<dholbach>        Schl.-Fingerabdruck = 3E5C 0B3C 8987 79B9 A504  D7A5 463A E59D 059D D5EB
<dholbach>  uid                  Daniel Holbach .......
<dholbach> 059DD5EB is my "KEY ID"
<dholbach> now to send you public key (your private key will always stay safe) to the keyservers so others can verify your signatures:
<dholbach> gpg --send-keys KEYID
<dholbach> and to register your key with Launchpad, head to https://launchpad.net/people/+me/+editpgpkeys
<dholbach> Ok... if your pbuilder is set up, you might want to try the following:
<dholbach>  apt-get source hello
<dholbach>  sudo pbuilder build hello_*.dsc
<dholbach> if you follow the output from pbuilder closely you will see how it first sets up the initial minimal environment, then download additional build dependencies, then build the package, then remove the build environment again
<dholbach> depending on your net connection and the speed of your CPU and disk it might take a little bit
<cjohnston> < IdleOne> QIESTION sorry if you covered this already but what if I already have a key uploaded to launchpad, how do I use it?
<dholbach> IdleOne: just head to https://launchpad.net/people/+me/+editpgpkeys and use your existing key
<dholbach> https://help.launchpad.net/YourAccount/ImportingYourPGPKey will help too
<dholbach> something I forgot to mention when we were talking about the relase cycle
<dholbach> really really important fixes we need after a release is "out there" are SRUs
<dholbach> SRU is short for Stable Release Updates
<dholbach> basically it's for REALLY IMPORTANT stuff, and the packages that you get through xyz-updates
<dholbach> the procedure and criteria for SRUs are listed here: https://wiki.ubuntu.com/StableReleaseUpdates
<cjohnston> < n3rd> Question : Is there a way to make a single deb out of multiple binaries, say for example i call it server.deb it must install few binaries ask per my tweaks like apache, tomcat, activemq so on
<dholbach> also there's a small cheat-sheet regarding the release cycle over here: http://people.canonical.com/~dholbach/cheatsheet.pdf
<dholbach> [SLIDE 7]
<dholbach> n3rd: yes, you would create an empty binary package that has the following line in debian/control: "Depends: apache, tomcat, activemq"
<dholbach> we'll talk a bit more about that in the next session
<dholbach> there's two final things I'd like to mention in this session (before we start the next one):
<dholbach>  - head to #ubuntu-motu on irc.freenode.net if you have any problems - there's great people who are able to help and who will become friends after a while :-)
<dholbach>  - bookmark https://wiki.ubuntu.com/MOTU/GettingStarted - it links to everything that's important
<dholbach> let's all take a few minutes break before move on to "Fixing small bugs in Ubuntu" :-)
<dholbach> Alrighty... welcome back to Ubuntu Developer Week - this time it's "Fixing small bugs in Ubuntu" :-)
<dholbach> I picked a few small bugs and I hope a few things will be clearer:
<dholbach>  - how to use basic tools in every day situations later on
<dholbach>  - learn the process of fixing something, how to propose the fix to get accepted, etc.
<dholbach> so we're not going to cover kernel hacks, crazy C++ stuff or anything else in here :-)
<dholbach> ok... the first bug I want us to have a look at is: https://bugs.launchpad.net/ubuntu/+source/fsniper/+bug/486612
<dholbach> if you check it out, you'll see that indeed it is a small bug, it's about a typo in the package description of fsniper
<dholbach> to confirm it, just run
<dholbach>   apt-cache show fsniper
<dholbach> and it says this towards the end:
<dholbach>  This packages comes with no generic rules, so you must write
<dholbach>  them yourself.
<dholbach> so... we're going to fix it!
<dholbach> first of all, let's get the package source:
<dholbach>   apt-get source fsniper
<dholbach> if you run  ls   you will see that it downloaded a .orig.tar.gz, a .diff.gz and a .dsc file
<dholbach> and that it created a directory called fsniper-1.3.1
<dholbach> ok, here's how it all fits together:
<cjohnston> < vishalrao_dsktop> QUESTION: where does apt-get source store source files?
<dholbach>  - orig.tar.gz is the file that the upstream authors released on their website as the source code
<dholbach>  - .diff.gz is the compressed set of changes we make to make the package build the "debian or ubuntu way"
<dholbach>  - .dsc is just meta-data like md5sums etc
<dholbach> apt-get downloaded the source from the archive, checked the md5sum, untarred the .orig.tar.gz file and applied the .diff.gz changes
<dholbach> ok... let's fix this bug now :)
<dholbach>   cd fsniper-1.3.1/
<dholbach>   cat debian/control
<dholbach> debian/control was added (among other things) by the Debian/Ubuntu maintainers of the package
<dholbach> and it describes the source and the resulting binary package (in this simple case just one binary package)
<cjohnston> < michae> QUESTION : no fsniper dir . Normal?
<dholbach> the description at the bottom is what we need to fix
<dholbach> this call ought to fix it for us:
<dholbach>   sed -i 's/packages/package/g' debian/control
<dholbach> michae: I'm sorry, I don't understand your question... can somebody help michae debug the problem in #ubuntu-classroom-chat please?
<cjohnston> < thebwt-lernid> QUESTION: couldn't we just open our favorite editor and fix it as well? Why use sed?
<dholbach> thebwt-lernid: yes, that'd work too and we'll make more use of the editor in due course :)
<dholbach> ok... some folks said they ran into trouble because dpkg-dev was not installed - please make sure you have it
<dholbach> so now that we fixed the problem, we need to document the changes we did
<dholbach> please run
<dholbach>   dch -i
<dholbach> (you need devscripts installed for that - session 1)
<dholbach> if you attended the first session, you will see your name and email address now, if you weren't here or did something wrong, you need to type it in manually
<dholbach> ok, let's go through the changelog entry one by one
<dholbach> the first line looks like the following over here:
<dholbach> fsniper (1.3.1-0ubuntu3) lucid; urgency=low
<dholbach> first the name of the source package, next the version, then the version of Ubuntu where we want to fix it in and an urgency setting which we can ignore for now
<dholbach> let's have another look at the version name
<dholbach> 1.3.1-0ubuntu3 means: 1.3.1 release by upstream, package was not in Ubuntu yet, 3 revisions in Ubuntu
<dholbach> oops, sorry make that "package was not in Debian yet"
<dholbach> 0.6-4 would mean: 0.6 release by upstream, 4 revisions in Debian, no changes in Ubuntu
<dholbach> 1.2.3-4ubuntu5 would mean: 1.2.3 as released by upstream, 4 revisions in Debian, 5 changes following changes in Ubuntu
<dholbach> etc.
<dholbach> I hope it gets clearer as we work our way through a few examples
<dholbach> next up is the description... dch leaves it empty for us, but I put something like this in there:
<dholbach>   * debian/control: replaced "This packages" with "This package" (LP: #486612)
<dholbach> when I write a changelog entry, I usually try to:
<dholbach>  - mention which files I changes
<dholbach>  - mention which files I changed
<cjohnston> < SoftwareExplorer> QUESTION:Do the numbers after ubuntu reset when debian releases a new version?
<dholbach>  - mention what I changed
<dholbach>  - mention where the change was discussed (bug report, mailing list post, etc.)
<dholbach>  - and as (LP: #486612) means "Launchpad bug 4855112", in this special notation the bug will get automatically closed on upload :)
<dholbach> SoftwareExplorer: no, if we introduce changes in Ubuntu, we need to either manually merge our changes with Debian changes or we need to decide to drop our changes altogehter and overwrite our package with that from Debian - in the latter case, yes, the version is "reset"
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/Merging has more info
<cjohnston> < venuz> QUESTION:how do we resolve cyclic dependency?
<dholbach> and on Friday, 17 UTC we will have a dedicated session about that
<dholbach> venuz: that's a more complicated subject and nothing we can discuss in this session, can you please head to #ubuntu-devel and ask there?
<dholbach> ok, let's move on
<cjohnston> < strycore74> QUESTION: Is there a way to quickly view all the changes I made in the source code while I'm writing the source code ? Should I keep an intact verison of the source to diff with my
<cjohnston>                     version ?
<dholbach> so once you wrote something nice into the changelog entry, please save the file
<dholbach> and run
<dholbach>   debuild -S
<dholbach> strycore74: I'm going to mention that in just a sec :)
<cjohnston> < xteejx71> QUESTION: what is the difference between the -S and the -S -sa commands?
<dholbach> xteejx71: -S will build the source package, -sa is something we can ignore for now - it's just relevant if you want to upload the package somewhere (-sa will also upload the .orig.tar.gz tarball) - please refer to the debuild or dpkg-buildpackage manpage :)
<dholbach> please run
<dholbach>   sudo apt-get install quilt
<dholbach> if   "debuild -S"   gave you an error message
<dholbach> and try again
<dholbach> thanks dbell
<dholbach> please let me know in #ubuntu-classroom-chat if that worked out for you :)
<dholbach> ok, some of you seem to have got a debsign error. we can ignore that for now.
<dholbach> it likely means that you either didn't set up your gpg key correctly, or you gave a different name and email address in your gpg set up and in DEBEMAIL/DEBFULLNAME in ~/.bashrc
<dholbach> we don't need to sign it now, so please ignore it for now :)
<dholbach> some of you might also need to run:
<dholbach>   sudo apt-get install debhelper
<dholbach> sorry :)
<dholbach> thanks vishalrao_dsktop
<dholbach> you can run all these commands as regular user, 'sudo' should just be required for pbuilder
<dholbach> alright, let's crack on, please rerun "debuild -S" once you install debhelper and quilt
<dholbach> then please run
<dholbach>  cd ..
<dholbach> now please run
<dholbach>   debdiff fsniper_1.3.1-0ubuntu2.dsc fsniper_1.3.1-0ubuntu3.dsc > fsniper.debdiff
<cjohnston> < mhall119|work> QUESTION: I get a gpg error saying "secret key not available"
<dholbach> mhall119|work: very likely whatever you have in DEBEMAIL / DEBFULLNAME in ~/.bashrc and in your gpg key set up don't match - please ignore it for now or try to debug it in #ubuntu-classroom-chat
<dholbach> you might also need the  patchutils  package, so please install that too
<dholbach> ok............
<dholbach> once you have all that sorted out, please copy the content of fsniper.debdiff to http://paste.ubuntu.com
<dholbach> and say something like          MY-PATCH: http://paste.ubuntu.com/......      in #ubuntu-classroom-chat and I'll take a look at it
<dholbach> if we did everything right, we might all have a nice patch ready now :)
<dholbach> xteejx71: http://paste.ubuntu.com/362732/ looks great
<dholbach> alastair: http://paste.ubuntu.com/362734/ looks good, just replace "karmic" with "lucid", karmic is release already - apart from that: great work!
<dholbach> strycore74: http://paste.ubuntu.com/362731/ looks great
<dholbach> vishalrao_dsktop: http://paste.ubuntu.com/362735/ looks great (just karmic -> lucid)
<dholbach> netritious: http://pastebin.com/f28cffa07 looks good (karmic -> lucid too and maybe your realname :-))
<cjohnston> < Ravm> QUESTION: So, if I made a mistake, do I just alter the patch, or redo the sequence?
<dholbach> rmunn: http://paste.ubuntu.com/362740/ looks good, karmic->lucid too and I'd mention which file you changed :)
<dholbach> Ravm: re-do the sequence in almost all circumstances
<dholbach> Ravm: it's very easy to botch up the patch file and whoever is reviewing the patch later on can't apply it
<dholbach> I'm proud of you guys! Awesome work! First patch done! YEEEEEEHAW! :-)
<dholbach> ok, let's do another one... we have 23 minutes left :-D
<cjohnston> < dbell> QUESTION: do we need to go through the whole process again to change karmic to lucid, do we need to run lucid, or can we just edit the debdiff and change it there?
<dholbach> dbell: just update karmic to lucid, then run "debuild -S" again
<dholbach> (and run "debdiff ...")
<dholbach> the next bug I found it a bit more complicated :-)
<cjohnston>  < mhall119|work> QUESTION you wouldn't have to re-do the dch part unless it's been uploaded, right?
<dholbach> mhall119|work: yes, you'd just run edit debian/changelog instead
<dholbach> ok... here's the next bug:  https://bugs.launchpad.net/ubuntu/+source/meld/+bug/417369
<dholbach> somebody requests the meld package to be updated
<cjohnston>  < Navaneeth> QUESTION: Is this the same procedure to fix defects even if they are in code (C or C++)? If yes, Once they are fixed, will it goto original projects source repository?
<dholbach> Navaneeth: the procedure can change somewhat, and the change needs to be forwarded to upstream authors by you manually
<dholbach> ok... let's fix up meld now
<dholbach> the bug requests 1.3.1
<dholbach> in lucid I get the following:
<dholbach> daniel@miyazaki:~$ apt-cache showsrc meld | grep ^V
<dholbach> Version: 1.3.0-2
<dholbach> daniel@miyazaki:~$
<cjohnston> < xteejx71> QUESTION: Should we now remove all the old build files for hello and fsniper?
<dholbach> xteejx71: as you like it
<dholbach> ok, so we indeed have to fix meld
<dholbach>   apt-get source meld
<dholbach>   cd meld-1.3.0
<cjohnston> < lbrinkma> QESTION: Should this upgrade performed upstream(debian)?
<dholbach> now you need devscripts installed
<dholbach> lbrinkma: in theory, yes, as much in Debian as possible
<dholbach> lbrinkma: sometimes you will find that Debian is in a freeze period or that we need a fix urgently - in that case we upload to Ubuntu directly
<dholbach> or if the Debian maintainer is on holidays, etc :)
<dholbach> now please run:
<dholbach>   uscan
<dholbach> if you run
<dholbach>   ls ..
<cjohnston> < xteejx71> QUESTION: Does it make a difference if we update an Ubuntu package, since Ubuntu and Debian sync each other right?
<dholbach> it will show you that it downloaded meld-1.3.1.tar.gz from the upstream website - cool, eh?
<dholbach> (debian/watch does thaT)
<dholbach> xteejx71: check out https://wiki.ubuntu.com/SyncRequestProcess and https://wiki.ubuntu.com/UbuntuDevelopment/Merging - Jorge and I will cover that explicitly in Adopt-An-Upstream :)
<dholbach> next we use that tarball to "update the package"
<dholbach> please run
<dholbach>   uupdate ../meld_1.3.1.orig.tar.gz
<dholbach> what it does it the following:
<dholbach>  - untar the mentioned tarball
<dholbach>  - apply the current set of changes (1.3.0 .diff.gz)
<dholbach>  - add a template changelog entry
<dholbach> nice, eh? :-)
<dholbach> now please:
<dholbach>   cd ../
<dholbach>   diff -u meld-1.3.{0,1}/INSTALL
<dholbach> what that command does is show you the differences between the INSTALL file (a document provided by upstream) between the two releases
<dholbach> the important information we filter out now is:
<dholbach> -##  * pygtk-2.6.0
<dholbach> -##  * gnome-python-2.6.0
<dholbach> +##  * pygtk-2.8.0
<dholbach> +##  * gnome-python-2.8.0
<dholbach> (it tells us that new versions of gnome-python and pygtk are required)
<dholbach> if you intend to take care of a package update, be sure to check what changed internally so your users aren't confused afterwards :-)
<dholbach> now
<dholbach>   cd meld-1.3.1
<dholbach> and edit debian/control.in
<dholbach> (in this case it's debian/control.in and not debian/control because of specialties in the Debian GNOME team)
<dholbach> I'll now change this line          python-gtk2 (>= 2.4),            to use 2.8
<dholbach> also I'll update                python-gnome2,              to have (>= 2.8)
<dholbach> now save the file
<dholbach> and run
<dholbach>   rm debian/patches/pythonpath.patch
<dholbach> (this is a patch that is not required any more... I'm just saying it now as we only have 9 minutes left - I tested this before :-))
<dholbach> now please edit debian/changelog and document your changes :)
<dholbach> now please run
<dholbach>   update-maintainer
<dholbach> (from the ubuntu-dev-tools package)
<dholbach> rationale: the Debian maintainers asked us to set an ubuntu.com email address as the Maintainer whenever we introduce a change over Debian so they don't get email for it :-)
<dholbach> https://wiki.ubuntu.com/DebianMaintainerField
<dholbach> also please edit debian/rules
<dholbach> and remove the following line
<dholbach>    DEB_INSTALL_CHANGELOGS_ALL += changelog
<dholbach> save the file
<dholbach> and run
<dholbach>   debuild -S -sa
<dholbach> you might need gnome-pkg-tools installed
<dholbach> once you're done with this, you can build the package by running the following
<dholbach>   sudo pbuilder build meld_1.3.1-0ubuntu1.dsc
<dholbach> or rather:
<dholbach>  cd ..
<dholbach>  sudo pbuilder build meld_1.3.1-0ubuntu1.dsc
<dholbach> sorry for ploughing through this like this but we were running out of time
<cjohnston> < Navaneeth> QUESTION: If I submitted a patch to launch pad and didn't send that to original authors. So does that lead into multiple versions of package? And what happens if the patch submitted to launch pad is not the one the real authors like to include? How ubuntu handles such scenarios?
<dholbach> normally we would have fixed the bugs one by one
<dholbach> Navaneeth: first of all the patch is not automatically sent upstream
<dholbach> https://wiki.ubuntu.com/SponsorshipProcess explains how to get a patch reviewed for inclusion by Ubuntu developers
<dholbach> sometimes they are going to ask you to get in touch with upstream developers and forward the patch there first (if it's not obvious)
<dholbach> generally we prefer to stay in sync with upstream
<dholbach> and want good reasons to deviate
<dholbach> cjohnston: next
<cjohnston> < Quintasan> QUESTION: what is the Build-Depends-Indep line?
<dholbach> Quintasan: Build-Depends and Build-Depends-Indep are packages that are necessary to build packages
<dholbach> if a package is Architecture: all, you list under Build-Depends all the packages that are necessary to run the clean target and the rest under build-depends-indep (sorry it's a bit short, but we#re out of time, sorry)
<dholbach> have a look at https://wiki.ubuntu.com/PackagingGuide for more info
<dholbach> https://wiki.ubuntu.com/MOTU/GettingStarted is what you need to bookmark :)
<dholbach> and THANKS EVERYBODY
<dholbach> this session was awesome! :-)
<Daviey> thank you sir
<dholbach> next up is Dave Walker who will talk about a fantastic piece of software to write (web) software: Django!
<Daviey> Hello everyone, and thanks for being here!
<Daviey> I'm happy to have questions as they come, so if you have a question - please feel free to interupt me
<Daviey> via QUESTION: Some question ---> in #ubuntu-classroom-chat
<Daviey> (hope that makes sense)
<Daviey> I'll start.
<Daviey> Django is a "Web Framework".. I'm sure many of you have an idea what this is
 * dholbach hugs Daviey
<Daviey> However, some people (including myself) were totally baffled when we first tried to start with it
<Daviey> In this session, i hope to give a good introduction and allow everyone to make thier first app
<Daviey> Django has a slogan of "The Webframework for perfectionists with deadlines"
<Daviey> This is kinda catchy :)
<Daviey> If we try to start a project, hopefully people can follow.
<Daviey> I'll explain what each part is inside the "project"
<Daviey> many people install django from the repositories via "sudo apt-get install python-django"
<Daviey> However, many people feel that it doesn't provide a new enough version - so they install it other ways
<Daviey> I'll get more onto that later.
<Daviey> Once it is installed, we have an extra app that we can run.
<Daviey> If you installed via the repositories it is called django-admin
<Daviey> If you installed via source it is called django-admin.py
<Daviey> If we try and create a very simple blog i wold od
<Daviey> dave@boogie:~/django$ django-admin startproject blogsite
<Daviey> this then creates the following:
<Daviey> dave@boogie:~/django/blogsite$ ls
<Daviey> __init__.py  manage.py  settings.py  urls.py
<Daviey> This is the basis of our application
<Daviey> manage.py is our application we use to RUN certain commands
<Daviey> so it's the only executable we will use from now on
<Daviey> The default settings file called, settings.py is here http://pastebin.com/f4533df0f
<Daviey> As you can see it's very well documented.
<Daviey> The database backends provide abstraction, so we really don't care what the actual database type is
<Daviey> it could be sqlite3, mysql, postgres (my fav.) or oracle
<Daviey> We won't need to care about SQL commands, that are normally associated with web applications
<Daviey> urls.py is here, http://pastebin.com/f64110653
<Daviey> It allos us to describe via a regex where to direct http requests
<Daviey> Everyone following ok?
<Pendulum>  < Navaneeth> QUESTION: If we don't care about SQL statements, how specific optimizations on SQL can be applied?
<Daviey> Navaneeth: Good question..  Because everything is an object, if we code our applications in a sane way it should be quite optimal in the SQL queries
<Daviey> you can manually run sql commands, but you often don't need to
<Pendulum> < n3rd> Question:manage.py is our application we use to RUN certain commands..like?
<Daviey> django can also cache the requests to mean that it doesn't need to do the same query multiple times
<Daviey> n3rd: that comes next :)
<Daviey> dave@boogie:~/django/blogsite$ ./manage.py startapp blog
<Daviey> So what we have done now is create a app inside our project called blog
<Daviey> dave@boogie:~/django/blogsite/blog$ ls
<Daviey> __init__.py  models.py  tests.py  views.py
<Daviey> That stuff was all included automatically
<Daviey> but before i explain what each of those does, i would like to show you all the admin interface
<Daviey> dave@boogie:~/django/blogsite$ ./manage.py syncdb
<Daviey> This will create all our database tables that we require
<Daviey> As i've only enabled the admin, via adding "django.contrib.admin" to the INSTALLED_APPS section of settings.py
<Daviey> it will only create that
<Daviey> FLOOD:
<Daviey> dave@boogie:~/django/blogsite$ ./manage.py syncdb
<Daviey> Creating table django_admin_log
<Daviey> Creating table auth_permission
<Daviey> Creating table auth_group
<Daviey> Creating table auth_user
<Daviey> Creating table auth_message
<Pendulum> Question : got this error : django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet.
<Daviey> Creating table django_content_type
<Daviey> Creating table django_session
<Daviey> Creating table django_site
<Daviey> You just installed Django's auth system, which means you don't have any superusers defined.
<Daviey> Would you like to create one now? (yes/no): yes
<Daviey> Username (Leave blank to use 'dave'):
<Daviey> E-mail address: davewalker@ubuntu.com
<Daviey> Password:
<Daviey> Password (again):
<Daviey> Superuser created successfully.
<Daviey> Installing index for admin.LogEntry model
<Daviey> Installing index for auth.Permission model
<Daviey> Installing index for auth.Message model
<Daviey> As you can see, manage.py created the database tables
<Daviey> Okay, i did add one more change
<Daviey> in settings.py add:
<Daviey> DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
<Daviey> DATABASE_NAME = 'database.sql3'             # Or path to database file if using sqlite3.
<Daviey> That will mean it will use sqlite3, and a file called database.sql3
<Daviey> okay?
<Daviey> so whoever that was, now run syncdb
<Daviey> now if i do:
<Daviey> ./manage.py runserver
<Daviey> I get an development webserver built in for free!
<Daviey> http://ubuntu.dev.week.daviey.com:8000/
<Daviey> However, there isn't a whole lot going on there (yet)
<Daviey> feel free to have a look
<Daviey> Okay, now back to the blog app we started
<Daviey> dave@boogie:~/django/blogsite/blog$ ls
<Daviey> __init__.py  models.py  tests.py  views.py
<Daviey> __init__.py - runs when the app is loaded
<Daviey> it's empty by default, and tends to stay that way
<Daviey> models.py - This is where we describe our database structure.  You can do much more
<Daviey> But for this, we will limit it to simply describing your database as objects
<Daviey> http://pastebin.com/f295abd14 <-- pretty much empty
<Daviey> We have our views.py - http://pastebin.com/f50aad6cb
<Daviey> This is how we describe how our data is shown to the user.
<Daviey> lets start putting some content in there
<Daviey> http://pastebin.com/f5d4145da <-- that is the contents of my models.py
<Daviey> Now, we need to tell the project we are actually using it.
<Daviey> If everyone doing ok so far?
<Daviey> ok
<Daviey> dave@boogie:~/django/blogsite$ nano settings.py
<Daviey> I'm adding "    'blogsite.blog',
<Daviey> "
<Daviey> inside the INSTALLED_APPS section.
<cjohnston> < tiemonster> QUESTION: the admin.site.register doesn't necessarily have to go in an admin.py?
<Daviey> tiemonster: hmm, you could put it in __init__.py
<Daviey> but it makes sense to put it in the admin.py
<Daviey> admin.py is a fairly new feature that was introduced in 1.0 iirc..
<Daviey> anyway, we don't need to cover that atm
<Daviey> KISS :)
<cjohnston>  < tiemonster> QUESTION: So it doesn't matter where you declare the admin.site.register?
<Daviey> I'll wait for the netsplit to finish before continuing
<Daviey> Okay, i think i will continue
<Daviey> tiemonster: technically it doesn't matter where you register it
<Daviey> All it's doing is telling the admin interface to be aware of these objects
<Daviey> i tend to do it in models.py i think
<Daviey> but you could put it anywhere that is aware of the model
<Daviey> dave@boogie:~/django/blogsite$ ./manage.py syncdb
<Daviey> Creating table blog_blogpost
<Daviey> Installing index for blog.Blogpost model
<Daviey> As you can see, the blog object has been created in the database
<Daviey> you can't see this at the moment, so i'll open up the web interface
<Daviey> in order to enable the worst kept secret of django.. we need to open urls.py
<Daviey> we need to uncomment:
<Daviey> # from django.contrib import admin
<Daviey> # admin.autodiscover()
<Daviey> (remove the #)
<Daviey> and also from the     # (r'^admin/', include(admin.site.urls)),
<Daviey> http://pastebin.com/f24559b5f <-- like so
<Daviey> now, if people want to log into the admin interface and have a look - log in here
<Daviey> http://ubuntu.dev.week.daviey.com:8000/admin/
<Daviey> I might add, that i hope i can trust you all not to abuse this :)
<Daviey> the username is: dave
<Daviey> and the password is: password
<Daviey> (secure huh?)
<cjohnston> < SmartSsa> Question: I'm seeing some differences in what my django is creating vs. what you're showing. What version are you using and how can I find out what version I'm using?
<Daviey> i set that when i first sync'db
<Daviey> SmartSsa: What differences are you seeing?
<Daviey> dave@boogie:~/django/blogsite$ apt-cache show python-django | grep Version
<Daviey> Version: 1.1.1-1ubuntu1
<Daviey> That is the one i have installed on this box
<Daviey> SmartSsa: if you can list your differences, we'll come back to it if that is ok?
<cjohnston>  < SmartSsa> Daviey, I don't have tests.py or the line with 'admin.site.urls' .. i have 'admin.site.root in my urls.py file.
<Daviey> cjohnston: Ah, that was a change with 1.1 i believe
<cjohnston> < Navaneeth> QUESTION: Django has support for running on a server farm? Like sharing session etc..
<Daviey> Are people seeing the webinterface?
<Daviey> Okay, i'm running that under the dev server which isn't designed for large use.. so perhaps it may be falling over slightly
<Daviey> However, you will see the "Blog" application listed there
<Daviey> feel free to "Add blogpost"
<Daviey> that luiX_
<Daviey> thanks*
<Daviey> okay.. hopefully everyone can see the potential of the admin interface
<Daviey> Now we need a way to show that to a user, who isn't authenticated
<Daviey> we do this via a "view"
<Daviey> so in "blogsite/blog/views.py"
<Daviey> I'm going to put in a function
<cjohnston> < luiX_> QUESTION: Can you filter what apps are showed up to each user or profile in the admin page?
<Daviey> http://pastebin.com/f19ccde62
<Daviey> luiX_: yes, you can
<Daviey> so as you can see, if the function posts() gets called
<Daviey> posts = Blogpost.objects.all()
<Daviey> Which under the wrappers does a SELECT * FROM blogpost, for example
<Daviey> it then pushes the data to a html file that is created called posts.html
<Daviey> However, first we need to let the app know how to send a HTTP request there
<Daviey> nano blogsite/blog/urls.py
<Daviey> http://pastebin.com/f34534c6d <---
<Daviey> Everyone following ok?
<Daviey> ok
<Daviey> so, posts.html is a "template"
<Daviey> so lets create a template folder
<Daviey> dave@boogie:~/django/blogsite$ mkdir templates
<Daviey> and we need to tell the settings where this is
<Daviey> TEMPLATE_DIRS needs to have something added
<Daviey> to keep things simple:
<Daviey> TEMPLATE_DIRS = (
<Daviey>     # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
<Daviey>     # Always use forward slashes, even on Windows.
<Daviey>     # Don't forget to use absolute paths, not relative paths.
<Daviey>    '/home/dave/django/blogsite/templates/',
<Daviey> )
<Daviey> (you can do clever things such as working from current postion + 'templates'
<Daviey> but for this we'll keep it simple
<Daviey> adjust the following to what suites your dir layout
<Daviey> dave@boogie:~/django/blogsite$ nano templates/posts.html
<Daviey> http://pastebin.com/f6a0156a4
<Daviey> okay, everyone following ok?
<Daviey> Now, lets add an entry to "blogsite/urls.py
<Daviey> (r'^', include('blogsite.blog.urls')), <--
<Daviey> add it above or below the admin one:
<Daviey> (r'^admin/', include(admin.site.urls)),
<Daviey> http://pastebin.com/f6f95c0b
<Daviey> ^^ urls.py
<Daviey> Now, if we do our runserver again
<Daviey> ./manage.py runserver
<Daviey> we should see: http://ubuntu.dev.week.daviey.com:8000/
<Daviey> We have made a simple blog \o/
<Daviey> we can add and remove these via http://ubuntu.dev.week.daviey.com:8000/admin/blog/blogpost/
<Daviey> I hope everyone is keeping up okay
<Daviey> I won't touch on theming today, or any other stuff like that..
<Daviey> if we look at our templates/posts.html
<Daviey> we can see there is a mini language in itself
<Daviey> {% for post in posts %}
<Daviey> for loop
<Daviey> post.title , post.content <-- this is the models.py we described earlier
<Daviey> Everything is an object!
<Daviey> Some of the things that makes django particualry cool for us ubuntu folk, is some of the awesome apps we already have
<Daviey> It is VERY easy to add openid auth support that uses launchpad for signing in.
<Daviey> You can see examples of this in UbuntuOne web interface, UDS planner, and the community created project of http://loco.ubuntu.com
<Daviey> Other things that are exciting to us, is that it's python - so we can tie into bzr and things like the launchpad api
<Daviey> menaing oru web applicationc an do real time cool stuff.
<Daviey> our*
<Daviey> I was going to cover django-auth-openid, but i somehow feel that adding things like that right now, might cause people to explode :)
<Daviey> Other cool things are deployment methods, such as using fabric, virtualenv and pip
<Daviey> Other ways of installing django include pip, this is like easy_install or for the perl types cpan
<Daviey> It installs python things, but not necessarily in a clean place
<cjohnston> < strycore66> QUESTION : Any good book on Django to suggest ?
<Daviey> strycore66: THE best book i would recommend is http://docs.djangoproject.com/en/1.1/
<Daviey> the documentation is updated so regulary and there are many tutorials
<Daviey> http://www.djangobook.com/ <-- is another good source
<cjohnston> < SmartSsa> Question: What's the "Sites" section for in the admin?
<Daviey> ^^ that is a real print book, avaliable for no cost online
<Daviey> SmartSsa: We can tie projects to a specific site and use that to make a difference.
<Daviey> Ie, we could have had 15 different blog sites going there
<Daviey> in this instance, we didn't use it
<Daviey> Shall i just fall back to questions now, and perhaps have a more advance session another time?
<Daviey> Questions?!
<cjohnston> < n3rd> QUESTION :How can we use web2.0 like features with this framework
<Daviey> n3rd: Django won't make an app look web2.0-y on it's own, you do still need css and javascript.. django can help, but it does help if you have an arty influcence
<Daviey> (i odn't)
<Daviey> don't*
<Daviey> sadly
<Daviey> things like plugging into twitter are also easy!
<Daviey> next?
<cjohnston> That's all that I have for now Daviey
<Daviey> okay, i'll end it there
<Daviey> but!
<Daviey> loco directory (loco.ubuntu.com) is open source
<Daviey> If you want to come and help, the water is warm
<Daviey> jump in a #ubuntu-locoteam
<Daviey> at*
<Daviey> Thanks all for listening
<Daviey> Next we have kees_lernid for an exciting, and cool subject!
<cjohnston> Daviey: #ubuntu-locoteams ?
<Daviey> cjohnston: my mistake, yes
<cjohnston> :-)
<kees> well, just me, not kees_lernid, that's just me following along
<kees> Hello!  I'm Kees Cook, an Ubuntu Developer, Security Team member, and Canonical employee.
<kees> I'm trying to figure out how to get my slides into lernid...
<kees> This presentation is about how to run the development version of Ubuntu (currently Lucid) and how to get yourself out of jams.
<kees> The slides I'll be using to keep me on topic come from 2007, and I'll update a few links as I go.
<kees> Nearly everything still applies, but just mentally swap in "Lucid" when you see "Gutsy".  :)
<kees> They are here: http://outflux.net/ul07/bleeding-edge.pdf (or .odp if you want the raw slides)
 * kees attempts to trigger lernid somehow...
<kees> [SLIDES: http://outflux.net/ul07/bleeding-edge.pdf]
<kees> dang
<kees> http://outflux.net/ul07/bleeding-edge.pdf
<kees> one moment, trying to get the slides into iCal...
<kees> [SLIDE 1]
<kees> hrm
<kees> okay... so, this should work, or reload lernid:  wget -O $HOME/.cache/lernid/slides.pdf http://outflux.net/ul07/bleeding-edge.pdf
<kees> anyway, no more delays.  :)
<kees> [SLIDE 1]
<kees> The bulk of this content was written by cjwatson; I just cleaned them up.  Blame me for any mistakes, though.  :)
<kees> [SLIDE 2]
<kees> so, people like running the devel release, but there are a lot of reasons not to
<kees> in particular, if you need a new package, and there is no PPA for it, you can just build it on a stable release
<kees> the only thing you need to find generally is the ".dsc" file, and "dget" will do the work of fetching it all
<kees> in this slide, I show the commands to do a package build; it's a few steps, but it gets it done, and gives you a working package usually.
<kees> [SLIDE 3]
<kees> now, there are reasons TO run the devel release; and I love having people helping with it.
<kees> the biggest reason is helping with development and testing.
<kees> it's very hard to do testing without actually running the software you're working on.  :)
<kees> generally, though, if you're interested in this topic, you should be running the devel release.  :)
<kees> oh! before I forget, please feel free to ask questions with [QUESTION] in the #ubuntu-classroom-chat channel as I go.
<kees> [SLIDE 4]
<kees> so, we're working on Lucid now, so you'll want https://wiki.ubuntu.com/LucidReleaseSchedule
<kees> prior to import freeze, we're pulling in new software versions from Debian daily.
<kees> and people are, of course, working on all kinds of fixes and changes.
<kees> that said, we stop for regular milestones and release bootable and installable "alpha" liveCDs.
<kees> after feature freeze, we try to focus on bug fixing.  with Lucid being an LTS, we're actually trying to focus more on bug fixing than features too.
<kees> it's really important to get testing in before the end of this schedule, usually before beta because it's very hard to fix some bugs without enough time to test them.
<kees> [SLIDE 5]
<kees> given how much the release changes from day to day, it's important to stay updated.  I try to update twice a week.  Others do it multiple times a day.  I would recommend at least once a week.  I find Wed the best time so that if things have gone weird, there are a weekdays left before the weekend to try to get help with fixing stuff.
<kees> following that rule, I don't update on fridays.  ;)
<kees> please help out with the testing and liveCD testing.  the included links in the slides are good starting points.
<kees> [SLIDE 6]
<kees> so, the liveCDs are important.  they're the best indicator of what the ubuntu install experience is going to be.
<kees> you can also build bootable USB disks from liveCD isos
<kees> or, with a VM, you can boot isos for testing.
<kees> my favorite for this is testdrive: http://blog.dustinkirkland.com/2009/11/introducing-testdrive.html
<kees> it lets you trivially try out an ubuntu image if you don't want to install it or be running the devel release
<kees> the USB live disk details are probably best described here: http://en.wikipedia.org/wiki/Ubuntu_Live_USB_creator
<kees> [SLIDE 7]
<kees> another option is dual-booting, a separate system, etc.
<kees> [SLIDE 8]
<kees> I'm personally a fan of using VMs.  libvirt and "virt-manager" is my friend.  All my VMs are there, though it does start taking up a fair bit of disk space.
<kees> $ du -sh /vm-images/
<kees> 84G	/vm-images/
<kees> that said, I have amd64 and i386 of every stable release.  :)
<kees> [SLIDE 9]
<kees> now, with all the focus on install testing, upgrade testing is sometimes overlooked
<kees> upgrading a VM from the prior stable release to the devel release needs to be tested often, since there are library changes, package relationship changes, etc, that might need to be manually tweaked by update-manager.
<kees> filing bugs about this area is very important.
<kees> [SLIDE 10]
<kees> the "right" way to do upgrades is with update-manager.
<kees> it has additional logic that apt-get and aptitude do not contain.
<cjohnston> < strycore66> QUESTION : Is it good practice to keep a pristine VM for bug testing (updated but with no additonal packages or data) ?
<kees> if you get into a jam, you may need to using apt-get manually.  After a dist-upgrade, I also usually try an "apt-get install ubuntu-desktop" in case the manual upgrade missed anything
<kees> strycore66: so, I try to do both.  A pristine VM is good for being able to compare between version of Ubuntu, for example, but a "messy" VM is good for finding corner-cases, etc.
<kees> doing testing on your real system is best because you've customized it, and that's usually where bugs come from.
<kees> that said, it's good to start from the same pristine VM when you're trying to reproduce problems, etc.
<cjohnston> < alvarezp> QUESTION : What is that additional logic that update-manager provides? What do we miss if we use plain APT tools?
<kees> the "virt-clone" command is handy for this.
<kees> alvarezp: there are sometimes transititions or file clean ups that are hard to handle strictly in apt.  things I'm thinking of off the top of my head are: old kernel version cleanups, the open-office version bump a while back, stuff like that.
<kees> I don't have very good examples, but if you want more, find "mvo" online in #ubuntu-devel later and ask him, he tends to be the person handling those things for update-manager.
<kees> [SLIDE 11]
<kees> there's a lot that can break...
<kees> hopefully the rest of this presentation can help you with those issues
<kees> [SLIDE 12]
<cjohnston> < n3rd> QUESTION: What if i want to take a tgz of "/" and restore it ?
<kees> n3rd: let me answer that in a moment
<kees> so, if mirrors blow up, there can be checksum failures.  don't ignore these issues; they're real problems.
<kees> wait for the next update push (about an hour usually) and try again
<kees> or switch to the non-mirror briefly.
<kees> n3rd: you can take tarball snapshots of / if you want.  the main areas of package management are in /var/lib/dpkg and /var/lib/apt
<kees> I'll mention those in a moment
<kees> [SLIDE 13]
<kees> sometimes there are mistakes made when packages take over files from older packages.  all of these glitches need to be reported so they can be fixed.
<kees> [SLIDE 14]
<kees> you can force installations anyway, but if maintainer scripts misbehave, you'll likely need to debug and edit them by hand
<kees> the important bit is /var/lig/dpkg/info/ which contains all the maintainer scripts.
<kees> my favorite reference for how maintainer scripts are calls is here: http://women.debian.org/wiki/English/MaintainerScripts
<kees> the "Upgrading" diagram is extremely helpful in understanding when/how the scripts are run
<kees> [SLIDE 15]
<kees> after unpack and install, the postinst runs, and if it blows up, it'll leave the package unconfigured.  you may need to edit it and re-configure.
<kees> (again, always file a bug if you run into this kind of thing)
<kees> [SLIDE 16]
<kees> sometimes debugging maintainer scripts is a pain.
<kees> adding a "set -x" to maintainer scripts can help you see what it's trying to do.  some fail very silently, and this is probably the simplest way to get insight into how they're working
<kees> [SLIDE 17]
<kees> when something goes wrong during interactive questions (debconf), you can enable debugging to see what debconf is up to.
<kees> soemtimes a debconf item is misnamed, or wasn't created yet.
<kees> these things are also in /var/lib/dpkg/info, with the .config and .template extensions
<kees> [SLIDE 18]
<kees> in the worst-case situation, maybe dpkg itself is doing something wrong.  in that case, break out the big guns and run dpkg under strace to see all the syscalls.
<kees> I like adding "-s 1024" to strace so I can see some more details on "exec" and "open" calls.
<kees> dpkg has debugging options too, but they're really only for dpkg itself.
<kees> [SLIDE 19]
<kees> if you're prompted to remove stuff, just be careful.  :)
<kees> if you ever see "essential packages will be removed" just say no.  :)
<kees> you will almost always wreck your system and need extensive rescue CD help if you drop essential packages.
<kees> I really like "apt-cache policy [packagename]" to tell me about where a package came from, what versions are available, etc
<kees> really handy for debugging issues with software from other PPAs, etc
<kees> it only looks at your apt sources, which is handy.
<kees> another tool I like for undoing insanity is downgrade-all: http://bazaar.launchpad.net/~ubuntu-security/ubuntu-security-tools/trunk/annotate/head%3A/utilities/downgrade-all
<kees> this will remove all the third party versions of everything.
<kees> use it carefully, but I love it for restoring a system back to a known-good state.  read the downgrade/removal list _carefully_ if you use it.
<kees> [SLIDE 20]
<kees> if you need to force a removal, you can do that, but it's best to tell apt-get to attempt to get things back to normal afterwards (apt-get -f install)
<kees> sometimes 3rd party software can get in the way of an upgrade.  or in the way of a normally operating system.
<kees> recently I saw someone trying to run the Debian experimental ifupdown package.  if lacked the needed Ubuntu modifications, so it rendered their networking unusable.
<kees> downgrade-all fixed that.  :)
<kees> [SLIDE 21]
<mhall119|work> < Omar87> [QUESTION] Why do I always get partial upgrades only?
<kees> so, if you lose power in the middle of an install, or the system hangs, you'll need to try to get dpkg and apt to finish the job once you're booted back up.
<kees> dpkg --configure -a  is the first step to handle any unconfigured packages
<kees> and then apt-get -f install  to finish any installations
<kees> Omar87: partial upgrades?  if that's from update-manager, it's been conservative about doing package upgrades.  (it was mostly made to handle stable release updates and full-distro-upgrades).  For day-to-day use of the devel release, I recommend just "apt-get dist-upgrade"
<kees> if a package is really hosed, you can manually install it with dpkg
<kees> if the package _database_ gets hosed, you need to examine /var/lib/dpkg/ and /var/backups
<kees> the status and status-old files are imporant.
<kees> *important
<kees> if "status" is corrupted, try using prior versions in its place (status-old, then stuff in /var/backups)
<kees> I've had to manually repair my status file before when XFS tried to eat my harddrive.  it's a bit crazy, but once you have something mostly sane in "status" again, you can just reinstall any weird or missing packages
<kees> [SLIDE 22]
<kees> if your status file is out of date with what actually got installed, you can look at /var/log/dpkg.log and find the package that were installed since your last good status file.
<kees> then you can just do an  apt-get install --reinstall $package   for the stuff that got missed.
<kees> when I was trying to restore sanity to a particularly busted machine, I repairs the status file, used downgrade-all, and then did a --reinstall on all the package on the system.
<kees> took a while, but it was mostly ok after that.
<kees> dpkg-reconfigure is handy too if a question gets missed or corrupted.
<kees> [SLIDE 23]
<kees> in the case of hardware-specific breakage, it gets harder to have people helping you because they likely don't have your hardware
<kees> video and network are the trouble-areas here.
<kees> I tend to boot older kernels or try earlier Xorg versions.  sometimes you'll need to help find the problem by "bisecting" a source branch and building several versions of a package.
<kees> having a good bug report with all the hardware details helps a great deal.
<kees> [SLIDE 24]
<kees> when the ABI of a kernel changes, you'll have the older one still installed.  handy to boot from that when a newer kernel breaks something
<cjohnston> < rmunn> QUESTION: Any advice on how best to report hardware-related bugs? Specifically, which log file(s) would likely be useful to put in the bug report?
<kees> "apport" and the "ubuntu-bug" tools are very handy for reporting all kinds issues, but especially good for the kernel.
<kees> rmunn_: answering that now.  :)
<kees> running "ubuntu-bug linux" will gather dmesg output, lspci output, etc.
<kees> the "ubuntu-bug" tool tries to include everything that is mentioned on the various wiki pages for Debuging____
<kees> dmesg and lspci tends to be the most important pieces
<kees> we also have the kerneloops handler too.
<kees> [SLIDE 25]
<kees> when X breaks, it's time to start including all sorts of logs.  again. ubuntu-bug is your friend.  :)  "ubuntu-bug xorg-server" will tend to collect many of the needed pieces
<kees> falling back to VESA can help get you back up and running in the meantime.  /var/log/gdm may have clues
<cjohnston> < n3rd> QUESTION:xorg.conf why no such file in Karmic ? And is there any open drivers for ATI Technologies Inc Radeon HD 3200 Graphics?
<kees> [SLIDE 26]
<kees> this slide is out of date.  NetworkManager is in /etc/init now, so "service network-manager stop" is the way to disable it
<kees> configuration in /etc/networking/interfaces is used by the "networking", "networkinger-interface", and "network-manager" services, so it's the best place to start.
<kees> also, network names are remembered in /etc/udev/rules.d/70-persistent-net.rules
<kees> n3rd: xorg.conf isn't really needed any more because X can autodetect almost everything now.
<kees> having an xorg.conf almost always causes X to misdetect stuff, so instead, it's just been removed.
<kees> [SLIDE 27]
<cjohnston> < rmunn> QUESTION: I've had a hard time finding good documentation on network-manager and how it relates to (say) /etc/network/interfaces and the like. Any recommended reading?
<kees> in a really tight pinch, you can get into your system by changing the grub boot line to init=/bin/sh or by adding "break=mount" to land in the initramfs to debug issues with booting
<kees> I got very familiar with this while debugging RAID and LVM support :)
<kees> rmunn: the problem with network-manager is that its integration with Debian-like systems has always been troublesome.  each release it behaves slightly differently, which makes good documentation hard to find.  :(
<kees> I recommend asking "asac" in #ubuntu-devel, but hopefully it's mostly settled now.  I _think_ n-m will only manage stuff that is "auto" in /etc/network/interfaces
<kees> (or missing from interfaces)
<kees> [SLIDE 28]
<kees> if you're running devel on a remote machine, you're in for a world of hurt if it doesn't boot :)  be careful, get a console server, etc.
<kees> [SLIDE 29]
<kees> here's where to report bugs.  start with "ubuntu-bug $Package" first, and go from there.
<kees> [SLIDE 30]
<kees> that's it from me!
<cjohnston> < Guillo> QUESTION: What hapen with python-xml this librari don't install?
<kees> I've only got 2 minutes left, but I'll try to answer that
<kees> Guillo: I'd start my investigations by looking at what apt-cache has to say.  here's a quick demo:
<kees> $ apt-cache madison python-xml
<kees> and I see it's missing.
<kees> then I go to launchpad and look for it:
<kees> https://launchpad.net/ubuntu/+source/python-xml
<kees> I see it's missing since karmic
<kees> then I check Debian for it:
<kees> http://packages.qa.debian.org/p/python-xml.html
<kees> I see it was removed.
<kees> and then I read the Debian reasoning for it.
<kees> gotta go!  thanks everyone!
<mathiaz> allright - let's keep the ball rolling
<mathiaz> kees: thanks for your presentation
<mathiaz> Hello everyone!
<mathiaz> My name is Mathias Gug and am part of the Ubuntu Server team:
<mathiaz> https://wiki.ubuntu.com/ServerTeam
<mathiaz> During the next (and final) hour of today's Ubuntu Developer week I'll talk about Server related packages.
<mathiaz> These are packages that usually provide services running in the background as daemon. They should be operating smoothly unattended by the system administrator.
<mathiaz> I'll cover different topics relevant to server packages. I'll answer any questio
<mathiaz> ns on the topic after I've covered it before moving on to the next one.
<mathiaz> let's get started with the first topic:
<mathiaz> Log files
<mathiaz> The location of log files should be /var/log/package.log or /var/log/package/.
<mathiaz> The latter version is more frequent for daemons as log files are essential for these programs and multiple logs files are usually created.
<mathiaz> For example the apache2 package stores all its log files in /var/log/apache2/:
<mathiaz> The access logs are available in one file while the error log is stored in another one.
<mathiaz> The Filesystem Hierarchy Standard is followed by Debian and Ubuntu and has a section about the location about log files:
<mathiaz> http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLOGLOGFILESANDDIRECTORIES
<mathiaz> Since daemons can generate a lot of information while running rotating the logs are important.
<mathiaz> The package maintainer should provide a default log rotation policy during package installation.
<mathiaz> Some daemons will take care of rotating their logs automatically. Most of them won't though.
<mathiaz> The recommended way is to include a configuration file for logrorate.
<mathiaz> Let's have a look at the apache2 default logrotate configuration:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/apache2/lucid/annotate/head%3A/debian/logrotate
<mathiaz> Note that apache2 is reloaded once log files have been rotated. This is a common operation for daemons as they tend to keep their log files opened and need to be told to reopen their log files once logrotate has rotated them.
<mathiaz> The logrotate configuration file should be installed as /etc/logrotate.d/package-name:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/apache2/lucid/annotate/head%3A/debian/rules#L265
<mathiaz> There is a debhelper command that can help automate this: dh_installlogrotate
<mathiaz> The logrotate man page has more information about the options for log rotation.
<mathiaz> Log directories are usually included in the package themselves.
<mathiaz> For example, /var/log/apache2/ is part of the apache2-common package:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/apache2/lucid/annotate/head%3A/debian/apache2.2-common.dirs
<mathiaz> However they often need to be changed by maintainer scripts:
<mathiaz> In the postinst, ownership and permissions are updated since daemons usually run as a non-root user:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/apache2/lucid/annotate/head%3A/debian/apache2.2-common.postinst#L18
<mathiaz> Log files should also be deleted with the package is purged:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/apache2/lucid/annotate/head%3A/debian/apache2.2-common.postrm#L8
<mathiaz> More information about log files can be found in the relevant section of the Debian policy:
<mathiaz> http://www.debian.org/doc/debian-policy/ch-files.html#s10.8
<mathiaz> Any questions related to log files?
<cjohnston> < toabctl_> mathiaz, QUESTION: but the apache2 package does not use the dh_installlogrotate command, right?
<mathiaz> toabctl_: yes - that is correct
<cjohnston> < n3rd> QUESTION: Is there a mechanism to replicate server configurations from one machine to another, helps in avoiding reinstalling and setting up all the parameters, for example a machine had
<mathiaz> toabctl_: if it would, it would be done in the debian/rules file
<cjohnston>               apache configured with bug tracking system, SCM etc, the same needs to be setup in another machine so it would be easy if we could just replicate the same.
<cjohnston> sorry...
<mathiaz> n3rd: this is a more generic question - related to configuration management system
<mathiaz> n3rd: I'd look into things like puppet, chef or cfengine
<mathiaz> cjohnston: next
<cjohnston> < toabctl_> QUESTION: does debhelper provide more function to take care for logfile handling? for example package purge..
<mathiaz> toabctl_: I don't think so
<mathiaz> anything other questions related to log files before we move on?
<cjohnston> That looks like it. :-)
<mathiaz> nope - let's move on to the next topic then:
<mathiaz> Configuration files
<mathiaz> Dealing with configuration files should be guided by the following principles:
<mathiaz> 1. Keep the user modification during upgrades
<mathiaz> 2. Have a default working configuration after package install
<mathiaz> Per the Debian Policy:
<mathiaz> A configuration file """affects the operation of a program, or provides site- or host-specific information, or otherwise customizes the behavior of a program. Typically, configuration files are intended to be modified by the system administrator (if needed or desired) to conform to local policy or to provide more useful site-specific behavior."""
<mathiaz> http://www.debian.org/doc/debian-policy/ch-files.html#s-config-files
<mathiaz> All configuration files must reside in /etc/.
<mathiaz> Configuration files must only be removed on package *purge*, not on package *removal*.
<mathiaz> Packages should not modify configuration files belonging to other packages.
<mathiaz> In order to have a working configuration file by default the package can either ship a default configuration file or generate one during installation by asking questions to the user.
<mathiaz> The first option should be used if possible. Shipping a default configuration file as part of the package itself under /etc/ is the easiest way.
<mathiaz> Files will be considered as conffile by dpkg which will handle them for you during package upgrades.
<mathiaz> This is appropriate only if it is possible to distribute a default version that will work for most installations, although some system administrators may choose to modify it.
<mathiaz> This implies that the default version will be part of the package distribution, and must not be modified by the maintainer scripts during installation (or at any other time).
<mathiaz> For example /etc/apache2/apache2.conf is a conffile:
<mathiaz> http://packages.ubuntu.com/lucid/amd64/apache2.2-common/filelist
<mathiaz> It's installed during the package build via a rule:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/apache2/lucid/annotate/head%3A/debian/rules#L264
<mathiaz> The other solution to provide a default working configuration file is to generate a valid one during package installation.
<mathiaz> Various maintainer scripts are used to ask questions to the end user (optional) and then create a configuration file.
<mathiaz> They will also handle all configuration changes during package upgrade.
<mathiaz> One option is to generate the configuration file directly in the postinst script as done by the openssh-server package:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/openssh/lucid/annotate/head%3A/debian/openssh-server.postinst#L295
<mathiaz> Quite often this is combined with debconf questions.
<mathiaz> The user is asked for information by the package .config script. The postinst script generates the configuration file according to the user answers.
<mathiaz> Another great practice for configuration is the use of /etc/package.d/ include directories.
<mathiaz> If the program supports configuration file inclusion I strongly recommend to ship a default file that include a /etc/package.d/ directory.
<mathiaz> That often helps other packages to integrate with your program by dropping their own configuration file in the /etc/package.d/ directory.
<mathiaz> For example apache2 includes a configuration directory in its default configuration file:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/apache2/lucid/annotate/head%3A/debian/config-dir/apache2.conf#L232
<mathiaz> The apache2 package actually provides multiple .d directories:
<mathiaz> A conf.d for generic options:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/apache2/lucid/files/head%3A/debian/config-dir/conf.d/
<mathiaz> A modules.d (called mods-available) to enable specific modules:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/apache2/lucid/files/head%3A/debian/config-dir/mods-available/
<mathiaz> Thanks to this directory packages providing a specific apache2 modules can just ship a configuration file in /etc/apache2/mods-available/. There is no need to edit a configuration file.
<mathiaz> A sites.d (called sites-available) to manage virtual hosts:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/apache2/lucid/files/head%3A/debian/config-dir/sites-available/
<mathiaz> This is more targeted at sysadmin rather than package maintainers.
<mathiaz> The apache2 package is a great example to look at how a package can provide the infrastructure to help other packages integrated with it.
<mathiaz> More detailed about configuration files handling can be found in the Debian policy:
<mathiaz> http://www.debian.org/doc/debian-policy/ch-files.html#s-config-files
<mathiaz> For more information about Debconf:
<mathiaz> http://www.debian.org/doc/manuals/developers-reference/best-pkging-practices.html#bpp-config-mgmt
<mathiaz> Any questions related to configuration files?
<mathiaz> QUESTION: how to handle a file which is needed in the directory /usr/share/pyshared/testprogram/settings.py ? just add a symlink from /usr/share/pyshared/testprogram to /etc/testprogram/settings.py ?
<mathiaz> toabctl_: yes - that usually how things should be done
<mathiaz> toabctl_: all configuration files should be in /etc/
<cjohnston> < n3rd> Q: how can i avoid trailing slashes in conf files
<mathiaz> toabctl_: if programs are not able to handle, that it's advised to use symlink from /etc/ to the expected location
<mathiaz> n3rd: I'm not sure I understand your question
<cjohnston> < n3rd> Q: why some refer to httpd.conf and some to apache.conf, how exactly they work?
<mathiaz> n3rd: this is specific to how apache2 is working
<mathiaz> n3rd: IIRC httpd.conf is around for historical reasons
<mathiaz> n3rd: apache.conf should include httpd.conf
<cjohnston> < n3rd> Question : instead of localhost/test, how can i configure apache2 to point localhost:port to test dir in /var/www
<mathiaz> n3rd: that's a support question for apache2 - I won't address it here
<mathiaz> n3rd: I'd suggest to ask the question in #ubuntu-server
<mathiaz> I think that's all for this topic - let'sm ove on
<mathiaz> next topic: Upstart job
<mathiaz> The init script subsystem in Ubuntu has seen a lot of activity in the past releases as we're moving more and more to upstart jobs.
<mathiaz> I'll give an overview on some features from upstart that are very helpful in managing daemons.
<mathiaz> Upstart is able to supervise services: if a process dies Upstart can be configured to restart it.
<mathiaz> For example, the openssh-server upstart job:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/openssh/lucid/annotate/head%3A/debian/openssh-server.upstart
<mathiaz> Using the respawn keywork instructs upstart to restart the sshd process if it disappears:
<mathiaz> Line11
<mathiaz> Upstart also supports forking daemons and will supervise them correctly:
<mathiaz> Line10
<mathiaz> Some daemons could also be run in the foreground by upstart:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/eucalyptus/lucid/annotate/head%3A/debian/eucalyptus-cc.upstart#L56
<mathiaz> Another strength of Upstart is its dependency system. If a service is restarted other daemons may need to be restarted as well.
<mathiaz> For example if the portmap service is restarted, gssd and statd will automatically be restarted by upstart as well:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/nfs-utils/lucid/annotate/head%3A/debian/nfs-common.gssd.upstart#L9
<mathiaz> Upstart has built-in support for oom handling:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/openssh/lucid/annotate/head%3A/debian/openssh-server.upstart#L14
<mathiaz> Other features include nicing  and setting limits. See init(5) manpage for more information.
<mathiaz> Traditionally daemon init scripts would source /etc/default/servicename. The default file provides an easy way to customize major options for the system administrator.
<mathiaz> In Upstart it's suggested to modify directly the upstart job instead.
<mathiaz> Upstart jobs should be defined in debian/package.upstart. They will be automatically handled by the relevant debhelper scripts (such dh_installinit).
<mathiaz> More information can be found in the init(5) manpage  and the Debian policy.
<mathiaz> And don't forget the upstart website at:
<mathiaz> http://upstart.ubuntu.com/
<mathiaz> Any question related to upstart?
<cjohnston> < bullgard> QUESTION: What do you mean by "service" here?
<mathiaz> bullgard: I think this has already been well answered in -chat
<cjohnston> That's all I see
<mathiaz> rmunn_: thanks
<cjohnston> < zul> QUESTION: when would you use fork and when would you use daemon?
<mathiaz> zul: not sure
<cjohnston> < rmunn> QUESTION re upstart: How difficult is a typical init-to-upstart conversion? E.g., if I have a package using init scripts, is it usually worth the effort of rewriting its init scripts to use
<cjohnston>                upstart instead? How much is gained to offset the cost of the rewrite?
<mathiaz> rmunn_: it depends on complex the init script is
<mathiaz> rmunn_: usually it's worth the effort - as there is bunch of new features that upstart handles automatically for you
<mathiaz> rmunn_: and if you do a lot of funky stuff in the init script (like modify configuration files), you can just use the same code in the pre/post-script stanzy in the upstart job
<mathiaz> rmunn_: so quite often you can just copy and paste the code
<mathiaz> all right - let's move on
<mathiaz> Next topic: UFW profile
<mathiaz> The security team wrote a simple host-based firewall tool named UFW:
<mathiaz> https://wiki.ubuntu.com/UncomplicatedFirewall
<mathiaz> Package integration is now available by dropping a file in /etc/ufw/applications.d/ to tell ufw how to configure firewalling rules for the services.
<mathiaz> For example here is openssh-server ufw profile:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/openssh/lucid/annotate/head%3A/debian/openssh-server.ufw.profile
<mathiaz> And how to install it during the package build:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/openssh/lucid/annotate/head%3A/debian/rules#L198
<mathiaz> For more information see the ufw wiki page at:
<mathiaz> https://wiki.ubuntu.com/UncomplicatedFirewall
<mathiaz> any question related to UFW?
<cjohnston> None seen
<mathiaz> allright then - let's move on
<mathiaz> Next topic: AppArmor profile
<mathiaz> Another tool that the security team is maintaining and the proves to be useful for services is AppArmor.
<mathiaz> It can be seen as an alternative to chroots for daemons.
<mathiaz> For example here is the ntp apparmor profile:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/ntp/lucid/annotate/head%3A/debian/apparmor-profile
<mathiaz> It should be installed in /etc/apparmor.d/path.to.daemon.binary:
<mathiaz> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/ntp/lucid/annotate/head%3A/debian/rules#L72
<mathiaz> Some care needs to be taken during package upgrade especially when a new profile is introduced as we don't want to break existing systems.
<mathiaz> More information about migrating a profile can be found on the wiki page:
<mathiaz> https://wiki.ubuntu.com/ApparmorProfileMigration
<mathiaz> And you can find more info on the AppArmor wiki page:
<mathiaz> https://wiki.ubuntu.com/AppArmor
<mathiaz> any question related to AppArmor profiles?
<cjohnston> None seen
<mathiaz> ok - let's move on
<mathiaz> next topic: system users
<mathiaz> One of the Ubuntu goal is to try to run as many daemons as possible as non-root users.
<mathiaz> That brings the need to create system users. The best practice is to not delete users on package purge. Otherwise the uid could be reallocated, potentially giving access to files from the previous package to the new program.
<mathiaz> For example the openssh-server postinst creates the ssshd user if the user doesn't already exists:
<mathiaz> http://bazaar.launchpad.net/%7Eubuntu-branches/ubuntu/lucid/openssh/lucid/annotate/head%3A/debian/openssh-server.postinst#L401
<mathiaz> If the daemon requires to be run as root try to write an AppArmor profile for it.
<mathiaz> More information about system users can be found in the Debian policy:
<mathiaz> http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.2
<mathiaz> Any question related to system users?
<mathiaz> nope - let's move on then
<mathiaz> Next topic: Cron jobs
<mathiaz> Cron jobs should installed in /etc/cron.d/ or any of the regular cron directory (ex: /etc/cron.daily/).
<mathiaz> There is a debhelper script available for packager: dh_installcron.
<mathiaz> The Debian policy has more information:
<mathiaz> http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.5
<mathiaz> Any questions related to cron jobs?
<cjohnston> None seen...
<mathiaz> allrigh then
<mathiaz> that's all for now then
<mathiaz> you can find more information in the following guides:
<mathiaz>  * Debian policy: - http://www.debian.org/doc/debian-policy/ - debian-policy package
<mathiaz>  * Debian Developer's Reference: - http://www.debian.org/doc/manuals/developers-reference/index.en.html
<mathiaz>  * Debian New Maintainers' Guide: - http://www.debian.org/doc/manuals/maint-guide/index.en.html
<mathiaz>  * Ubuntu Policy: - ubuntu-policy package
<mathiaz>  * Ubuntu Package Guide: - https://wiki.ubuntu.com/PackagingGuide/
<mathiaz>  * Mailing lists and IRC channels: - ubuntu-devel@, ubuntu-server@ - #ubuntu-devel, #ubuntu-server
<mathiaz>  * Ubuntu wiki: - https://wiki.ubuntu.com
<mathiaz> And one last page that I often use when I have my packager hat:
<mathiaz> http://women.debian.org/wiki/English/MaintainerScripts
<mathiaz> this one outlines the sequence in which maintainer scripts are called
<mathiaz> and with that the first day of the Ubuntu Developer Week is ending
<mathiaz> come back for more tomorrow, same place at 16:00 UTC
<mathiaz> you'll learn about java libraries, ubuntu one support, automated server testing and other things
<mathiaz> https://wiki.ubuntu.com/UbuntuDeveloperWeek/
<mathiaz> thanks all and bye!
<davidboy>  
<rzanebr10> jÃ¡ comeÃ§ou a aula
<rzanebr10> oi
<rzanebr10> oi
<rzanebr10> alguem sabe das aulas do ubuntu???
<IdleOne> !br
<ubottu> Por favor, use #ubuntu-br para ajuda em portuguÃªs. Obrigado.
<rzanebr10> IdleOne: There is no problem if I need to talk in english
<rzanebr10> ubottu: it is ok if it is talking in english
<IdleOne> rzanebr10: this channel is not fir support
<IdleOne> for*
<rzanebr10> nÃ£o entendi/
<rzanebr10> ?
<IdleOne> por eso que te dijo de usar #ubuntu-br
<rzanebr10> mas as aulas sÃ£o neste canal, sim ou nÃ£o?
<IdleOne> nao
<rzanebr10> IdleOne: entÃ£o veja: http://www.ubuntu-sp.org/
<rzanebr10> e no me deixes olvidar
<IdleOne> rzanebr10: I don't speak portuguese please type /join #ubuntu-br for more help
<rzanebr10> ok
<IdleOne> thank you :)
<rzanebr10> no problem, we can share ideas about ubuntu in english
<rzanebr10> or in spanish!!!
<IdleOne> rzanebr10: I am going to have dinner but if you would like to chat there is also #ubuntu-offtopic (english only )
<mercutio22> rzanebr10: E ae, oque tÃ¡ acontecendo?
<mhall119> test
<paultag> FAIL
<paultag> howdy mhall119
<mhall119> not this time!
<mhall119> hiya pak33m
<mhall119> bah
<mhall119> paultag,
<paultag> haha
<mhall119> I really wish I could use lernid at work, there's gotta be a way...
<athanacius> Ã±
#ubuntu-classroom 2010-01-26
<Yulo> Hola, disculpen, alguien habla espaÃ±ol?
<Yulo> quiero saber si en espaÃ±ol habrÃ¡n charlas relacionadas al Ubuntu developer week
<Yulo> Hola, disculpen, alguien habla espaÃ±ol?
<Yulo> quiero saber si en espaÃ±ol habrÃ¡n charlas relacionadas al Ubuntu developer week
<rzanebr10> oi pessoal
<rzanebr10> to aqui no Campus Party
<rzanebr10> e vou ta participando do ubuntu-class
<rzanebr10> jÃ¡ fiz todas configs. que se pede no site do ubuntu-sp
<rzanebr10> espero que de certo...
<ajua> creo que fue mala idea instalarme ubuntu 10.04
<ajua> how to ubuntu 10.04 to 9.10 ???
<nhaines> Necesita instalar Ubuntu 9.10 nuevo.
<ajua> nos vemos luego ubunteros
<mhall119> nhaines, hey
<nhaines> mhall119: heya.  :)
<AnAnt> Hello, can someone upload yesterday's sessions please ?
<Severity1> yes please :)
<AnAnt> oh silly me, it can be found on the irclogs site anyways !
<AnAnt> Severity1: http://irclogs.ubuntu.com/2010/01/25/#ubuntu-classroom.html
<Severity1> thanks AnAnt :D
<Severity1> lol which one is it?
<AnAnt> it is the whole log of yesterday
<AnAnt> better than nothing
<Severity1> oh
<Severity1> kay i guess i'll just have to skim through them :D
<ehlim> date -u
<AlanBell> @now
<ubottu> Current time in Etc/UTC: January 26 2010, 12:45:17
<AlanBell> date -u is something you can type into a command terminal running on your machine
<dholbach> dpm, soren: just so you can talk in here later on :)
<Omar87> Did the sessions start?
<dpm> dholbach, ok, thanks!
<dholbach> Omar87: not yet, 45 minutes
* dholbach changed the topic of #ubuntu-classroom to: Ubuntu Classroom || Support in #ubuntu || https://wiki.ubuntu.com/Classroom || https://wiki.ubuntu.com/Packaging/Training || Upcoming: Mon 25 Jan - Fri 29 Jan 2010: https://wiki.ubuntu.com/UbuntuDeveloperWeek || Run 'date -u' in a terminal to find out the UTC time
<dholbach> (just added the link to ubuntu developer week)
<cjohnston> Mornin all
<soren> dholbach: ta
<dholbach> de rien
<didrocks> dholbach: thans :)
<didrocks> thanks*
<dholbach> HELLO EVERYBODY! WELCOME TO DAY 2 of UBUNTU DEVELOPER WEEK!
<ttx> yay
<dholbach> we'll kick off day two with a fantastic Frenchman, it's Thierry Carrez who will talk about Java libraries Packaging
<dholbach> one organisational note:
<dholbach> if you want to ask questions, please head to #ubuntu-classroom-chat - if you want to ask questions in any other language head into one of the irc channels listed at the bottom of https://wiki.ubuntu.com/UbuntuDeveloperWeek/
<dholbach> THANKS
<dholbach> and enjoy day 2!
<ttx> Let's get started !
<ttx> My name is Thierry Carrez, and I'm a member of the Ubuntu Server team.
<ttx> This session will be about the packaging of Java libraries.
<ttx> It assumes you already know the basics of Debian packaging and want to learn the specificities of Java library packaging.
<ttx> We'll first see some basics about Java libraries and how they fit in Debian packaging
<ttx> Then the java-specific issues we need to solve in our packaging work
<ttx> Then we'll see the rules of java library packaging...
<ttx> And we'll look at a few examples, in increasing order of complexity.
<ttx> At the end of each section we'll do a quick Q&A...
<ttx> Questions should be asked in #ubuntu-classroom-chat and will be relayed here.
<ttx> OK, let's start !
<ttx> == Java libraries basics ==
<ttx> Java is an object-oriented language, so it makes use of object classes.
<ttx> Those classes can be grouped inside class libraries, and shipped in a .jar file.
<ttx> A JVM runs with a classpath that defines where classes can be found, and a classpath can point to JAR files.
<ttx> Those JAR files are usually shipped together with the program that uses them.
<ttx> But that results in code duplication, i.e. the same JAR file can be found in several packages.
<ttx> That's bad, because bug fixes (and security fixes) cannot be applied once and for all.
<ttx> In Linux distributions, we want to share the common code across applications, so we want to package Java libraries separately.
<ttx> We follow a few rules, defined in Debian Java policy
<ttx> http://www.debian.org/doc/packaging-manuals/java-policy/x105.html
<ttx> Binary library packages are named libXXX-java. A fictional library called "hello" would be provided by a libhello-java package.
<ttx> They install versioned JAR files in /usr/share/java (hello-1.0.jar) and a unversioned link should point to it
<ttx> /usr/share/java/hello.jar -> /usr/share/java/hello-1.0.jar
<ttx> Note that without installing a package and unzipping the JAR file, it can be difficult to tell exactly which classes it provides
<ttx> So finding where a given class might be shipped would involve installing all the Java library packages and unzipping all the JARs that the distribution contains...
<ttx> Fortunately I did that for you and published java-Contents.gz files that contain all classes in all jars in all packages !
<ttx> https://wiki.ubuntu.com/JavaTeam/JavaContents
<ttx> So finding a given class in karmic is just a matter of downloading the karmic-java-Contents.gz file...
<ttx> and do a "zgrep the.class.name karmic-java-Contents.gz"
<ttx> OK, questions so far ?
<cjohnston> < LumpyCustard> *QN: how often is this file updated?
<ttx> I usually release it after each release
<ttx> but you can regenerate it at will
<ttx> the code is provided in the page I linked to.
<ttx> Takes several hours, btw :)
<cjohnston> < mscahill> QUESTION: this contains all java classes contained in which repository? main? universe and main?
<ttx> main universe, multiverse
<cjohnston> < luckyduck> QUESTION: how are the classes/jars added to the classpath? is that done by the ubuntu java env. or the startup scripts of packages?
<ttx> the component is listed on each line
<ttx> so you can filter output to only main packages if you want
<ttx> startup scripts and packages usually take care of setting up the classpath for a given app
<ttx> luckyduck: ^
<ttx> Let's move on :)
<ttx> == Java-specific packaging issues ==
<ttx> The main issue with Java packaging is that in Debian packaging we need to build everything from source...
<ttx> while most Java programs just build from already-built libraries shipped directly with their source
<ttx> So we need to first make sure all those build-time libraries are already properly packaged.
<ttx> And we also often need to patch the build system so that it uses the shared libraries in /usr/share/java instead of what it is used to.
<ttx> Another issue is that Java "compiling" (which really is bytecode generation) generally requires the presence of a lot of Java libraries
<ttx> And not all of them are already packaged. A given library might need 5 missing libraries, which in turn would require 10 others...
<ttx> So packaging a seemingly simple Java stack can quickly turn into an exponential packaging game.
<ttx> The last issue is that we provide a shared library set, with given version numbers. However, the library APIs can change even in minor releases...
<ttx> And since Java software usually conveniently ships with its own version of the library, it doesn't care so much about staying compatible with the latest version.
<ttx> Software A can require libhello-java>=2.1.14, while library B won't compile with libhello-java>=2.1...
<ttx> We usually patch one to be compatible with the others, but that can quickly become a complicated game.
<ttx> Questions, before we really start packaging ?
<cjohnston> < LumpyCustard> QUESTION: Does building with Maven make this difficult? <-- this can be answered later if you like!
<ttx> LumpyCustard: yes, maven makes it even more difficult
<ttx> LumpyCustard: we'll come back to that later, but maven actually helps software to pick a very specific JAR version
<ttx> rather than encouraging the use of the latest
<ttx> OK, let's start packaging.
<ttx> == Packaging libraries ==
<ttx> Here are a few debian/control rules that apply to Java libraries:
<ttx> - Section should be "java"
<ttx> - You should "Build-depends" on default-jdk
<ttx> - The library binary package should "Depends" on default-jre-headless | javaN-runtime-headless
<ttx> (replace N by the minimum level of Java needed)
<ttx> Anticipating the question, how do I figure that out ? Looking at the level of the target Java code in the build system usually gives a clue:
<ttx> target=1.6 means you should use "default-jre-headless | java6-runtime-headless" -- that's the default for code generated using default-jdk
<ttx> target=1.5 -> "default-jre-headless | java5-runtime-headless"
<ttx> target=1.4 -> "default-jre-headless | java2-runtime-headless"
<ttx> When starting to package a library, you must investigate what build system it uses.
<ttx> If there is a "build.xml" file, then it probably uses "ant", which is like a Java-oriented "make".
<ttx> The Makefile is called build.xml and contains targets (in XML) that you can call with ant <target>.
<ttx> Sometimes there is no build system.
<ttx> Sometimes, it uses maven, which is a complex build/integration system that handles both build rules and dependency management
<ttx> Next step is to look at build dependencies. It's not always obvious which libraries are required for compilation.
<ttx> You can look into the README, look into the build.xml, see if any .jar files are shipped withing the source...
<ttx> Otherwise just try to compile it, it will fail with ClassNotFound errors... and use java-Contents.gz to find where those classes live.
<ttx> Questions, before we move on to practical examples ?
<ttx> OK, moving on, then
<ttx> == Example 1: Simple library ==
<cjohnston> < LumpyCustard> QUESTION: Does building with Maven make this difficult? <-- this can be answered later if you like!
<cjohnston> sorry
<cjohnston> < mscahill> QUESTION: so you're referring to creating a deb of an existing application?
<ttx> mscahill: creating a deb of a java library, to be more exact
<ttx> mscahill: but applications aren't so different
<ttx> mscahill: they just add a launcher, basically
<cjohnston> < luckyduck> QUESTION: in gentoo it was very complicated to work with maven in ebuilds, since there was no automated way to pull in jars an app needed to compile (atleast during the time i was part of
<cjohnston>                    gentoo java). how is that handled in ubuntu?
<ttx> I'll come back to maven, but yes, it's a pain.
<cjohnston> < dig> QUESTION: jar to deb?
<ttx> dig: not sure I get the question, but yes, the idea is to make a deb that contains jars.
<ttx> back to example 1
<cjohnston> < dig> QUESTION:i meant if i make a jar which has all the deps in it, it can be made to a deb easily right?
<ttx> dig: no. We want to rebuild the jar from source.
<ttx> dig: all packages in Ubuntu must be built from source
<ttx> making a deb from a JAr file would be "from binary"
<ttx> ok, really moving on now :)
<ttx> Suppose we want to package a library called "easy", that uses "ant" to build and has no build dependencies
<ttx> It uses a build.xml, and simply running "ant" builds build/easy-1.0.jar
<ttx> We'll use the CDBS "ant" class to do all the work for us.
<ttx> The debian/control file would be like:
<ttx> http://pastebin.ubuntu.com/362512/
<ttx> And the debian/rules file is then as simple as:
<ttx> http://pastebin.ubuntu.com/362514/
<ttx> We include the ant CDBS class on line 3
<ttx> JAVA_HOME on line 5 matches our "default-jdk" build-depend
<ttx> Lines 8 to 10 take care of installing the JAR and the unversioned link to it.
<ttx> Easy enough, if you already know a bit of debian packaging
<ttx> The issue is, I couldn't find a single library as simple as that one. Let's look into real world examples now :)
<ttx> This is the debian/rules file for "trove":
<ttx> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/trove/lucid/annotate/head%3A/debian/rules
<ttx> It's mostly identical to our easy one, except we had to specify a DEB_ANT_BUILD_TARGET, since just calling "ant" without argument wouldn't build anything
<ttx> It also builds the Java documentation, so there are special rules to take care of the produced javadoc.
<ttx> Questions !
<ttx> <mhall119|work> QUESTION does it just use javadoc?
<ttx> well, it uses ant, which calls javadoc
<ttx> see DEB_ANT_BUILD_TARGET := jar javadoc
<ttx> that means it will call "ant jar javadoc"
<ttx> if you look into the build.xml you'll find a "javadoc" target
<ttx> that does ant magic to build the doc, by calling javadoc
<ttx> we are just calling ant here.
<ttx> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/trove/lucid/annotate/head%3A/build.xml#L167
<ttx> ^that's where the build.xml file specifies it. But that is part of upstream distribution, not written by us
<ttx> OK, complexity level 2 now...
<ttx> == Example 2: Build dependencies ==
<ttx> When you have build dependencies, you'll need to add the required libraries to the build classpath.
<ttx> The CDBS ant class has a nifty mechanism for that, just add the required JAR names on a DEB_JARS line.
<ttx> You can put JAR names (without path or extension, it will look in /usr/share/java) or complete paths.
<ttx> See that example with the "jug" library:
<ttx> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/jug/lucid/annotate/head%3A/debian/rules
<ttx> line 11
<ttx> Also note that DEB_ANT_CHECK_TARGET lets you specify a build.xml target to be called for post-compilation tests.
<ttx> The other thing you might need to do at that point is to patch the build.xml file to make it use the system classpath instead of a build.xml-specific one.
<ttx> See line 16 of the build.xml patch needed for jug:
<ttx> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/jug/lucid/annotate/head%3A/debian/patches/build-xml.diff
<ttx> Quick tip, you can also pass "DEB_ANT_ARGS := -Dbuild.sysclasspath=last", that will make sure the system classpath is appended to any build.xml local classpath.
<ttx> Questions ?
<ttx> I don't know if this is too easy or too complex :)
<ttx> ok, let's move on
<ttx> <Omar871> QUESTION: I am completely new to this kind of stuff, but I sill want to learn. So, is this some kind of a markup language or something?
<ttx> Omar87: depend on what you mean by "stuff". Is is the debian/control or the build.xml that looks like stuff to you ?
<ttx> It's impossible to cover both debian packaging *and* java libraries packaging in a single hour, sorry :)
<ttx> On to complexity level 3 !
<ttx> == Example 3: Write a build.xml ==
<ttx> Sometimes there will be no build.xml, or the provided build.xml will be so funny rewriting it is better than trying to use it.
<ttx> Then you should provide your own debian/build.xml and point the CDBS ant class to it.
<ttx> See that minimal debian/build.xml example for "mvel":
<ttx> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/mvel/lucid/annotate/head%3A/debian/build.xml
<ttx> just takes classes, compiles them and makes a jar out of them
<ttx> And here is the rules file that makes use of it (see DEB_ANT_BUILDFILE at line 10):
<ttx> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/mvel/lucid/annotate/head%3A/debian/rules
<ttx> Also note the passing of parameters to the build.xml file, using DEB_ANT_ARGS on lines 11-12.
<ttx> Questions on this example ?
 * ttx lets some time for students to catch up
<ttx> Time for level 4, I guess
<ttx> == Example 4: Shipping POM / maven-repo-helper ==
<ttx> That's starting to be interesting to LumpyCustard
<ttx> Like I already said, maven is a build/integration system that handles both build rules and dependency management
<ttx> It relies on a specific repository layout and dependency description files called .pom files.
<ttx> Usually it just downloads dependencies from the Internet directly
<ttx> We want it to use the system-installed libraries and not use internet for anything
<ttx> because we want reproduceable builds, not depending on the state of internet at any given time
<ttx> In order to support building packages using maven, we need to start shipping our libraries in a maven-compatible form.
<ttx> Debian Java developers worked on a spec, it requires installing JARs and POM files in /usr/share/maven-repo
<ttx> To ease that they created a maven-repo-helper package that provides convenient helpers:
<ttx> mh_installjar will install a JAR in /usr/share/java and create all the necessary links, including the classic unversioned one
<ttx> mh_installpoms will install POM files
<ttx> See this debian/rules example for commons-beanutils, in particular lines 15-16:
<ttx> http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/lucid/commons-beanutils/lucid/annotate/head%3A/debian/rules
<ttx> (this library isn't using maven to build, it's just installing itself in a maven-friendly way)
<ttx> Those maven-friendly libraries allow "maven" to make use of the system installed libraries
<ttx> Questions ?
<ttx> that was the last example, we'll move now to more general Q&A about any subject you want...
<Pendulum> < luckyduck> QUESTION: what is installed by the mh_installjar tools?
<ttx> I'll talk a little about packaging stuff that uses maven, for LumpyCustard
<ttx> mh_installjar makes sure that the jar is installed at the right place with links. For example:
<ttx> easy.jar 1.0 gets installed in /usr/share/java/easy-1.0.jar
<ttx> + the following symlinks:
<ttx> /usr/share/java/easy.jar -> /usr/share/java/easy-1.0.jar
<Pendulum> < luckyduck> QUESTION: a link from an debian/ubuntu package?
<ttx> /usr/share/maven-repo/com/easycorp/easy/easy-1.0.jar -> /usr/share/java/easy-1.0.jar
<ttx> /usr/share/maven-repo/com/easycorp/easy/easy-debian.jar -> /usr/share/java/easy-1.0.jar
<ttx> yes, the jar and the links get installed by dpkg when installing the libeasy-java package
<Pendulum> < SevenMachines> [QUESTION] I've seen packages that carry the actual source files inside a jar, is there any reasonable way to use patches in the packaging in that sort of case?
<ttx> SevenMachines: the source should be repackaged as an orig.tar.gz
<ttx> About maven, having more and more libraries maven-compatible finally allows to use maven in debian packaging
<Pendulum> < LumpyCustard> QUESTION: Would there need to be a new <repository> in the application pom to use the jars already found on the system?
<ttx> http://wiki.debian.org/Java/MavenBuilder
<ttx> LumpyCustard: that's a good question
<ttx> LumpyCustard: I'm far from being a maven expert. All I can say is that pom files are patched at install
<ttx> and our maven is also patched to use /usr/share/maven-repo
<ttx> The MavenBuilder link above points to the work in Debian to further support maven
<ttx> it's still very much work in progress, since maven is so distribution-unfriendly (it's basically another packaging system)
<ttx> ok, time is up
<ttx> thanks everyone !
<ttx> next up is...
<aquarius> me. :-)
<ttx> "Adding Ubuntu One support to your applications" :)
<ttx> Led by the incredible Stuart Langridge
<aquarius> [SLIDE 1]
<aquarius> hm, that didn't work, that's kees's talk. never mind :)
<aquarius> Hi! I'm Stuart Langridge, from the Ubuntu One team, and this talk is called "Adding Ubuntu One support to your applications".
<aquarius> You can ask questions at any time in #ubuntu-classroom-chat. Please write QUESTION at the beginning of your question so I can see it more easily. I'll stop at the end of a section and answer some questions.
<aquarius> During this talk I'm going to explain the different ways your applications can take advantage of Ubuntu One...
<aquarius> ...talk about why you'd want to do that...
<aquarius> ...and give a couple of sneak previews of things that you can't *quite* do yet but will be able to do for Lucid 10.04, so you can be ready!
<aquarius> Firstly, though, remember that "integrating with Ubuntu One" isn't really the point; the point is to give features to your users that make their lives easier.
<aquarius> Now, obviously, using Ubuntu One will make you taller, it'll make you more attractive to the appropriate sex, and it'll make the sun shine more brightly, but remember that it's all about providing things that your users want...
<aquarius> ...and Ubuntu One gives you the infrastructure you need to do that. If it doesn't, come talk to us!
<aquarius> OK, so, the first thing is: files.
<aquarius> As you know, Ubuntu One automatically synchronises files in your Ubuntu One folder to Ubuntu One itself in the cloud and to all your other machines.
<aquarius> This means that you can take advantage of automatic file backup just by having your application save things to the filesystem!
<aquarius> Imagine that you want attachments that you receive by email to be stored online and backed up so you can get at them later.
<aquarius> [SLIDE 2]
<aquarius> (bah. ignore the slides. they're not my slides)
<aquarius> Most mail clients will already let you do this in some way. So, change the folder that these attachments are saved in to be an Ubuntu One folder and suddenly all your attachments are backed up online and available on every machine!
<aquarius> For example, there is a Thunderbird attachment called "Attachment Extractor" (https://addons.mozilla.org/en-US/thunderbird/addon/556)
<aquarius> Install it, select "Automatically extract attachments on email receipt" in Tools > AttachmentExtractor settings > Auto-Extract, and set the "Save Path for Attachments" to /home/YOU/Ubuntu One/Mail Attachments, and that's all you need!
<aquarius> Similarly, if you want off-site backups of your computer, then you can install one of the many simple backup programs, like backintime (http://backintime.le-web.org/) and choose the backup folder to be inside your Ubuntu One folder.
<aquarius> With no extra effort you've got off-site online backups which you can get at from any of your machines or from the web.
<aquarius> As another example, imagine you've built yourself a digital picture frame out of an old laptop, which is a pretty cool project for your weekends. How do you get the photos on it?
<aquarius> [SLIDE 3]
<aquarius> Well, when I did this, I created a new Ubuntu One user for the picture frame, and then I shared a folder with that picture frame user through Ubuntu One.
<aquarius> The picture frame just did this: eog --slideshow "/home/pictureframe/Ubuntu One/Shared With Me/pictures from Stuart Langridge"
<aquarius> and then to add new pictures to the frame, I just copy them into the folder that I shared.
<aquarius> I could share that folder with anyone else, too, and allow them to write to it, and then they'd be able to add pictures to the frame too!
<aquarius> The way I'll do this from 10.04 Lucid onwards is to use the new User Defined Folders feature, where any folder, anywhere, can be designated as an Ubuntu One synced folder
<aquarius> and you can elect to have some folders but not others synced to particular machines
<aquarius> So I'd create my "digital picture frame" folder in my home folder (or wherever), and then mark it as a UDF.
<aquarius> Then on the picture frame itself, I'd sign into Ubuntu One, and say that I only want to subscribe to that particular UDF and not any of the others.
<aquarius> so then files that I put into "digital picture frame" on my laptop will be synced to the picture frame
<aquarius> and the picture frame just displays all the files in that folder
<aquarius> ta daaah, it Just Works.
<Pendulum> QUESTION: Is there a full GObject U1 API for storing data, settings etc. or do we have to make use of ~/Ubuntu One/ for now?
<aquarius> A much-requested feature which will be available in Lucid is "public files", the ability to publish an Ubuntu One-synchronised file to a public URL so anyone can get at it.
<aquarius> This is useful for the user directly; they can easily make a file available to the world.
<aquarius> It's also really useful for applications, because you can now build one-click publish-to-the-world directly into your apps.
<aquarius> Imagine that your app is Shutter, which is like the standard Gnome Screenshot tool on steroids.
<aquarius> If you install Shutter and then hit the Print Screen button, it'll take a picture of your screen.
<aquarius> One of the main reasons people take screenshots of their screen is to show them to other people, which makes this a perfect case for publishing the screenshot to a URL so anyone can see it.
<aquarius> So, in Shutter (or your similar app), provide a "Publish with Ubuntu One" button.
<aquarius> [SLIDE 4]
<aquarius> That button should do the following:
<aquarius> 1. Save the file into the user's Ubuntu One folder (just save, as normal)
<aquarius> 2. Call the publishing API
<aquarius> The publishing API will be D-Bus; I can't confirm exactly how it will work, yet, because the team are still constructing it, but keep your eyes open for more details!
<aquarius> This shows a basic principle of Ubuntu One's design; pretty much anything you can do explicitly, like publish a file, or share a file, can also be done using the D-Bus API from applications.
<aquarius> I'll answer some questions here about using Ubuntu One file sync in your apps.
<aquarius> kklimonda|lernid> QUESTION: Is there a full GObject U1 API for storing data, settings etc. or do we have to make use of ~/Ubuntu One/ for now?
<aquarius> Data and settings are best stored in desktopcouch if you want to take advantage of all that lovely synchronization goodness; there are benefits to doing it that way, and I'll talk about desktopcouch in a bit.
<aquarius> But you can certainly store settings files in ~/Ubuntu One if you want to
<aquarius> and obviously actual data *content* that your apps work on, your documents and so on, are stored in ~/Ubuntu One
<aquarius> mhall119|work> QUESTION: in 10.04 you will be allowed to have multiple sync folders outside of ~/Ubuntu One/ ?
<aquarius> mhall119|work, yep, you sure will. UDFs (user defined folders) are a big feature that'll land in 10.04.
<aquarius> strycore89> QUESTION : will we be able to share single files and not whole directories ?
<aquarius> No. Sharing is done folder-by-folder, and we're not planning on changing that.
<aquarius> mhall119|work> QUESTION: right now the local folder names match the online folder names.  With the ability to have multiple sync folders, how are naming conflicts resolved?
<aquarius> I'm not sure what you mean here by "naming conflicts"; maybe we can pick that point up after the session, or later on?
<aquarius> foobob> QUESTION: are you thinking of giving some GB more to the free plan?
<aquarius> I don't believe we are at the moment, no.
<aquarius> yltsrc> QUESTION: will be ready symlincs in U1?
<aquarius> yltsrc, UDFs, being able to mark any folder as Ubuntu One synchronized, takes the place of symlinks. If you use, er, some alternative to Ubuntu One and you're used to putting a symlink in, say, ~/SyncedFolder which points at ~/SomeOtherFolder to get SomeOtherFolder synced, you don't need to do that in Ubuntu One; you just mark SomeOtherFolder as a UDF and it will be synced for you.
<aquarius> lantash49> QUESTION: Will there be more detailed specification w.r.t storing settings in ~/Ubuntu\ One? Storing them there directly seems to conflict with the XDG directory specs.
<aquarius> lantash49, one obvious approach to this is to mark XDG_CONFIG_DIR and XDG_DATA_DIR as UDFs, so they're synchronized across your computers.
<aquarius> yltsrc> QUESTION: i want participate in testing U1, how can I do it?
<aquarius> Drop into #ubuntuone and talk to the team about what's going on and how you can help; we've had some really helpful community members already, like rtgz, who's done tons of stuff
<aquarius> taj> QUESTION: Are there any plans to make U1 cross-platform?
<aquarius> There's a sprint at PyCon US to port Ubuntu One file sharing to Windows: http://us.pycon.org/2010/sprints/projects/ubuntuone/
<aquarius> and mandel, another incredible community member, is currently porting desktopcouch to Windows: http://www.themacaque.com/?p=372
<aquarius> both of those projects are great, and if you can help that'd be wonderful
<aquarius> mhall119|work> QUESTION: If I put a symlink inside of a UDF, that points elsewhere, does U1 sync that as a link, or as a copy of what is linked to?
<aquarius> it's synced as a symlink.
<aquarius> right, let's carry on :)
<aquarius> The second leg of Ubuntu One for developers is desktopcouch, the CouchDB on your desktop.
<aquarius> If you missed my last Ubuntu Developer Week talk about the basics of desktopcouch and what it's for, you can read it at http://www.kryogenix.org/days/2009/09/03/desktop-couch-irc-talk
<aquarius> In fact, you can read all the desktopcouch documentation at http://www.freedesktop.org/wiki/Specifications/desktopcouch/Documentation/, and you should do so :-)
<aquarius> The bit that's most likely to be relevant here is the "I am a developer, and I want the applications I write to store data in and work with desktopcouch" section. It contains much that is relevant to this talk!
<aquarius> http://arstechnica.com/open-source/guides/2009/12/code-tutorial-make-your-application-sync-with-ubuntu-one.ars/1 is a really great guide, written by segphault, of how to support cloud synchronization of data in your applications.
<aquarius> Essentially, if you use desktopcouch to store your application's data, instead of using sqlite or flat files, then the data will be synchronised between all your machines *without you having to do anything*.
<aquarius> [SLIDE 5]
<aquarius> So your app will work the same on all your machines with no effort.
<aquarius> To store a record in desktopcouch, simply do:
<aquarius> >>> from desktopcouch.records.server import CouchDatabase
<aquarius> >>> from desktopcouch.records.record import Record
<aquarius> >>> db = CouchDatabase('testing', create=True)
<aquarius> >>> r = Record({'key':'value'}, record_type='http://example.com/testrecord')
<aquarius> >>> record_id = db.put_record(r)
<aquarius> and to get it back, by record ID:
<aquarius> >>> fetched = db.get_record(record_id)
<aquarius> >>> print fetched['key']
<aquarius> 'value'
<aquarius> The Quickly project, for writing Ubuntu apps, have created "widgets" that use desktopcouch without you having to think about it. CouchGrid, for example:
<aquarius> >>> from desktopcouch.records.couchgrid import CouchGrid
<aquarius> >>> keys=["key","another key"] # to label the columns
<aquarius> >>> couchgrid = CouchGrid(db_name, record_type=record_type, keys=keys)
<aquarius> >>> mywindow.pack_start(couchgrid)
<aquarius> and then you have a CouchGrid, which is a data table where all the data is automatically retrieved from desktopcouch and stored back into desktopcouch when changed
<aquarius> http://www.youtube.com/user/calorielookup#p/a/u/0/Vwr5Xw5ZrIE has a video demonstrating couchgrids
<aquarius> You don't have to know anything about desktopcouch at all for this! Just use the widget and your data will be saved to the database and synced to your different machines with no effort or code on your part at all.
<aquarius> https://wiki.ubuntu.com/Quickly/Snippets has a few more examples of using desktopcouch from Python and from Quickly apps.
<aquarius> So, cloud-enable your apps! Let's see my song ratings in Rhythmbox or Banshee or Amarok or Exaile or Quod Libet appear on all of my machines. Let's see my Chrome bookmarks appear everywhere, like my Firefox bookmarks already do.
<aquarius> Remember, too, that apps can share data. If you want to store song ratings for Amarok in desktopcouch, don't make that storage Amarok-specific; that way, if I decide to switch to Quod Libet I don't have to re-rate all my songs!
<aquarius> I'm happy to answer questions about sharing of data between apps if you have them.
<aquarius> Also, I'll stop now to take some questions about desktopcouch generally.
<aquarius> andypiper> QUESTION: what is Quickly....?!
<aquarius> Quickly is an app that helps you make Ubuntu apps really...quickly
<aquarius> it takes care of putting together the framework of an application for you, and it makes a deb package for you and uploads the code to launchpad, etc. All the boring stuff that you don't care about when you just want to get your app done
<aquarius> the next session, by didrocks, is about quickly, so I'd stick around for that :-)
<aquarius> https://wiki.ubuntu.com/Quickly has more
<aquarius> yltsrc> QUESTION: is available any standard for database name? And how resolve conflicts with different application?
<aquarius> yltsrc, there isn't a standard, as such, for database names, because what the desktopcouch project is trying to avoid is laying down lots of standards that you Must Comply With
<aquarius> we're a "rough consensus and running code" sort of group :-)
<aquarius> the best place to have discussions about that sort of thing is at http://groups.google.com/group/desktop-couchdb which is the desktopcouch mailing list
<aquarius> dekstopcouch records are deliberately set up to have two sections, a "main section" and an "application specific" section
<aquarius> so the idea is that apps co-operate on the main section and store app-specific data in the app-specific section
<aquarius> for example, Evolution contacts sync in Ubuntu One is done by Evolution storing your contact data in desktopcouch
<aquarius> but the format for a contact has been defined
<aquarius> and the contacts are stored in a database in desktopcouch called "contacts"
<aquarius> so Thunderbird, for example, could *also* sync its contacts to that same database, in the same format
<aquarius> and Evolution stores Evo-specific data (like, say, an internal ID) for a contact record in the app-specific part of the contact record
<aquarius> and Thunderbird would do the same
<aquarius> what this means is that if you decide to switch from Evolution to Thunderbird, you've still got your addressbook! You don't have to export it and re-import it every time you move between applications
<aquarius> yltsrc> QUESTION: U1 require python (2.6). Is any plans to run it on python3?
<aquarius> I don't believe there is, at the moment, no.
<aquarius> b1ackcr0w> QUESTION: SpiderOak is said to be going Open Source soon, are there oppertunities to integrate their services with U1?
<aquarius> There could be, certainly. I haven't looked into that in detail myself, but I'll be sure and bring it up!
<aquarius> mhall119|work> QUESTION: I want to hack on the server-part of U1, short of becoming a Canonical employee, what can I do?
<aquarius> At the moment, you can't, I'm afraid. The source code for the server part of file synchronization is closed.
<aquarius> The source code for the server part of desktopcouch is CouchDB, though, and work on that is perfectly doable.
<aquarius> We worked closely with the CouchDB upstream project to make sure that all the changes we needed to use CouchDB in Ubuntu One were part of the main CouchDB trunk.
<aquarius> yltsrc> Is avalably any FEATURE ROADMAP for U1?
<aquarius> that's...sorta what this talk is :) I can see how it might be useful to have a more formal statement of "what's coming up", though. I'll bring that up with the team.
<aquarius> yltsrc> QUESTION: is U1 uses dbus? and how i can extend my application to use it?
<aquarius> Yes. The syncdaemon, which is the bit that handles file synchronization, exposes D-Bus commands for almost everything it does.
<aquarius> OK, I'll carry on.
<aquarius> Since desktopcouch is a CouchDB, and since your data is synchronised not only to your other machines but up to the cloud as well, this opens up the intriguing possibility that you can build a web app that can share data with your desktop app.
<aquarius> Ubuntu One's CouchDB uses OAuth for authentication.
<aquarius> This means that your web app can ask permission from the user to read your desktop app's CouchDB data directly from Ubuntu One.
<aquarius> So the data that appears in your desktop app can also be available to that user on the web.
<aquarius> This is a pretty new area, so nobody's using it yet, but it's possible.
<aquarius> You use OpenID to log the user in to your web app using Ubuntu One -- you may have seen "log in with Twitter" buttons, or "Facebook Connect", which work on the same principle.
<aquarius> Once that's done, your web app can then request permission to read the user's CouchDB database to get at the data that your *desktop* app stored there.
<aquarius> So, if we think about the song ratings example above, you can build a web application that can show all the song ratings that the user has entered and allow them to be edited.
<aquarius> Your users can then manage their song ratings or playlists or whatever else you've stored directly from a web interface if they're not at their actual computer.
<aquarius> Sharing data between web apps and desktop apps is quite hard, and not many people are doing it, so this is a chance to offer a feature that no-one else has!
<aquarius> DesktopCouch plus web apps give you the ability to share that data without you having to do any extra work.
<aquarius> This also gives you the ability to offer mobile apps as a web interface, so people can work with their data from their smartphone and see their work reflected on their desktop when they get back to it.
<aquarius> Are there any questions about how linking up desktop apps and web apps would work?
<aquarius> mhall119|work> QUESTION: how does it handle when a file is edited on2 different computers before syncing?
<aquarius> If that happens, you'll get a .u1-conflict file showing you that there was a conflict, for file synchronization.
<aquarius> In desktopcouch, there will be a conflict record for the data.
<aquarius> One of the things that we have on our Big List Of Stuff To Do is some sort of graphical conflict management to make dealing with these situations even easier, but that won't be done for 10.04.
<aquarius> So at the moment, handling data conflicts is done by the applications that use the data; the applications have a better idea about how to merge/overwrite/handle conflicts than Ubuntu One does most of the time anyway, because Ubuntu One just moves the data around, it doesn't always understand it.
<aquarius> qense> (late) QUESTION: When you define a UDF outside the Ubuntu One directory, where will it be synced to when you enable/install Ubuntu One on a different computer?
<aquarius> It'll be synced to the same path, so if you mark ~/myfolder as a UDF on computer 1, it'll appear as ~/myfolder on computer 2.
<aquarius> duanedesign> QUESTION: Where can I find documentation on the U1 API
<aquarius> the desktopcouch API is defined (mostly) in the desktopcouch documentation at http://www.freedesktop.org/wiki/Specifications/desktopcouch/Documentation
<aquarius> the file sync API isn't defined anywhere yet, I don't believe, because we haven't had a chance to do it, so it's reading the source, I'm afraid. https://wiki.ubuntu.com/UbuntuOne has some details, though.
<aquarius> emoreno> QUESTION: Is there any way to use a Private Cloud rather than U1 with the same API
<aquarius> Not at the moment. The protocol that the syncdaemon uses to talk to the cloud isn't secret, though, so it would be possible to implement a private cloud.
<aquarius> mhall119|work> QUESTION: does U1 offer any kind of versioning on it's data, like the ability to retrieve an older version?
<aquarius> Not at the moment, no. We've talked about that, but it isn't available now.
<aquarius> OK, that's a brief tour of what services Ubuntu One can bring to your apps. You can make the files your app uses be synchronised, you can publish those files publically, you can store data from your apps that will be available everywhere, and you can share that data with web applications.
<aquarius> [SLIDE 6]
<aquarius> Are there any further questions before I hand over to our next speaker?
<aquarius> nealmcb> QUESTION: Re the question on working on the U1 server end - Elliot Murphy recently talked about your open file storage protocol, noted his "build no silos" policy for U1, and talked about e.g. Tomboy integration.  Can you expand on the places that people can work on servers that integrate with U1 protocols?
<aquarius> desktopcouch is a CouchDB, so it can replicate data with any CouchDB, including other desktopcouches on your LAN -- see the desktopcouch-pair tool for this, in the desktopcouch-tools package -- and so doesn't even need a server at all
<aquarius> Tomboy notes sync was done by us implementing the Snowy API -- Snowy is a Django server to which you can sync your notes, designed by the Tomboy team, and they're looking at doing their own deployment of it
<aquarius> qense> QUESTION: Any change there will be a small collection of snippets showcasing webintegration of Ubuntu One?
<aquarius> if someone does that I'll love them forever.
<aquarius> I'd certainly like to, it's just finding the time :-)
<aquarius> OK, if you have other questions, feel free to ping me, or chat on #ubuntuone
<aquarius> and I'll hand over to the wonderful dpm and didrocks who are talking about internationalisation, quickly, and Launchpad!
<dpm> thanks aquarius!
<didrocks> thanks aquarius :)
<dpm> [SLIDE 1]
<dpm> hey everyone
<dpm> and welcome to this session on internationalizating applications with Quickly (https://wiki.ubuntu.com/Quickly)
<dpm> https://wiki.ubuntu.com/Quickly
<dpm> now
<dpm> In the next hour we'll be talking on how to make applications speak your own language using several awesome technologies: Quickly, Gettext and Launchpad
<dpm> Your equally awesome speakers today (well, at least didrocks is) will be:
<didrocks> Hi, I'm Didier Roche, I work in the Ubuntu Desktop team. I'm more focused on packaging UNE (Ubuntu Netbook Edition), which is the new name of UNR (Ubuntu Netbook Remix) and some GNOME related components.
<dpm> [SLIDE 1]
<dpm> Hi my name is David Planella, I work as the Ubuntu Translations Coordinator and as such my job is to work together the wonderful Ubuntu translations teams and make sure translations keep rocking as usual. I'm also a GNOME and Ubuntu translator, and lead of the Ubuntu Catalan translation team
<dpm> So, without further ado, let's start the session by having a quick look at the main players involved in the internationalization game:
<dpm> [SLIDE 2]
<dpm> == GNU Gettext ==
<didrocks> dpm: maybe, the link to the slides for people not having lernid if you have it :)
<dpm> here it is : http://people.ubuntu.com/~dpm/Quickly-i18n.pdf
<dpm> Gettext is the underlying and most widely used technology to enable translations of Open Source projects.
<dpm> It defines a standard format of translation files translators can do their work with (PO files)
<dpm> and lets applications load those translations compiled in a binary format (MO files) at runtime.
<dpm> It has implementations for many programming languages, and amongst them, of course, Python.
<dpm> You'll find that the comprehensive gettext manual at http://www.gnu.org/software/gettext/manual/gettext.html can be a very useful reference,
<dpm> especially in those sleepless nights.
<dpm> The Python implementation of the gettext API is what we'll use to internationalize our project with Quickly today.
<dpm> Needless to say, it also comes with some nifty documentation at http://docs.python.org/library/gettext.html
<dpm> == intltool ==
<dpm> Intltool is a higher level tool that adds functionality to gettext by allowing the extraction of translatable strings from a variety of file formats
<dpm> It has also become a standard tool when implementing internationalization for OSS projects. Nearly all (if not all) GNOME projects, for example, use intltool.
<dpm> It has also become a standard tool when implementing internationalization for OSS projects. Nearly all (if not all) GNOME projects, for example, use intltool.
<dpm> For those interested in trivia, Danilo Å egan (or ÐÐ°Ð½Ð¸Ð»Ð¾ Ð¨ÐµÐ³Ð°Ð½, for those who can read cyrillic), our very own Launchpad Translations developer lead is also the co-maintainer of intltool.
<dpm> == python-distutils-extra ==
<dpm> Python-distutils-extra is a python package that makes it easy to integrate themable icons, documentation and gettext based translations in your python install and build tools, and it's basically an enhancement to python-distutils.
<dpm> The project's page is at http://www.glatzor.de/projects/python-distutils-extra/
<dpm> The three above technologies (gettext, intltool, python-distutils-extra) are transparently used by quickly, so we won't get into much more detail for now.
<dpm> There are also more aspects involved in internationalizing applications, such as font rendering, input methods, etc., but this should get you started for now.
<dpm> == Quickly ==
<dpm> I'll be very brief here and let Didier tell you more about Quickly in a bit.
<dpm> For now, it will suffice give you a teaser and tell you that it is the tool which brings back the fun in writing applications
<dpm> == Launchpad Translations ==
<dpm> Launchpad Translations ( https://translations.launchpad.net/ ) is the collaborative online tool which allows translation communities to be brought together and translate applications online through its web UI.
<dpm> Apart from the very polished UI to provide translations, it has other nice features such as message sharing across project series (translate one message in a series and it instantly propagates to all other shared series),
<dpm> global suggestions (suggestions of translations across _all_ projects in Launchpad), automatic imports of translations and automatic commits to bzr branches, several levels of permissions, and a huge translator base.
<dpm> On the right hand side of the URL I gave you you can see that there are quite a lot of projects using Launchpad to make translations easy both for developers and translators.
<dpm> I'll now hand over the mike to Didier to tell you more about what you all have wanted to hear: Quickly!
<didrocks> [SLIDE 3]
<didrocks> To follow that session, you can install Quickly on karmic or lucid simply by executing $ sudo aptitude install quickly.
<didrocks> well, if you are brave an courageous, you can also run from the trunk lp:quickly ;)
<didrocks> Once Quickly is installed, close the terminal and open a new one so that statement completion works (and you will love Quickly statement completion ;))
<didrocks> But first, what is Quickly? In a nutshell, Quickly makes it easy and fun to write apps.
<didrocks> Rick Spencer (leader of Ubuntu Desktop team) is the inspiring sources of Quickly and he started the first version of the app in May 2009.
<didrocks> In Ubuntu and more generally in GNU/Linux, we have tons of good libraries, rocking technologies and programming languages.
<didrocks> But there are so many that some times it's difficult to pick "what I should choose".
<didrocks> Not talking about deprecating technologies that you just discover their current unmaintained state once you have almost finished your apps (libglade, I'm looking at you!)
<didrocks> So, what's in Quickly?
<didrocks> Quickly has two parts: the core, which basically parses your input and templates.
<didrocks> Templates are sets of commands and code generators that are designed to work together in an end to end fashion to help developers write a certain kind of application.
<didrocks> But we can also imagine a LaTeX template, a template to manage docâ¦
<didrocks> A template can be written for using whatever technology in whatever language of your choice.
<didrocks> for instance, I'm working on a snippet template for awesome Jono's acire app :)
<didrocks> So, with templates, you can then create application or document set.
<didrocks> We'll focus there only on i18n with the first template that Quickly 0.2 provides: ubuntu-project (renamed ubuntu-application on the coming 0.4 release!)
<didrocks> (this template is using Glade, couchdb, has some nice trick for gedit, use bzr, and complete integration with LaunchPad and debian packaging)
<didrocks> For instance, Lernid that some of you may use to assist UDW, has been created with the ubuntu-project template. (http://www.jonobacon.org/?p=2258 for a shot of the story)
<didrocks> [SLIDE 4]
<didrocks> So, let's create first a simple ubuntu-project (assuming you are using Quickly 0.2):
<didrocks> $ quickly create ubuntu-project fooby
<didrocks> (assuming also that you successfully installed Quickly and opened a command line ;))
<didrocks> this tells Quickly to use the ubuntu-project template, and to call what is created "fooby"
<didrocks> This causes a bunch of info to be dumped to the command line, but ends with the application being run
<didrocks> What Quickly did was to copy over basically a sample application, and do some text switcheroos to customize the app
<didrocks> You can see there the ui which contains some text that needs translation.
<didrocks> To start making change to your app, cd to it (normally "$ cd fooby").
<didrocks> You can then edit your code with $ quickly edit, change the ui with $ quickly glade, and try your changes with $ quickly run
<didrocks> You can save your change with $ quickly save
<didrocks> Finally, to package, share, release your apps so that other will be, with the following commands (not all are necessary): $ quickly package / $ quickly share / $ quickly release
<didrocks> It would ask for minor things that it'll do for you as creating the package, licensing, etc.
<didrocks> We won't cover in anymore detail Quickly or ubuntu-project template here (quickly help <command> does this for you), you can find more pratical info at: https://wiki.ubuntu.com/MeetingLogs/devweek0909/QuicklyFun
<didrocks> And a detail review of Quickly there: http://blog.didrocks.fr/index.php/post/Build-your-application-quickly-with-Quickly%3A-part1 (this will kill my local Internet connection as I'm self-hosted ;))
<didrocks> You can also appreciate (or not) my French accent and see Rick and myself (jet lagged for my defense) presenting how to create an app with Quickly ubuntu-project template at http://www.youtube.com/watch?v=OOQOzPgLGLg
<didrocks> It was during last Ubuntu Developer Summit at it's starting at minute 17'.
<didrocks> David will now present you in more details what you will do in "quickly edit" and "quickly glade": adding internalization support to your app.
<dpm> Thanks Didier, I hope this got you all excited about trying out Quickly!
<dpm> As the project stands now, it has the infrastructure for internationalization in place, but we have to initialize it to enable it.
<dpm> This will include:
<dpm>   * Initializing gettext
<dpm>   * Marking strings for translation
<dpm>   * Updating the translation template
<dpm> [SLIDE 5]
<dpm> [SLIDE 5]
<dpm> First of all, we'll initialize gettext, which will basically be adding four lines of code. Here's how it goes:
<dpm>   quickly edit
<dpm> This will open all your project files in a text editor (Gedit by default)
<dpm> 1. Go to the fooby file and add the following two lines below 'import gtk', near the top of the file:
<dpm> import gettext
<dpm> import locale
<dpm> This will import the required modules for internationalization
<dpm> 2. Still on the fooby file, add the following line below the 'import logging, optparse' one, near the end of the file:
<dpm> gettext.install('fooby', unicode=True)
<dpm> This will install the _() function to mark (and call) translations as such in Pythonâs builtins namespace, based on the 'fooby' domain. The domain basically tells gettext where to load translations from.
<dpm> This will also save you to include 'import gettext' statements in all of your project files using gettext.
<dpm> Refer to the gettext documentation to find out more about translation domains.
<dpm> 3. Finally, add the following line to 'fooby', before the 'builder = gtk.Builder()' line
<dpm> locale.textdomain('fooby')
<dpm> This will tell GtkBuilder about the translation domain as well
<dpm> So that was it! Let's move on to marking strings for translation:
<dpm> First of all we'll tackle the .destop file
<dpm> Open the fooby.desktop.in file and prepend the Name and comment fields with an underscore (_), so they look like:
<dpm> _Name=Fooby
<dpm> _Comment=Fooby application
<dpm> This will tell intltool that this strings contain translations
<dpm> Next comes the UI. Let's see how you can mark strings in the UI for translation. Try:
<dpm>   quickly glade
<dpm> This will open your UI files in the glade editor.
<dpm> Once opened, click on the "Your application has been created! ..." label, find it in the General > Label field on the right, click on the ellipsis (the three dots) button and...
<dpm> amaze at the fact that it has already been marked as "Translatable", so you won't have to do anything.
<dpm> Right, so next comes something very important that you'll have to bear in mind for all strings you'd like to be translatable in your application:
<dpm> using the _() function call.
<dpm> This will mark them as translatable and call gettext to load the translations, and should be used for all messages you'd like to present to users.
<dpm> Let's just see how we can do this.
<dpm> Go back to your fooby file and find the "parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="Show debug messages")" line near the bottom.
<dpm> We want the "Show debug messages" message to get shown to users in their language, so we'll enclose it with the _() function, and it will look like:
<dpm> parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help=_("Show debug messages"))
<dpm> Now we're done
<dpm> The last part will be to update the translations template.
<dpm> A translations template is a formatted text file generally named yourproject.pot
<dpm> which contains your project's translatable strings in English and what translators use as a basis for their translations.
<dpm> You should do this before each release, so that translations are put in this template and are up-to-date for translators to work on.
<dpm> It is considered good practice to announce a string freeze (that is, the period in which strings are considered to be stable) a week or two before the release, so that translators know when they can start their work.
<dpm> This can be done in several ways with quickly, let's pick one:
<dpm>   quickly package
<dpm> After running this, you'll notice that (apart from having your application packaged!) there is a 'po' folder containing the translation template, ready for translators to work on.
<dpm> If you open it, you'll notice the format and will see that all the strings you marked for translation are there.
<dpm> You can also do this with 'quickly share', 'quickly release' or directly using the python-distutils-extra command: './setup.py build_i18n'
<dpm> == Launchpad Translations ==
<dpm> If this weren't awesome enough, once you've created a project in Launchpad ('quickly share', 'quickly release' or https://help.launchpad.net/ will help you on that) you can expose it for translations,
<dpm> so that you as a developer can use the automatic bzr import/export features to basically "forget" about translations and translators can use the web UI to translate.
<dpm> Let me tell you a bit more on those:
<dpm> [SLIDE 6]
<dpm> == Automatic imports ==
<dpm> Enabling this feature will allow you to automatically import the translation template for your application into Launchpad upon commit, with no further steps required.
<dpm> So the basic workflow will be: hack, hack, hack, update template, commit, have translators automagically see the new strings in Launchpad.
<dpm> In time, Launchpad Translations will grow the ability to automatically generate the templates, so you won't have to worry about updating it and commit it, but for now, the .pot template has to be kept under revision control.
<dpm> You can find more about this at http://blog.launchpad.net/translations/import-translation-templates-from-your-projects-bazaar-branches and http://blog.launchpad.net/general/trying-out-launchpad-translations
<dpm> Even better, there's a screencast available showing how to enable this at http://blog.launchpad.net/translations/screencast-importing-translation-templates-from-a-bazaar-branch
<dpm> == Automatic exports ==
<dpm> With automatic exports, you'll be able to complete the whole circle for automation: getting translations committed automatically (daily) to a bzr branch of your choice, so that neither you nor translators have to worry to get translations into your project.
<dpm> I personally find this one of the most coolest features
<dpm> Here's more info: http://blog.launchpad.net/general/exporting-translations-to-a-bazaar-branch
<dpm> And here's a screencast on how to enable it http://blog.launchpad.net/translations/screencast-exporting-translations-to-a-bazaar-branch
<dpm> Least but not last, you might also want to find out more on what message sharing is, enabling translations between multiple project series to have strings translated automagically across those series: http://blog.launchpad.net/translations/screencast-sharing-translations-between-releases-of-the-same-project
<dpm> == Permissions ==
<dpm> One very important aspect is how you want translations permissions for your project to be. This basically means choosing who will be responsible for submitting and reviewing those translations for each language.
<dpm> Launchpad is flexible in allowing different levels of openness for translating your project.
<dpm> This generally means that you as a maintainer will have to make a decision to balance openness (open translations for everyone) with quality control (a more closed process with reviewers and a QA workflow).
<dpm> The Launchpad help page on permissions at https://help.launchpad.net/Translations/YourProject/PermissionPolicies explains very well the different permissions you can use (Open, Structured, Restricted and Closed).
<dpm> If you decide for quality, you'll next have to choose to whom you assign the translation of your project.
<dpm> Here is where translation groups come to the rescue.
<dpm> Translation groups are confederations of translation teams, one for each language you can assign as a pack to translate your project. The teams in those groups are considered to be trusted to have experience with translations and generally have a review process in place.
<dpm> Here's a list of all current translation groups: https://translations.launchpad.net/+groups
<dpm> You can see that the two biggest ones are Launchpad Translators and Ubuntu Translators.
<dpm> While you can create a translation group specific to your project, we generally encourage maintainers to choose one of the existing ones,
<dpm> in order to reuse the pool of translators and not to further fragment translations communities.
<dpm> I personally recommend choosing Restricted (or Structured), assigned to the trusted Launchpad Translators or Ubuntu Translators (if your project is Ubuntu-specific) translations groups
<dpm> I'll now leave you in didrocks' good hands to tell you more on Quickly's new to come in the internationalization front:
 * dpm hands the mike to didrocks
<didrocks> Thanks David, you know that Quickly is using automatic export/import for Quickly itself? That's just awesome, no more to bother about generating templates, uploading them, downloading the localization: just use bzr!
<didrocks> It's using Restricted permission and we already have a lot of language supported in Quickly thanks to the rocking Launchpad Translator groups :)
 * dpm knew, he's been translating Quickly into Catalan! ;)
<didrocks> amazing ;)
<didrocks> (you started it IIRC)
<didrocks> ;)
<didrocks> [SLIDE 7]
<didrocks> Quickly 0.4 will bring a lot of new experiences and commodities to the users (more than 200 commits, 6 months of hard work!) and will be delivered in lucid.
<didrocks> Regarding internationalization, all the tedious job of importing/initalizing gettext and adding _() will be done for you in all newly created apps.
<didrocks> (now that I've assisted to the session, will be easier to do the right thing ;))
<didrocks> "$ quickly add pythonfile" will also add one boiler plate file containing that for you.
<didrocks> Quickly 0.6 (don't know when it'll be available but at least in 6 months ;)) will try to achieve the automatic imports and exports previously described on each $ quickly share / $ quickly release command.
<didrocks> So, normally, you won't have to bother anymore about localization and being in sync with the awesome work of your contributors
<didrocks> just use _(â¦) for each string
<dpm> I think we should then announce that there won't be any need for such talks in the future, as quickly will do nearly all this for you!
<didrocks> ok, and that's it for the session, dpm, back on the field to tackle questions? ;)
<dpm> sure, didrocks, if you give me a hand with the quickly ones?
<didrocks> dpm: for great pleasure :)
<didrocks> with*
<cjohnston>  AnAnt> QUESTION: why is it advisable to export to another bzr branch ?
<dpm> you can use the main branch if you like
<dpm> in fact Lernid does IIRC
<dpm> but this adds a lot of automatic commits to the branch
<dpm> and not all developers like this
<dpm> so they use a separate b ranch for the auto-commits
<dpm> of translations
<dpm> and then merge those translations back to the main branch when they need to
<dpm> e.g before release
<dpm> next question?
<didrocks> look at: https://code.edge.launchpad.net/~quickly/quickly/quickly-po for instance (merged in Quickly trunk before release) :)
<cjohnston> < foobob> QUESTION: any plans to use transifex for the localization of ubuntu?
<dpm> that's a bit out of topic, since we're not discussing the translation of Ubuntu - in any case, as awesome as Transifex is, we'll continue using owr own awesome translations tool
<dpm> Launchpad Translations
<dpm> which has got many features no other tool has
<dpm> next questio, please?
<cjohnston> If you asked a question during the class that has not yet been answered, please ask it again.
<cjohnston> < lernid_alucardni> QUESTION: any plans to integrate Quickly with other version control systems such as git?
<didrocks> lernid_alucardni: Quickly is only the core: so, you can implement your own template using any other vcs
<didrocks> something like ubuntu-application-with-git :)
<didrocks> or a better name of course
<didrocks> but if you want to develop a template with that, you can. Quickly 0.4 is able to import commands from another template
<didrocks> so, that save a lot of typing and ease your template creations
<didrocks> I don't personnaly know very well git and I think ubuntu-application user, in the ideal case, don't have to bother with which VCS its using
<didrocks> also, moving to another VCS means loosing the tight integration with Launchpad :/
<didrocks> so, well, it's possible and if you want to give it a try, just go on #quickly, I'll help you to be on the track :)
<didrocks> next?
<cjohnston> < AnAnt> QUESTION: some projects use XML (rather than po) for translation, is that supported (or will be supported) in Launchpad ?
<dpm> Launchpad standardises on the Gettext format, so it does not directly work with xml. That said,
<dpm> you can use conversion tools to convert e.g. docbook, xml docs to PO and then import them to Launchpad
<dpm> There are some projects which successfully do that
<dpm> like for example the ubuntu-dosc
<dpm> ubuntu-docs
<dpm> also,
<dpm> Launchpad is open source, so if anyone is willing to implement other formats
<dpm> the developers will be happy to mentor them
<dpm> check out
<dpm> https://dev.launchpad.net/Getting
<dpm> and the session tomorrow on Launchpad translations under the hood
<dpm> by adiroiban and henninge
<dpm> or you can ask for help on #launchpad-dev
<dpm> sorry, I forgot to mention the tool to convert xml to PO
<dpm> that's xml2po, available in the main repositories
<dpm> and it can convert back to xml once the translations are done
<dpm> ok, next question?
<cjohnston> < bullgard47> QUESTION: You showed us wonderful translation tools. Why does a German user still find a lot of untranslated strings in Karmic GNOME programs?
<dpm> Well, there's quite a lot of translation work to do to translate a full OS - you can contribute to the German translation by joining the Ubuntu German translations team at https://launchpad.net/~ubuntu-l10n-de
<dpm> and they should get you started
<dpm> or ask us at #ubuntu-translators
<dpm> any quickly-related questions?
<didrocks> dpm: seems, that people are more focussed on i18n ones ;) You won't get any rest :)
<dpm> hehe
<dpm> I like that
<didrocks> oh, I saw that one:
<didrocks> Nafai | Question: Can quickly be configured to use an editor other than gedit?
<dpm> well spotted ;)
<didrocks> Nafai: yes, you just have to configure it with sensible-editor or export EDITOR variable in your shell
<didrocks> then, ubuntu-project template will spot your preferred editor with quickly edit
<didrocks> quickly help edit for more info :)
<cjohnston> < OwaisLone> QUESTION: Any plans for a Quickly API so that it can kinda hooked into IDEs like Anjuta and Geany?
<didrocks> OwaisLone: yes, it's on the road for 0.4
<didrocks> so, you'll get a nice API on lucid version of Quickly :)
 * didrocks taps gavel
<dpm> cool, so I think we can just to thank everyone listening to us and participating, you truly rocked! Thanks!
<didrocks> I think we should leave the field to the next session before being hit :)
<didrocks> thanks a lot everybody, feel free to ping us and join #quickly
<didrocks> soren will now discuss about Automated server testing :)
<didrocks> oups
<didrocks> sorry, tedg's turn
<didrocks> from the awesome dx team and indicator applet's hacker
<tedg> Cool, thanks cjohnston!
<cjohnston> yup
<tedg> I was yelling, but it was no good :)
<tedg> Howdy everyone.
<tedg> This is the session on AppIndicators
<tedg> Or I guess "Application Indicators" but I'll use AppIndicators for short.
<tedg> Basically what AppIndicators are is a way for applications to add extra things to the panel for functionality that is continuously used throughout a users session.
<tedg> For the most part, there aren't a lot of applications that users need all the time, so it's important to think about whether an application needs an AppIndicator before starting.
<tedg> Some of the design considerations that you should take into account are available here:
<tedg> https://wiki.ubuntu.com/CustomStatusMenuDesignGuidelines
<tedg> One of the key values of AppIndicator that makes it a little different that the legacy notification area in the Freedesktop world (and systray in win32) is that it restricts every application to having a menu.
<tedg> This is a tradeoff.
<tedg> We want something that let's applications do really cool stuff and provide rich functionality to users, but at the same time we want the user to know what to expect when the click on an icon.
<tedg> With the old notification area, users didn't know what to do.  They learned it, but they didn't know, and often made mistakes.
<tedg> This predictability will hopefully make users feel more comfortable using Ubuntu.
<tedg> Some of the usability rationale is here:
<tedg> https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators
<tedg> Of course, as you go down that page you'll start to realize that we do have migration issues.
<tedg> If we removed the notification area in a signal release, that would suck for both users and app developers as there'd be no way to port all those applications in one cycle.
<tedg> So, for Lucid, there will still be a notification area, but we want to get rid of it ASAP.
<tedg> I hope we can for Lucid + 1, but we're planning to make the final decision there at UDS.
<tedg> You can see our planes in abstract fashion here:
<tedg> https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Proposed%20changes
<tedg> So, then, that leads to: How do you do it?
<tedg> :)
<tedg> What we did is provide a small convenience library called libappindicator which provides the basic interface for adding an application to the panel.
<tedg> At a high level you give it an icon, and a standard GTK menu, and it does the rest.
<tedg> Though, it's likely that many applications will want to move slightly beyond that.
<tedg> Let's first look at a sample little program in Python.
<tedg> because well, python make jonobacon25 happy :)
<tedg> https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Python%20version
<tedg> If you look at that python snippet one of the most important things is the object creation.
<tedg> appindicator.Indicator ("example-simple-client", "indicator-messages", appindicator.CATEGORY_APPLICATION_STATUS)
<tedg> Basically there are three parameters.
<tedg> The first is a unique ID for your application.
<tedg> In most cases this will be the program name, package name, or something that is unique to your app
<tedg> The second is your default icon.  In this example the indicator-message icon is being stolen.  Any icon in an icon theme can be used.
<tedg> Lastly is the category that your app indciator is in.
<tedg> This category is used for general grouping of the app indicators.
<tedg> This creates the basic object that is the app indicator.  But, you also need a menu.
<tedg> Basically that is done with: ind.set_menu(menu)
<tedg> The rest of the code is standard PyGTK code for creating the menu.
<tedg> Let me grab some questions here.
<tedg> jwendell: QUESTION: why to do this if panel is about to dead anyway?
<tedg> jwendell: I don't think panels in general are dead.  GNOME Panel is, but that's only a small part of this.
<tedg> jwendell: The overall user experience change is what we're pushing right now, the gnome-panel applet is a small part of that.
<tedg> ripps818: QUESTION: Are there going to be vala bindings?
<tedg> ripps818: Yes, there's actually a patch for that now.  I just need to get it merged in.
<tedg> ripps818: I'll find the bug number for you afterwards, ping me.
<tedg> qense: QUESTION: GNOME Shell is developing things that replace the functionality of AppIndicator, Notify OSD, MeIndicator, etc almost exactly. Is Ayatana working there as well, or is this duplicating of effort?
<tedg> qense: I hope that they won't duplicate all of this effort.
<tedg> qense: They're working on various things, but mostly I believe they've used some existing specs like the notification area so far.
<tedg> qense: I hope that they'll use some of this work when they go beyond this.
<tedg> qense: But, of course, I can't force them to take our code.
<tedg> qense: :)
<tedg> Okay, I think I caught up on some of the questions.  I'll continue on for a bit to collect some more :)
<tedg> So we went through some of the basic code to create an AppIndicator.
<tedg> This is the core boiler plate, but I want to talk about a few other bits that are in the examples.
<tedg> One of the things that the appindicator library provides is an easy way to switch between an attention icon and a standard icon.
<tedg> First you'll need to set the AttentionIcon using a call like this: ind.set_attention_icon ("indicator-messages-new")
<tedg> That basically just puts the icon in queue for when the status gets changed.
<tedg> And then you can call "set_status" like this:
<tedg> ind.set_status (appindicator.STATUS_ACTIVE)
<tedg> There are three statuses (statusi ?)
<tedg> Passive, which means the icon isn't shown.  Active, which shows the default icon.  And Attention, which uses the attention icon.
<tedg> Many apps do something like this where you'd have a basic icon in a standard state, then when something like you have a task to complete, it switching to an icon that draws the users attention.
<tedg> Those are probably the most interesting parts of the libappindicator API for app developers.
<tedg> The full API (in C) is available here: http://people.canonical.com/~ted/libappindicator/current/AppIndicator.html
<tedg> It has all the functions you could possibly love :)
<tedg> npmccallum: tedg: QUESTION: One of the biggest advantages of the standard GtkStatusIcon (and I know Qt has something similar) is cross-platform support.  What is the cross-platform support plan for AppIndicators?
<tedg> npmccallum: Thanks, I forgot to mention that :)
<tedg> npmccallum: We've based all of this work on a spec developed and released by the KDE developers.
<tedg> npmccallum: It's call StatusNotifierItem and it's currently being discussed on the XDG list for official Freedesktop.org status.
<tedg> npmccallum: So we hope for Lucid to provide an experience where KDE apps will run under GNOME with native menus and look beautiful.
<tedg> npmccallum: And integrated with the desktop as a whole.  More than with the notification area previously.
<tedg> AnAnt: QUESTION: is there a screenshot (or video) showing AppIndicators in action ? I saw some video few days ago, but I figured nothing from it
<tedg> AnAnt: The only video I have is an early demo that I put on my blog.
<tedg> AnAnt: http://gould.cx/ted/blog/Having_a_tidy_systray
<tedg> AnAnt: It just has a few of the same, but kinda shows them working.
<tedg> npmccallum: BTW, here's the spec: http://www.notmart.org/misc/statusnotifieritem/
<tedg> qense: QUESTION: Does it do flickering and yelling and fireworks? Or just another icon?
<tedg> qense: Just another icon.  The goal here is to use icon names for the different visualizations so they can be better matched to the panel theme in general.
<tedg> qense: Also, in general, I dislike the <blink> tag :)
<tedg> npmccallum: tedg: QUESTION2 - How about rendering icons on the fly?  I have an app that currently draws the icon on the fly with cairo and renders into a pixbuf, then displays with GtkStatusIcon.  Can I do this with AppIndicators?
<tedg> npmccallum: No, for the same reason as above.
<tedg> npmccallum: tedg: QUESTION1 revisited - I meant cross-platform as in win32 and mac
<tedg> npmccallum: The libappindicator will fallback and create a GtkStatusIcon if there is no Application Indicator service availabe.
<tedg> npmccallum: So I would image that it would work on win/mac like the current status icon.
<tedg> npmccallum: Though I haven't tested it or tried.
<tedg> I wanted to talk a little more about the fallback.
<tedg> The way that the fallback is implemented is that it's a set of two functions that are on the class of the AppIndicator.
<tedg> Some applications may wish to provide a different fallback than what is set up by default.
<tedg> To provide a different fallback what an app developer will need to do is to subclass the AppIndicator class and replace those two functions.
<tedg> Actually, a good place to look for that example is in the app-indicator.c file.
<tedg> As the two functions that are put there were designed to only use public API functions.
<tedg> So you should be able to copy-and-paste them into your own code, and then modify what you'd like to change.
<tedg> I wanted to talk a little about menus, and a good lead off is:
<tedg> lantash58: QUESTION: Is there a reason why menu entries with icons are indented? See http://dl.dropbox.com/u/232786/indicator.png Will the still icons be dropped as seen in regular menus?
<tedg> Yes the icons are indented.
<tedg> This is an issue with being cross desktop.
<tedg> The reason that they're not indented on GTK is that you can't have a check box and an image in the same item.
<tedg> So they can both override that space with their own graphic.
<tedg> But most toolkits don't have that restriction.
<tedg> So we need to be able to do both in a consistent fashion, and thus the icons need to be indented as shown there.
<tedg> In general, for Lucid we're supporting the basic menu types that are found in stock GTK.
<tedg> Those are image item, label item, radio and checkbox.
<tedg> While we certainly realize that people do more with menus than just those, the realities of a timed release schedule is that we don't get all we want :)
<tedg> (and I need to sleep sometime) :)
<tedg> So we expect to, for Lucid + 1 and beyond to start taking into account more complex menu needs.
<tedg> For instance in Tomboy there are pins in the right gutter.
<tedg> Or in KNetworkManager there are widgets to show signal strength.
<tedg> These menus pose quite a challenge, but it's one I'm personally excited to take on.
<tedg> Okay, that's all I have in my outline.
<tedg> Are there more questions for me?
<tedg> AnAnt: QUESTION: so how will clutter be reduced ?
<tedg> AnAnt: We expect clutter to be reduced in a few ways.
<tedg> AnAnt: The first is that a lot of clutter is disorganization, when things to feel like they connect together right.
<tedg> AnAnt: By having a single interface (menu) we hope that the whole thing will feel more unified.
<tedg> AnAnt: Secondly, but using icon names theme designers can do a specific "panel" theme that'll work across applications.
<tedg> AnAnt: Where before that was nearly impossible as changing an icon would change it everywhere.
<tedg> AnAnt: So if you changed the panel, in many cases you'd change the About screen too.
<tedg> AnAnt: So we expect less visual clutter on the panel itself.
<tedg> npmccallum: tedg: QUESTION: Would you consider adding a set_icon_with_number() API which would take a background icon and render a number on top of it?
<tedg> npmccallum: Definitely consider it.  I think I'd need to see some use cases for how it should work and all that jazz.
<tedg> npmccallum: Jump onto the Ayatana mailing list and let's talk about it further.
<tedg> npmccallum: Though, just incase my manager is listening, not for Lucid.  Lucid + 1 ;)
<tedg> qense: QUESTION: Is there a library for receiving the AppIndicator signals?
<tedg> qense: For the most part there aren't that many AppIndicator signals, just a couple coming off the object itself.
<tedg> qense: For most of the user actions they're routed into the various GTK menu items.
<tedg> qense: So you can use the standard GTK signaling that is already in the rest of your application.
<tedg> oskude: joined little late, so maybe i missed a question like this QUESTION - is there a tutorial to do an "applet" with a window that opens directly under the applet icon ? (like time/date/calendar/tasks/locations applet)
<tedg> oskude: No, we'd really like people to think of this as "applications" and "menus" instead of doing pseudo menus like the calendar applet.
<tedg> oskude: If you have specific features you'd like in a menu for an idea you have.
<tedg> oskude: I'd like to talk about that, so we can make sure menus handle as many use cases as possible.
<tedg> (obviously we don't want a mail client in a menu) :)
<tedg> oskude: Yes, I'd agree.  I think that a internet radio tracklisting is a usecase that we can put into a menu.
<tedg> oskude: Draw it up, by hand, whatever.  Throw it on the Ayatana list, and lets try to get that spec'd out for Lucid + 1.
<tedg> I've said it a couple of times, but here's the link for the Ayatana mailing list.
<tedg> https://launchpad.net/~ayatana
<tedg> It's in Launchpad so you just have to join that team and you'll start getting mail :)
<tedg> Cool, I think that pretty much wraps things up.
<tedg> Thanks everyone for coming.
<tedg> I'm usually in #ayatana on Freenode if something comes up.
<tedg> Ping me there, or join the Ayatana mailing list above.
<tedg> Thanks again!
 * soren clears throat
<soren> Hi, everyone.
<soren> Thanks for coming to my session on Automated Server Testing.
<soren> So..
<soren> In the server team, we've traditionally had a problem with collecting test results.
<soren> (question in #ubuntu-classroom-chat, by the way. please put "QUESTION" so that I will spot them)
<soren> This is because our target audience and most of our users are using Ubuntu on servers that are being used to service real users.
<soren> Real users, as you are probably aware, depend on their servers to work.
<soren> They need mail server to be up and delivering mail so that they can get their daily dosage of spam..
<soren> They need their file server to be around so they can get access to their music and various pirated software..
<soren> They need their proxy server to work so that they can log onto facebook..
<soren> They need the LDAP server to work so that they can look up the phone number for the pizza guy..
<soren> And other important things.
<soren> You get the idea.
<soren> If something should fail, it means pain and suffering for the poor sysadmin.
<soren> Hence, sysadmins are very hesitant to upgrade anything before it's been through lots and lots of QA.
<soren> However, unless /some/ of them /do/ upgrade, there's not going to be much QA work done.
<soren> This places us in a rather unfortunate situation, where a significant portion of our bug reports don't come in until after release.
<soren> Anyone involved in Ubuntu development will know that this is a hassle, since fixing things after release is much more tedious than before release, since we have much less freedom to make changes.
<soren> This is very difficult to change, and I haven't come up with a golden solution.
<soren> However, the sooner we catch problems, the more time we have to work on fun stuff since we'll be putting out less fires in the end.
<soren> See, while we're cursed with a user base that doesn't start testing our product until it's essentially too late..
<soren> ..we areblessed with a type of software that traditionally comes with a good test suite.
<soren> MySQL for instance, comes with an extensive test suite.
<soren> This test suite runs every time we upload a new version of mysql to Ubuntu.
<soren> If the test suite fails, the build fails, and the uploader gets an e-mail.
<soren> ...and it's all very obvious that something needs fixing.
<soren> This is great.
<soren> Well..
<soren> Sort of.
<soren> The thing is, every package in Ubuntu has dependencies of some sort.
<soren> For instance, almost everything depends on libc
<soren> This means that a change in libc will inevitably affect MySQL somehow.
<soren> Luckily, if this causes problems, it is (hopefully) caught by MySQL's test suite.
<soren> Less luckily, this test suite, as I just mentioned..
<soren> is run when MySQL is uploaded..
<soren> not when libc is uploaded.
<soren> So we may not notice a problem until the next time someone uploads MySQL. This could be weeks or even months!
<soren> And trying to narrow down the change that broke something is hard with all the stuff doing on in Ubuntu development over the course of months.
<soren> So..
<soren> to address this, we've set up and automated system that rebuilds MySQL ( and a bunch of other stuff) every night in a PPA.
<soren> That way, if we trust the test suite, we can relax  and know that MySQL still works, despite any changes in its dependency chain.
<soren> We do the same for libvirt, php5, postgresql, etc.
<soren> Basically, anything that has a test suite that runs at build time and that causes the build to fail if it doesn't pass, should be added.
<soren> This at least makes me sleep better :)
<soren> So, the automated testing stuff in Lucid consists of two parts.
<soren> The above is the first part, which is pretty nice.
<soren> The second part is awesome:
<soren> :)
<soren> It's an automated ISO testing system.
<soren> ISO testing is the thankless and tedious job of installing Ubuntu from an ISO over and over again..
<soren> ..with small adjustmets each time to make sure things haven't changed unexpectedly.
<soren> QUESTION: ~Shkodrani> why not run the test suite only when a packege on which, for instance MySQL relays on?
<soren> The cost of checking whether something in MySQL's dependency chain has changed is rather high. At the very least, it's tedious.
<soren> ..and just doing the rebuild is cheap and simple to get up and running.
<soren> It's all run by a 10 line shell script or thereabouts.
<soren> Ok, ISO testing..
<soren> Every time we come close to an alpha, beta or any other kind of release..
<soren> ..we all spend a lot of itme going through this install process.
<soren> Well, we /should/ anyway. I positively suck at getting it done, but there you go.
<soren> My fellow server team member, Mathias Gug, has had a preseed based setup running for a while now.
<soren> Basically, preseeding is a way to answer all of the installer's questions up front.
<soren> So, he takes all the answers..
<soren> passes them to the install using clever hacks..
<soren> ..and the install zips through the instlalation without bothering Mathias with questions.
<soren> In the end, he can log into the installed system and run the las tparts of the test cases.
<soren> This has served us well, and has probably saved us several man days (or weeks?) of testing tie over the last few years.
<soren> However, it doesn't actually test the same things as the ISO test cases describe.
<soren> The ISO test cases speak of the interaction between the user and the installer..
<soren> However, the point of preseeding is to /avoid/ interaction, and to skip it entirely.
<soren> Don't get me wrong..
<soren> Preseed testing is super valuable.
<soren> Installing that way is a supported install method, so having this well tested is wicked cool and really important.
<soren> ...but I wanted to test the interactivity as well.
<soren> So, being the virtualisation geek that I am..
<soren> I decided to use the KVM autotest framework to do the ISO testing.
<soren> Now, KVM autotest was designed to test KVM.
<soren> KVM developers use it to install a bunch of different operating systems and test things to make sure they didn't change anything in KVM that broke functionality in one of the guest operating systems.
<soren> What we want to do, though, is somewhat the opposite.
<soren> We assume that KVM works and instead want to test the operating system.
<soren> So, the KVM autotest framework works by runing a virtual machine..
<soren> grabs a screenshot every second..
<soren> ..and when the screenshot looks a particular way (e.g. when a particular dialog comes up),
<soren> it can respond with a series of key presses or mouse events.
<soren> This way, we can emulate a complete, interactive install session.
<soren> Awesome stuff.
<soren> I've started documenting this, but haven't gotten all that far, since I kept changing things faster than I could update the docs :)
<soren> The documentation lives at  https://wiki.ubuntu.com/AutomatedISOTesting
<soren> If you all open that page..
<soren> ..and scroll down to the "step files" section..
<soren> you can see a sample step from a "step file".
<soren> A step file is a description of a test case.
<soren> Now, looking at the sample, you can see a "step 9.45" and a "screendump" line.
<soren> They're pretty much just meta-data for the creator or editor of the step file
<soren> so don't worry about those.
<soren> The important lines are the "barrier_2" and "key" ones.
<soren> The barrier_2 line tells the testing system to wait..
<soren> ..until the rectangle of size 117x34 of the screen, starting at 79x303..
<soren> should have md5sum de7e18c10594ab288855a570dee7f159 within the next 47 seconds.
<soren> If this doesn't happen, the test will fail, and a report will be generated.
<soren> If it does pass, it goes on to the next step: "key ret"
<soren> As you can probably guess, "key ret" sends a keypress to the guest, namely Return.
<soren> The result of those two lines is: Wait for the language prompt right after boot to show up, and once it does, press return to accept the default "English".
<soren> Now, pretty soon, it became obvious that there was going to be a lot of duplication involved here.
<soren> ...all the installs would have to wait for that prompt and respond to it in the same way.
<soren> Even worse: If that prompt were to change, /every/ step file would need to be updated.
<soren> Even worse again: In the beginning there was no concept of "updating" step files. You had to start all over.
<soren> Starting over makes plain old ISO testing feel like a fun time.
<soren> It's not.
<soren> Just so you know.
<soren> I love people for doing it, but it's really not that much fun. :)
<soren> Ok, so to address the mass duplication of steps and stuff, I added a step file generator.
<soren> The step file generator generates a step file (you probably guessed this much) based on the task to be installed and the partitioning scheme to be used.
<soren> This means that I can tell the test frame work: Hey, please test an install of the LAMP task, with LVM partitioning and do it on amd64.
<soren> And it does so.
<soren> See, this is all running in a virtual machines.
<soren> Virtual machines are cool.
<soren> So cool, in fact...
<soren> That you can use them to make installer videos.
<soren> So, to see what happens during a test run, you can attach a recorder thingie and turn the result into an avi.
<soren> Now, like any decent TV chef, I've cheated and done this all in advance.
<soren> Now, unlike most decent TV chef's, what I did in advance failed.
<soren> And even more unlike TV chef's, I'm going to show it to you anyway, because it's useful.
<soren> Without further ado:
<soren> heh..
<soren> wait for it..
<soren> http://people.canonical.com/~soren/lamplvminstall.avi
<soren> There we go.
<soren> wget http://people.canonical.com/~soren/lamplvminstall.avi ; mplayer lamplvminstall.avi
<soren> This test case failed.
<soren> Somewhat surprisingly.
<soren> If you fast forward all the way to the end..
<soren> (watch the rest as well, it's fun to watch the test system typing the username "John W. Doe III" and the password and whatnot)
<soren> ..at the end, you'll see if breaks off before the install actually finishes.
<soren> Like... seconds before it would have finished.
<soren> Honestly, I did not mean for this to happen, but it's a good learning experience :)
<soren> Ok, if we all look at..
 * soren digs through launchpad, bear with me.
<soren> http://bazaar.launchpad.net/~soren/autotest/automated-ubuntu-server-tests/files/head:/client/tests/kvm/generator_data/lucid/
<soren> Those are the input files for the step file generator.
<soren> Yes, they are poorly named, but please appreciate that just days ago, they were all named "foo", "bar", "wibble", "wobble", etc. so this is a massive improvement.
<soren> QUESTION: That method could be used for UI testing in a *lot* of different GUI apps, not just ISO installations. Any plans to  document/release it more generally?
<soren> (from rmunn)
<soren> Yes1
<soren> !
<soren> I meant to get that done for today, but the real world imposed and made a mockery of my plans.
<soren> This can totally be used to do GUI installs as well.
<soren> Looking at http://bazaar.launchpad.net/~soren/autotest/automated-ubuntu-server-tests/files/head:/client/tests/kvm/generator_data/lucid/ again..
<soren> Specifically, 060-finish_install_and_reboot.steps
<soren> http://bazaar.launchpad.net/~soren/autotest/automated-ubuntu-server-tests/annotate/head:/client/tests/kvm/generator_data/lucid/060-finish_install_and_reboot.steps
<soren> This is the step that failed.
<soren> For some reason (that I have yet to figure out, I only spotted this failure an hour ago) this times out.
<soren> It says 579, but perhaps those a special kind of seconds that are not as long as most people's seconds.
<soren> The point is this: I only have to change the timeout in this one place, and all the test cases will be updated.
<soren> < ~rmunn> QUESTION: I see a lot of keystrokes used to select various dialog widgets. Can the KVM testing system simulate mouse clicks and/or mouse
<soren>                    movements (e.g., for testing mouseover stuff) as well?
<soren> cut'n'paste for the lose :(
<soren> Well..
<soren> Yes.
<soren> Sort of :)
<soren> The autotest framework supports it, I've added support for it to the frontend, but kvm has an.. um.. issue :)
<soren> It used to emulate a mouse, so it would move the cursor relative to the current position.
<soren> However, these days, GNOME and such give you...
<soren> mouse acceleration!
<soren> Yay!
<soren> No. Not yay.
<soren> Mouse acceleration is the enemy when you're actually warping the mouse from one place to another, because it thinks you just moved your mouse /really/ fast, and then moves it even further than you wanted it to.
<soren> This took me /forever/ to realise.
<soren> So, I've made it pretend to use a tablet.
<soren> Tablets offer absolute positioning, so this helped a lot.
<soren> However, the command to tell kvm to click on something internally translated into "mouse_event(click_button1, 0, 0, 0)", where 0,0,0 are the coordinates.
<soren> Now, if you're in relative positioning mode (using a regular mouse), this is good.
<soren> You want to click right where you are.
<soren> ..if you're using a tablet, it means you can only click in the top left corner.
<soren> No fun.
<soren> I wrote a patch for that, but I'm not sure it's in upstream KVM yet, but it'll be in Lucid half an hour after I start working on those GUI test cases :)
<soren> So, yes, GUI testing is totally an optoin.
<soren> option, too.
<soren> Another problem I had with this is that it was designed to test a variable kvm against a static set of OS's.
<soren> The OS's should look and act the same regardless of what changed in KVM. That is the whole point of these tests: To make sure they don't change.
<soren> However, we change the OS all the time. That's what we do :)
<soren> ..but since the designers of this test system never meant for it to be used this way, they didn't add an option to edit these step files very conveniently.
<soren> To fix this, I've added an option to the test system to fall back to the stepmaker (the GUI used to create step files) if a test fails.
<soren> This is great if you're running tests on your laptop or a machine you have direct access to rather than a machine running in a dusty corner of a data center.
<soren> It really comes in useful when the screens change (wording changes, extra/fewer dialogs, change of theme (in the GUI)).
<soren> Having to start over is, as I mentioned, no fun at all.
<soren> Please shoot any questions you may have. I haven't really prepared much more than this.
<soren> Still, questions belong in #ubuntu-classroom-chat
<soren> If there are no more questions, I'll sing for the rest of the time slot.
<soren> 21:50:25 < ~Omahn23> soren: QUESTION As an end user/sysadmin, is there anything I can do to help in testing with this new framework?
<soren> Well, seeing as these things run in virtual machines, running them in more places is not going to make much difference, so /running/ the tests is probably not something we need help with
<soren> However!
<soren> The more test cases we can include, the better.
<soren> The more, the merrier.
<soren> I'd love to have more test cases to include in our daily runs of this system.
<soren> 21:52:01 < hggdh> QUESTION: so we can automate pseudo-interactive testing. How to deal with the tests that require meat between the keyboard and the chair?
<soren> Examples?
<soren> 21:50:12 < Ramonster> soren: Any thoughts on testing servers while they actually perform one of the roles you talked about at the start ?
<soren> Ramonster: You mean functional testing of e.g. a LAMP server?
<soren> 21:52:23 < mscahill> QUESTION: you briefly mentioned PPA testing. what packages are included in this testing?
 * soren looks that up.
<soren> 21:53:08 < Ramonster> soren: Yeah
<soren> alright.
<soren> Um, yes, but it's not part of this work I've been doing.
<soren> We're not very strong in that area at all.
<soren> ...and that's a shame.
<soren> PKGS="libvirt postgresql-8.3 postgresql-8.4 mysql-dfsg-5.0 mysql-dfsg-5.1 openldap php5 python2.6 atlas"
<soren> Is the list of packages built daily.
<soren> Well, the security team has a bunch of tests they run whenever they change anything. They often can't rely on anyone else to test anything (since they don't go through -proposed), so they need to be really thorough.
<soren> I'm working on getting those run every day as well. They should provide some amount of functional testing.
<soren> 21:53:12 < yltsrc> QUESTION: is writing test cases required for bugfixing?
<soren> Not per se.
<soren> Most test cases need updating once a bug is fixed, and most things I can think of would be covered by this, so new test cases (for this system, I mean) wouldn't be a requirement for bug fixes.
<soren> 21:54:55 < mscahill> QUESTION: are there plans to allow automated testing for package maintainers with their own PPA?
<soren> Sure, anyone is free to run that script and do their own testing.
<soren> Hm... I may not have published it anywhere.
 * soren fixes that.
<soren> Well, /me makes a note to fix that
<soren> I do have a few ideas for doing functional testing of upgrades of various sort, but most of those ideas are only a few hours old, so they're not even half baked yet :)
<soren> Did I miss any questions?
<soren> 21:59:33 < Ramonster> soren: That's the problem atm everyone is walking around with these half-baked ideas :)
<soren> Whoops, didn't mean to post that here :)
<soren> Thanks for showing up, everyone.
<soren> that's it!
#ubuntu-classroom 2010-01-27
<SpinachHead> anyone in Cali?
<pleia2> SpinachHead: might want to try #ubuntu-california
<SpinachHead> just trying to figure out what 1600 UTC time is here.  I am stuck at work on a win computer and can't use terminal
<nigel_nb> @now
<ubottu> Current time in Etc/UTC: January 27 2010, 01:58:56
<cjohnston> 8?
<cjohnston> i tihkn
<SpinachHead> okay, so the classes haven't started?
<cjohnston> They started Monday..
<cjohnston> Each day for 5 hours
<cjohnston> For the US, todays classes are already over
<SpinachHead> okay... I wanted the Ubuntu One class guess I missed
<maco> that was like 7 hours ago
<nigel_nb> SpinachHead, https://wiki.ubuntu.com/UbuntuDeveloperWeek see logs here
<SpinachHead> thanks
<ardchoille> nigel_nb: Thanks
<nigel_nb> np :)
<ardchoille> Is there a "wish list" or some other way to request a certain type of class?
<cjohnston> ardchoille: what are you looking for?
<ardchoille> For instance, I'd like to learn how to write apps in python-gtk and use glade to design the ui and have the glade file usable in the app. I've tried online tutorials but can never understand them
<ardchoille> It's be nice to have a class that starts with "this is a glade file and this is how you call the file componenets in a pygtk app: or something similar
<ardchoille> Just anidea for a class
<cjohnston> ardchoille: have you checked out the past classes to see if anything similar has been taught?
<cjohnston> that would help in finding someone who could teach it
<ardchoille> I don't recall anything like that but I should check
<ardchoille> Is there a list of past classes?
<cjohnston> in the topic there is a link to the Classroom page...
<cjohnston> from the classroom page there is an archive area
<nigel_nb> ardchoille, you can check MOTU school first https://wiki.ubuntu.com/MOTU/School and previous dev week session https://wiki.ubuntu.com/UbuntuDeveloperWeek/Previous
<ardchoille> The problem is that all of the "getting started with ubuntu development" classes I find always deal with packaging an app and that's it. I never see a "how to write an app in pygtk" type of thing. While packaging is a great skill to have, it's also good to know how to write an app
<maco> but thats not what ubuntu development is...
<maco> that'd be upstream development
<ardchoille> Ah, ok, I misunderstood the meaning of ubuntu development"
<maco> many ubuntu developers dont know how to program beyond maybe a simple bash script to run at the end of package installation
<ardchoille> I did not know that
<maco> you might be more interested in ... i think its called gnomelove
<maco> i think thats the name of their wannabe-gnome-dev mentoring stuff
<maco> kde has "junior jobs" which are simple bugs for newcomers, but i dont know of any mentoring for "hi i want to learn qt"
<maco> and then there's kernelnewbies for people who want to learn to hack the kernel
<ardchoille> maco: Thank you for the information
<maco> np
<ardchoille> I always thought the packagers were programming guru's too
<maco> i know one guy who does no programming and another that knew cobol 25 years ago but didnt learn a modern language til after becoming an ubuntu dev
<ardchoille> maco: Thank you!
<ardchoille> maco: http://live.gnome.org/GnomeLove is an excellent starting point for what I want to do :)
<maco> great!
<ardchoille> Hmm.. I wonder if I get good at this, I might be able to teach a class in here at some point in the future
<cjohnston> ardchoille: sounds good to me
<maco> i need to learn where kde keeps equivalent docs. been a kde user for a year, and i still only know how to do gnome programming
<linuxman> someone speek portuguese?
<cjohnston> hggdh: i think if hes around
<hggdh> I am here
<cjohnston> do you speak portuguese?
<hggdh> cjohnston: yes, I do
<hggdh> linuxman: why you need Portuguese?
<linuxman> yes  speek
<linuxman> vc so falam ingles
<hggdh> linuxman: PVT
<hggdh> linuxman: a liÅua oficial por cÃ¡ Ã© o ÉªÅles
<cyborg_7> no hacking i are noobs
<cyborg_7> -.-
<cyborg_7> :(
<luzbelito92> hi?
<bittin> http://fc08.deviantart.net/fs71/f/2010/027/7/1/eeedebian_wmii_by_bittin.png me likes <3
<dholbach> WELCOME EVERYBODY TO ANOTHER FINE DAY OF UBUNTU DEVELOPER WEEK!
<dholbach> If you are a bit confused, have a look at - it will explain, why you are here: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dholbach> On an organisational note: if you have questions, please ask in #ubuntu-classroom-chat and prefix them with QUESTION: so they stand out.
<dholbach> Also, if you have questions but are afraid to ask in English head to one of the channels mentioned at the bottom of https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dholbach> First up is the fantastic John Arbash Meinel - he'll talk about "Writing good test-cases"!
<dholbach> jam: the floor is yours!
<jam> greetings all!
<jam> I'm happy to see so many names on the channel.... hopefully you all aren't just lurking
<jam> waiting for the next speaker :)
<jam> I'm going to be pretty loose with the discussion
<jam> so feel free to ask questions
<jam> cjohnston has graciously offered to help me keep track
<cjohnston> o/
<jam> So what is a 'good' test case
<jam> L
<jam> ?
<jam> Generally speaking, a test case is meant to verify that something is happening correctly.
<jam> Or looking at it differently, when something *isn't* happening correctly, the test case should fail.
<jam> However, there are still a lot of subtle aspects.
<jam> I would say that the desirable features of a test case break down into
<jam> 1) Sensitivity (the likelyhood that the test case will break when something goes wrong)
<jam> 2) Specificity (the likelyhood that the test case will break and what you are testing has not gone wrong)
<jam> 3) Performance
<jam> It is easy to focus on say 1, but to have a *good* test, all 3 are important
<jam> It is great to have a huge test suite that covers every possible aspect of your code, and all permutations
<jam> but if it takes 3 weeks to run, it is often not very useful for development
<jam> Likewise, a test with low specificity will be breaking all the time
<jam> and won't really help you isolate the problem
<jam> You can argue that 4) coverage is a property, but I would argue that it is a desirable property of the whole test suite, and not a great property of a single test
<jam> Personally, I think there are a range of 'good' tests, generally dependent on what aspect you are focusing on
<jam> I personally think that having lots of focused tests is better than having a single 'test' that is testing lots of aspects
<jam> but integration tests are still useful an needed
<jam> and
<jam> So how about we put together an example
<jam> I'll use python, since that is my preferred language
<jam> and it has a decent unittest suite
<cjohnston> QUESTION: Even after weeks of testing by most experience testers, very robust apps breakdown all of a sudden, what might be the reasons behind it?
<jam> ANSWER: I think that complexity is generally a major factor causing 'bugs' in software.
<jam> It is often considered inherent in any sufficiently developed program.
<cjohnston> < Omar871> QUESTION: according to what I learned in college, a 'good' test is that one that makes that system break/crash, to show where the problem is, how true could that be?
<jam> Generally, this means there will be some sort of permutation of objects which has not been tested
<jam> directly
<jam> A goal of development is to manage complexity (generally by defining apis, separation of concerns, etc)
<jam> good software can then have good tests that test a subset, without *having* to manage the permutation problem
<jam> (but generally, abstractions can 'leak', and ... boom)
<jam> ANSWER <omar>: I think I understand you to mean the "inverse"
<jam> which is that a good test is one that provokes a problem in the system
<jam> I think that for a regression style test, it is certainly important that the test would trigger the bug that you are trying to fix
<jam> However, once a bug is fixed, you would certainly expect it to not provoke the problem anymore
<jam> So it is certainly important that a test exposes a weakness
<jam> I guess put another way...
<jam> If I had a bug, and wrote a test case, and it *didn't* trigger the bug, that test doesn't have a lot of worth (for fixing that bug)
<jam> (Which often accidentally happens if you fix the bug before writing the test)
<jam> n3rd: We were just discussing in our group about "coding creates bugs... are we reducing the number of bugs faster than we are creating them?"
<jam> n3rd also brings up a decent point
<jam> users often find bugs that developers don't think of
<jam> often because they use software in ways that weren't anticipated
<jam> often this goes back to the permutation issue
<jam> it isn't possible to test every possible permutation
<jam> (well, rarely possible)
<cjohnston> < n3rd> jam, so the users are passive tester?
<jam> A file with just 20 bytes has 8^20 = ~10^48 permutations
<jam> Well, I would say that users are often pretty *active* testers
<jam> however, they don't make good automated test suites
<jam> I suppose that would be my:
<jam> 4) Reproducible
<jam> (the chance that running the same thing now will give you the same thing it gave you before)
<jam> It is somewhat related to specificity
<jam> As an unreproducible test has low specificity
<jam> (it breaks for reasons that you aren't trying to test)
<jam> I guess I should also mention... if a user used every intermediate version of my program, they'd run into a lot more bugs
<jam> As a developer I fix a huge amount of things before it gets released
<jam> it is just that often the set of *remaining* bugs
<jam> are ones that I had not anticipated very well
<jam> Anyway, I think it is useful to remember what the strengths of a given style of testing are.
<jam> You can have automated tests (unit and integration tests), manual (interactive) testing, foisting off the software on your users
<jam> etc
<jam> I do think that testing at each level is useful
<jam> and trying to test things at a the wrong level introduces more pain than benefit
<jam> Having an absolutely bulletproof piece of software that doesn't do what your users want isn't particularly beneficial
<jam> So having user testing in your feedback loop is certainly a good thing
<jam> However, giving them a buggy PoS is also not going to make them very happy
<jam> I'm certainly a fan of multi-tier testing, including automated testing
<jam> having a small fast test suite that is likely to expose bugs is nice on 'must pass before making it to trunk'
<jam> having a slower but more thorough "must pass before releasing to users"
<jam> and for some systems adding a "must be tested by a human interaction" can be inserted in there as well
<jam> If the first one takes much more than 5 minutes, it often causes grief when trying to get development done
<jam> but the second can take a day, and still not slow down your release cycle
<cjohnston> < Omar871> QUESTION: Could the efficiency and effectivenes of the testing process depend on the licensing type of the software we are making?
<jam> ANSWER: I don't think it would change dramatically
<jam> If the license is open, it does allow users to do introspective testing which would just not be possible otherwise
<jam> however, few users can really develop your software anyway, so it certainly shouldn't be relied upon as a source of improving correctness
<jam> even if your users are very intelligent they almost always
<jam> 1) don't know your code
<jam> 2) don't have time to be doing your work for you :)
<jam> I think Linus gets a bit of a boost, because there are lots of developers on the project, not just users
<jam> Certainly a "lot of eyeballs" requires eyeballs that can see the code
<jam> and with enough, you can have a person to specialize for any given subset, which also helps in defect localization (hence 'shallow')
<cjohnston>  < hggdh> QUESTION: are there any considerations for *usability* testing (this is one thing that users would certainly be able to perform)?
<jam> ANSWER: I think that usability testing is certainly important
<jam> (10:35:23 AM) jam: Having an absolutely bulletproof piece of software that doesn't do what your users want isn't particularly beneficial
<jam> There is an argument whether this specifically falls under the standard category of 'testing'
<jam> (market research is certainly important to developing software, but it isn't "testing" :)
<cjohnston> < strycore89> QUESTION : how is testing of graphical applications done ? (For example PyGTK apps)
<jam> IME, you can test PyGTK (and PyQt) without actually showing dialogs
<jam> both of them support updating widgets by programattically setting values
<jam> and then triggering events
<jam> In that case, they can be tested in the same fashion as any other unit testing
<jam> however, it doesn't test the visual representation
<jam> which is a valid level to test
<jam> There are also gui testing suites that can be used
<jam> I forget the exact name of one (suikili?)
<jam> Which uses screenshots
<jam> and some work for marking the regions you care about
<jam> http://groups.csail.mit.edu/uid/sikuli/
<dholbach> alrightie!
<dholbach> thanks jam for giving this great talk!
 * dholbach hugs jam
<dholbach> next up are henninge and adiroiban, the dynamic duo that'll explain "Launchpad Translations under the hood" to you!
<henninge> Hi everybody, thanks for coming!
<henninge> Today we want to help you understand the inner workings of the Launchpad Translations application (Rosetta) and take you for a walk through the source code. We hope that this will enable you to scratch your own itches you have about Rosetta and to contribute to its source.
<henninge> So the intendend audience is
<henninge>     * Developers wanting to contribute to Launchpad Translations but are not yet familiar with the internal structure of the application.
<henninge>     * Interested maintainers of translations in Launchpad and translators that want to have a better understanding of how and why Launchpad Translations does what it does.
<henninge> We hope that by the end of the session you have a good overview of
<henninge> # how translation data is stored in LP translation (db schema)
<henninge> # how the source code is organized
<henninge> # what to expect when diving into the source code
<henninge> # where to start when trying to hack on Launchpad Translations.
<henninge> It is not the goal of this session to introduce you to Launchpad development in general. That will be covered in a different session by Karl Fogel.
<henninge> We encourage you to visit that on Friday.
<henninge> Thursday, sorry
<henninge> Anyway, we are happy to take questions. We will keep the session open towards the end to see what questions come up and what your interests are.
<henninge> We will be taking questions in intervalls, so cjohnston will nicely hold them until we ask for them. Thanks.
<henninge> Go, adiroiban ;-)
<adiroiban> Hi
<adiroiban> I will continue with Gettext Basics
<adiroiban> You need to understand how gettext is used to internationalize computer software. You should be familiar gettext documenation but we will give you a short run-through of those parts that are important for Rosetta.
<adiroiban> = PO files =
<adiroiban> Gettext stores translations in so-called portable object files, abreviated as PO files. They contain data sets of msgid and msgstr, the former containing the English original string, the later containing the translations of that string. They may be prepended by special comments that convey information about the string that is being translated, like in which source file it was found. Here is an example:
<adiroiban> #: src/coding.c:123
<adiroiban> msgid "Thank you"
<adiroiban> msgstr "Merci"
<adiroiban> Gettext states that msgid could be anything to indentify the string in the source code and not necessarily the English original string. Using the full English original string as the msgid, though, has proven to be the most convenient way to work on translations and is _the only form_ that is fully supported by Rosetta.
<adiroiban> The first msgid in a PO file is empty and its msgstr contains meta information about the file. The minimum information here is the MIME Content-type of the file but usually a lot of other information is included, too.
<adiroiban> Here it is
<adiroiban> mmsgid ""
<adiroiban> msgstr ""
<adiroiban> "Project-Id-Version: PACKAGE VERSION\n"
<adiroiban> "Report-Msgid-Bugs-To: \n"
<adiroiban> "POT-Creation-Date: 2009-01-26 12:28+0000\n"
<adiroiban> "PO-Revision-Date: 2009-01-26 12:28+0000\n"
<adiroiban> "Last-Translator: Foo Bar <foo.bar@canonical.com>\n"
<adiroiban> "Language-Team: French <fr@li.org>\n"
<adiroiban> "MIME-Version: 1.0\n"
<adiroiban> "Content-Type: text/plain; charset=UTF-8\n"
<adiroiban> "Content-Transfer-Encoding: 8bit\n"
<adiroiban> The standard naming convention for PO files is to use the language code, so in this case fr.po.
<adiroiban> = Translation templates =
<henninge> Questions so far?
<cjohnston> henninge / adiroiban you aren't using slides are you?
<adiroiban> no
<cjohnston> < Navaneeth> QUESTION: Is gettext portable to other OS?
<adiroiban> no slides
<adiroiban> sorry
<adiroiban> the content is on the wiki
<henninge> Navaneeth: The PO format is machine independent.
<adiroiban> Gettext is available on many operating systems
<adiroiban> I don't think you need to worry for gettext portability
<adiroiban> I will continue with PO Templates
<adiroiban> When translatable strings are extracted from source code using xgettext or intltool, they are put into a file which is commonly referred to as the translation template. Its format is identical to that of a PO file but all the msgstr lines do not contain any translations. These files are intended to be used for creating new PO files, so they also contain the header information but with most fields left with empty or generic values.
<adiroiban> Since a PO template is not really a separate file format it does not find much mention in the gettext documentation. Also, because its content can be generated from source any time (like during a build), most projects don't include it in their repository. Only PO files contain valuable information for a project, the translations themselves, and are therefore included in the source code repository.
<adiroiban> The standard naming convention for PO templates is to use the translation domain with the extension .pot, for example myproject.pot.
<adiroiban> How translations are done in the simple gettext context:
<adiroiban> 1) To start a translation into a new language for a project, the following steps are necessary:
<adiroiban> * Either the project maintainer or the translator creates a template from source code.
<adiroiban> * The translator fills out the template with the translations for each msgid.
<adiroiban> * The translator saves the file in the source tree as languagecode.po (lsee above), ususally in a directory called po.
<adiroiban> * The translator or somebody with commit rights commits the file to the repository.
<adiroiban> * Whenever the package is built, the translations are processed so that they are available at run-time (out of scope here).
<adiroiban> 2) To change translations, the steps are simpler:
<adiroiban> Sorry. Launchpad Workflow :)
<adiroiban> When using Launchpad to translate a project, the steps are slightly different because the PO files are kept in Launchpad for the translators to work with. From Launchpad they are mirrored into the source tree to be used at build time.
<adiroiban> * The project maintainer uploads the PO template file to Launchpad.
<adiroiban> * Translators go to Launchpad to translate the English strings that now appear in the web interface.
<adiroiban> * The project maintainer downloads all PO files whenever they want to, usually to prepare a release of the software.
<adiroiban> * Nowadays the upload and download should happen automatically from and to Bazaar branches in Launchpad so that the maintainer always has a mirror of the latest translations in the branch, while changes to the PO template are automatically propagated to Launchpad. The next step will be automatic generation of PO templates from the source code in a Bazaar branch.
<henninge> Questions?
<henninge> cjohnston: Questions? ;)
<cjohnston> I don't see any
<henninge> cool
<cjohnston> one just came
<cjohnston>  < Navaneeth> QUESTION: PO files need to deployed along with the application?
<henninge> cjohnston: actually, they are converted to a binary format first "MO".
<adiroiban> You will deploy the MO files (machine object)
<henninge> Navaneeth: ^
<henninge> ;)
<henninge> Next, we'll go into how this structure is mapped into the Launchpad database.
<henninge> jtv drew up this amazing diagram:
<henninge> https://wiki.ubuntu.com/UbuntuDeveloperWeek/Sessions/LaunchpadTranslationsUnderTheHood?action=AttachFile&do=get&target=TranslationsSchema.png
<cjohnston> < Omar871> QUESTION: What's a PO file?
<henninge> Omar871: the actual translations are stored in PO files. It contains English strings and their translation.
<henninge> s
<henninge> That's what translators work with when translating.
<henninge> Back to database schema.
<henninge> You can see the main tables used for Launchpad Translations in the digram. PO templates are mapped into the database using four tables.
<henninge> POMsgID is a look-up table for all the English strings that are being translated.
<henninge> So it gives each string a numeric ID.
<henninge> POTMsgSet holds all the data related to an original English string as found in a PO template, one database entry per msgid entry in the file. It refers to the actual English strings only by their IDs in POMsgID. This represent one paragraph/entry from a PO template (msgid, msgid_plural, context, comments).
<henninge> POTemplate holds the meta data related to a PO template as it has been imported, most notably the original path name, the translation domain, the original header and a flag if this template is active or not.
<henninge> TranslationTemplateItem is a linking table because of the n:m realtionship between POTMsgSet and POTemplate which message sharing introduces. Not only does a PO template file contain multiple msgid entries, the same msgid may also appear in multiple PO template files, if the same template is used accross different series of a a project.
<henninge> Questions?
<henninge> cjohnston: ^
<cjohnston> < n3rd> QUESTION: Can we not give auto suggestions/transitions like Rosy with the DB and PO ?
<henninge> n3rd: I don't know Rosy but we do have "external suggestions" in Rosetta.
<henninge> That is one of the key features of it, actually.
<henninge> If a string has already been translated in a different package or project, it's will be suggested to the translator.
<henninge> next question
<cjohnston>  < bullgard45> QUESTION: How do you take care of that the same English phrase needs to be translated differently depending on the program at hand?
<adiroiban> Just add a new translation
<henninge> bullgard45: that's why they are just presented as "suggestions". It still takes a reviewer to acutally accept it as a translation to use.
<adiroiban> bullgard45: a program will use a certain PO file
<adiroiban> and you can have the same string in 2 PO files
<adiroiban> and for each PO file to have different translations
<henninge> in database terms:
<henninge> You can have multiple TranslationMessage entry related to one POTMsgSet entry. I will come to that in a minute.
<henninge> next question?
<cjohnston> < n3rd> QUESTION:Would it not result in overhead when there are many revisions for the same sentence, and finally refined to perfect translation?
<henninge> n3rd: it does ;-)
<henninge> n3rd: we have a lot of entries in the POTranslation table.
<henninge> but since we consider all those refining steps as contributions we keep them for reference's sake.
<henninge> next questions?
<cjohnston> < n3rd> QUESTION : So the alternative is ?
<henninge> n3rd: none I am aware of atm...
<henninge> We have been cleaning out translations of discontinued Ubuntu series.
<henninge> Also, for most cases there are not that many iterations, especially if the translations are imported from upstream.
<henninge> more questions?
<cjohnston> < Emilien> Question: in a project that is oenly translated, if I modify an already translated string, does it overwrite the old translation, or is it stored as a new entry?
<henninge> Emilien: new entry.
<henninge> A new TranslationMessage and POTranslation entry is created.
<henninge> Let me add my explanations for the remaining four tables that all deal with this:
<henninge> POTranslation is a simple look-up table and holds the actual translated strings
<henninge> TranslationMessage holds all the information about a translation to a specific language, like when it was done and by whom, if it was translated in Launchpad or imported from elsewhere, if it is currently used or just a suggestion, etc. For each POTMsgSet there may be multiple entries in this table, even for the same language, because any translation ever made is stored in the database, even if only the latest is actually used.
<henninge> The actual translation strings are referred to by their id in POTranslation.
<henninge> Language is the set of all languages known in Launchpad. This table is not specific to Launchpad Translations as it is used in other parts of Launchpad, too.
<henninge> POFile represents the set of translations into a certain language for a POTemplate. If it was created by importing a PO file, it also holds some information about that file. It is not linked directly to any translation but this relationship can be derived through the Language table.
<henninge> Questions?
<cjohnston> < bullgard45> QUESTION: I have seen a lot of po files in the WWW. How are they related to Launchpad?
<henninge> bullgard45: Can you be more specific about WWW, please?
<henninge> as in: I did not understand the question ...
<henninge> another question ?
<cjohnston> That's it for nwo
<cjohnston> now
<henninge> adiroiban, take us into the code, please.
<adiroiban> http://bazaar.launchpad.net/~launchpad-pqm/launchpad/db-devel/files/head:/lib/lp/translations/
<adiroiban> OK. we should see the Launchpad Translation folder structure
<adiroiban> I will not describe them in alphabetic order
<adiroiban> == Model ==
<adiroiban> * _interfaces_ contains the Zope interface definitions and schema for the objects used by the application. You will find interfaces for each of the database tables described earlier. For example, potemplate.py contains IPOTemplate.
<adiroiban> * _doc_ contains function tests for code from model. Written as doctests.
<adiroiban> * _model_ contains objects mapping to relational database using storm.
<adiroiban> * _tests_ contains unit tests for code from model.
<adiroiban> Next we have the folder containing the view layer
<adiroiban> == View ==
<adiroiban> * _browser_ contains classes dealing with presentation logic and user interaction.
<adiroiban> * _browser/tests_ contains unit tests for code from browser.
<adiroiban> * _emailtemplates_ contains templates for various emails issued by Rosetta.
<adiroiban> * _help_ contains documentation and help pages integrated with Rosetta.
<adiroiban> * _stories_ constains functional tests for code from browser. Written as doctests.
<adiroiban> * _templates_ contains Zope Page Templates use by the objects from browser.
<adiroiban> * _windmill_ contains tests for javascript code using Windmill Python API.
<adiroiban> * _lib/canonical/launchpad/javascript/translations/_ contains YUI 3 javascript code.
<adiroiban> and finaly some utilities
<adiroiban> == Utilities ==
<adiroiban> * _scripts_ contains various helping scripts used in cronjobs or doing other utility and integration jobs.
<adiroiban> * _scripts/tests_ contains tests for code from scripts.
<adiroiban> * _utilities_ contains utility classes used in model and browser code, mostly data conversion related.
<adiroiban> Hope you have noticed that almoust all code has the coresponding tests
<henninge> Questions?
<cjohnston> 12:43 < bullgard45> hennige: I have seen many .po files having English text of GNOME programs and their German translations. I could make good use of some of them. I do not have a particular URL at hand  just now but I can provide one in a moment.
<cjohnston> 12:43 < bullgard45> hennige: I have seen many .po files having English text of GNOME programs and their German translations. I could make good use of some of them. I do not have a particular URL at hand  just now but I can provide one in a moment.
<henninge> cjohnston: you can find those files officially on the Damned LIes website of gnome.
<henninge> http://l10n.gnome.org/
<henninge> http://l10n.gnome.org/teams/de
<henninge> They are all imported into Launchpad to be included in the Ubuntu language packs.
<henninge> We only edit them in Launchpad Translations if we need to differ from standard Gnome.
<henninge> More questions?
<cjohnston> < Emilien> QUESTION: (but maybe keep it for later, as it's not relevant right now): When there is only one series, and one translation template, why couldn't we get the template page as the default
<cjohnston>                  translations page. Example: with project BaShare, you have 3 translation pages: root https://translations.launchpad.net/bashare , series
<cjohnston>                  https://translations.launchpad.net/bashare/trunk/+translations and template https://translations.launchpad.n
<cjohnston> < Emilien> et/bashare/trunk/+pots/bashare . The last page is IMHO the most useful, as it contains links to untranslated, need review or changed strings. This could be the default page when there is
<cjohnston>                  only one series and one template... What is your opinion about that (and sorry for long question)
<henninge> Emilien: that sounds like a good idea as long as it is clear to viewer what is going on.
<henninge> Emilien: You can describe that in a bug, discuss it with us and even go about and fix it ... ;-)
<henninge> More questions?
<cjohnston> < bullgard45> QUESTION: hennige: An example for a po file that I just have found in the WWW, is http://www.mail-archive.com/xfce4-commits@xfce.org/msg08020.html
<henninge> That is actually a diff of PO file ... ;)
<henninge> This should be imported into Launchpad if they'd want to use it for translations. https://edge.launchpad.net/xfce
<henninge> But AFAIR they decided against using Launchpad for translations.
<henninge> Another question?
<cjohnston>  < Emilien> Question: I like how all the parts have their own tests. Are they automatically executed in some way?
<henninge> Ah, the great Launchpad test suite, Emilien!
<henninge> Run "make check" to run the whole test suite. Takes a few hours.
<henninge> Each branch that is submitted to the LP tree needs to have had this run.
<henninge> Then we have the buildbot that continously runs the test suite on the trunk with every new commit.
<henninge> One more question?
<cjohnston> < bullgard45> QUESTION: I understood that you considered the translations provided by Launchpad as proposals or a help for a human translator. This somewhat contradicts the attitude of a German
<cjohnston>                     translator team to admit or restrict would-be human helpers. (But I cannot provide the document that proves such a censorship.) I do understand that a high standard of qualtiy
<cjohnston>                     translations must be maintained.
<henninge> bullgard45: I think what you are referring to is this:
<henninge> Anybody can submit suggestions in Launchpad but only those on the translation team are reviewers and can actually accept them to be used.
<henninge> This requeires some deal of organization to keep the translations consistent.
<henninge> But actually, bullgard45, I don't see a question in there ... ;-)
<henninge> But, we have run out of time.
<cjohnston> Thanks henninge and adiroiban !
<henninge> Thank you all for coming. Come and talk to us on #launchpad any time. Thanks.
<cjohnston> Next up is smoser
<adiroiban> Thanks!
<smoser> Hello all
<smoser> Ok, lets get started.
<smoser> This is my first time doing one of these, so I ask for forgiveness in advance
<smoser> I'm Scott Moser (https://launchpad.net/~smoser).
<smoser> For the past few months I've been working on maintaining and improving Ubuntu's presense on Amazon's Cloud Offering, known as "EC2"
<smoser> In this session, I hope to explain :
<smoser>  * A little bit about what EC2 is (at least from my point of view)
<smoser>  * What you need to do to use it
<smoser>  * What you can do with it
<smoser>  * Some warnings about issues you might find
<smoser>  * Some miscellaneous things I'd like to mention
<smoser> and then, have some time for questions
<smoser>  * Questions
<smoser> first off, I guess I'd like to kind of see a show of hands on who is interested in this session
<smoser> if you are, simply a 'o/' or 'i am' ....
<smoser> well, seeing none , we'll just go on
<smoser> If you have questions along the way, please feel free to interrupt.  If it becomes too much, then we might have cjohnston help moderate.
<cjohnston> There's quite a efw
<cjohnston> quite a few
<smoser> == A little bit about what EC2 is (at least from my point of view) ==
<smoser> """Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides resizable compute capacity in the cloud. It is designed to make web-scale computing easier for developers."""
<smoser> What that means to me is:
<smoser> * Virtual Servers, as many "clean instances" as you want, provisioned on your command
<smoser> * ability to access permenant professional grade storage from inside the virtual servers (EBS or S3)
<smoser> * access to fast network resources (much better than my cable modem)
<smoser> You can use the above, and do whatever you want, then throw it away.
<smoser> You get charged by the unit (hour/transfer/disk-size) for the resources as you are using them.
<smoser> Depending on what your interest is, it may be tempting to simply calculate the charges for a month of m1.small (0.085 * 24 * 30 = $61.20), compare that to a virtual private server at http://www.linode.com and stop looking.
<smoser> However, EC2 and "Cloud" is something quite different.  The biggest difference being the ability to start up and tear down instances in very little time.
<smoser> Any questions so far?
<cjohnston> < acicula> Question: define little, do they have spinning instances running or something?
<smoser> acicula, 'little' is defined in terms of seconds , i'd say on average less than 100
<smoser> i dont have hard numbers, and those vary based on time of day and load of ec2, and also (I think) popularity of the instance being requested
<smoser> (the more popular an instance, the faster you get a copy)
<smoser> moving on
<smoser> === What you need to do to use it ===
<smoser> Assuming you weren't completely turned off from my explanation above lets move on to how you can use this.
<smoser> I'm really only going to cover command line usage via the ec2-api-tools, but there are several other ways to manage ec2
<smoser> First thing you need is a credit card, and an AWS account with EC2 access.
<smoser> The EC2Starters Guide (https://help.ubuntu.com/community/EC2StartersGuide) has a good description on how to get signed up.  Make sure to generate, and download your X509 certificate, and key and keep them safe.
<smoser> Next, you'll need the ec2 api tools. The latest version is available in Lucid and backports are available for karmic and hardy at https://launchpad.net/~ubuntu-on-ec2/+archive/ec2-tools . Install those tools by enabling multiverse and then:
<smoser> $ apt-get install ec2-api-tools ec2-ami-tools
<smoser> (note, for just "using" the cloud, the api-tools are probably enough. if you get interested in creating content for it, you will need to get the ec2-ami-tools)
<smoser> Commands I show will assume that you have EC2_PRIVATE_KEY and EC2_CERT in your environment.
<smoser> the EC2StartersGuide mentions how to set that up also
<smoser> Access to instances "in the cloud" is via network only, and the primary method being ssh (at least here)
<smoser> In order to access instances via ssh, you need to create a keypair.
<smoser> This is a normal ssh private/public key, but amazon makes public portion available to the instance when you run it.
<smoser> Create that keypair with:
<smoser> $ ec2-add-keypair ec2-keypair.us-east-1 > ec2-keypair.us-east-1.pem
<smoser> $ SSH_KEY=$PWD/ec2-keypair.us-east-1.pem
<smoser> At this point, you're ready to go.  You can launch a new instance of the latest release of karmic on i386 with:
<smoser> $ ec2-run-instances --instance-type m1.small --key ec2-keypair.us-east-1 ami-1515f67c
<cjohnston> < bullgard45> QUESTION: What is an AWS account?
<smoser> bullgard45, sorry, AWS Account is Amazon Web Services (http://aws.amazon.com/)
<smoser> expanding on m1.small
<cjohnston> < kamalmostafa> QUESTION: Please expound on "m1.small".
<smoser> the above command says "give me a machine of type m1.small" and make the keypair that i just created able to access it.
<smoser> m1.small is described at http://aws.amazon.com/ec2/instance-types/
<smoser> and pricing information available at http://aws.amazon.com/ec2/#pricing
<smoser> m1.small is the cheapest, and is i386 virtual hardware
<smoser> You will see output similar to the example at https://wiki.ubuntu.com/UbuntuDeveloperWeek/Sessions/GettingStartedWithEC2 .
<smoser> The magic 'ami-xxxxxx' number above is the image-id. You can see a list of available images via:
<smoser> $ ec2-describe-images --all > images.list
<smoser> I redirected output to a file because the list is quite long.  Another interface for looking at available machine images is http://thecloudmarket.com/
<smoser> Official Ubuntu images are named such that you can easily identify them.  For more information on that see: https://wiki.ubuntu.com/UEC/Images/NamingConvention
<smoser> You'll note that after creation, you got an 'instance id' for the new instance (i-xxxxxx)
<smoser> and that it was in 'pending' state.
<smoser> At some point, your instance will move from 'pending' state to 'running' and will have a hostname associated with it.
<smoser> you can watch the state with
<smoser> $ ec2-describe-instances
<smoser> Once you see 'running' and a hostname, then you can ssh to the instance
<smoser> $ ssh -i ${SSH_KEY} ubuntu@ec2-174-129-61-44.compute-1.amazonaws.com
<smoser> Ubuntu images accept only the 'ubuntu' user out of the box
<smoser> and that user has passwordless sudo configured.
<smoser> Hoorah! now you've got root access to your very own machine in the cloud, and it cost you $0.085 USD
<smoser> now, you can shut that instance down with 'shutdown' or
<smoser> $ ec2-terminate-instances i-xxxxxx
<smoser> we'll pause for questions on the above
<smoser> (i realize theres a lot for "getting started")
<smoser> ok. going on then.
<smoser> === What you can do with it ===
<smoser> So, now that you've created this new machine and have access to it, what can you do?
<smoser>  * Test : We make night nightly builds of the development release, and semi-nightly builds of previous releases available.
<smoser> This makes it extremely easy to verify a change in a development release without any risk to your system
<smoser>  * develop
<smoser> If you don't have access to hardware supporting kvm, or just don't want to bother with keeping multiple images around of old releases or development, you can easily start up an instance, and start developing on it.
<smoser> When you're done, you just throw it away.  A new one is only seconds away.
<smoser> As an ubuntu developer, those two items above are the most interesting to me.  My laptop is not normally in a situation where it has a clean environment available for test or build.
<smoser>  * Make your own images / devpay
<smoser> You can make your own images and register them, and then boot your personal image.
<smoser> You can "Make Money!" using DevPay (http://aws.amazon.com/devpay/).  If you add value to an image, enough that people will pay to use it, its easy to charge them for using their image.
<smoser> I've not experimented at all with devpay, but it is a really easy way that you can make software appliances available to others and get paid!
<smoser> I'll pause again for questions...
<smoser> === Some warnings about issues you might find ===
<smoser> The thing that most sticks out as different from other environments is that the root filesystem is *gone* once you shut a system down.
<smoser> Amazon makes basically no promises for data stored on the "ephemeral storage" of an instance.
<smoser> hardware failure that causes an instance to die would cause data there to be lost
<smoser> If you want to keep data that you create on an instance, you have a few options:
<smoser>  * Use S3 storage (from amazon)
<smoser>  * Use EBS (and connect an ebs volume to your instance with ec2-attach-volume)
<smoser>  * Use a (new) EBS Root instance.
<smoser> In this new type of instance, your / is on a EBS volume, and you can stop your instance, and access that volume from another instance.
<smoser> EBS Root Instances make the EC2 cloud much more similar to a "pay as you go Virtual Private Server"
<smoser> We are planning on creating EBS volume IDs for Lucid, and Eric Hammond has made EBS boot AMIs available for Karmic and Hardy (http://alestic.com/2010/01/public-ebs-boot-amis-for-ubuntu-on-amazon-ec2)
<smoser> The "best practice" for using ec2 instances is to make all setup of your environment automated
<smoser> so that you can start up new instances on failure or demand.
<smoser> pause again. questions ?
<smoser> === Some Miscellaneous Things I'd like to mention ===
<smoser>  * User Data
<smoser> Booting an exact copy of an instance over and over again is hardly any fun, and arguably not much use
<smoser> In almost all cases, you will want to make some modifications to the instance immediately after boot.
<smoser> You can do this by waiting util the machine is running, and ssh'ing in and running a set of commands.
<smoser> But that may be less than idea.
<smoser> This is where "User Data" comes in.  User data is provided to the instance via the '--user-data' or '--user-data-file' arguments to ec2-run-instances.
<smoser> When the instance boots, it reads the user-data an can change its behavior based on that content.
<smoser> When an ubuntu instance starts, if user-data begins with '#!' then it will be executed like an rc.local script.
<smoser> This means that you can put together a shell script to turn the "base AMI" into your personal development box and pass that script as user-data to the instance on startup.  Then, when you ssh in, it will be all set up.
<smoser> This is obviously quite useful for all sorts of purposes
<smoser> We're adding features to how user-data is handled for lucid (https://wiki.ubuntu.com/ServerLucidCloudBoothooks and https://wiki.ubuntu.com/ServerLucidCloudConfig for more information).
<smoser> The big new feature will be the ability to configure the image on first boot via "config"  syntax rather than a shell script.
<smoser>  * Spot Instances
<smoser> If you're like me, you're cheap.  Spot instances allow you to run an instance in basically the same way as "normal instances" but at a reduced price.
<smoser> The catch is that if there is high demand, your instance may be terminated.
<smoser> I've began using spot instances for most of my tests.
<smoser> When you make a request for a "spot instance" you state the maximum you will pay for that instance.  The rate you are charged varies based on demand for those resources.
<smoser> if the rate goes above your maximum, your instance is terminated.
<smoser>  * Desktop In the Cloud
<smoser> In the lucid cycle, the Desktop team wanted to take advantage of the easily created test/reproduce/verify environment
<smoser> so we started creating "desktop in the cloud" builds.
<smoser> Those are created daily and registered to ec2
<smoser> http://uec-images.ubuntu.com/desktop/lucid/ for relevant AMIs.
<smoser> These images have a full gnome desktop installed and can be accessed via an NX client.  If you've never used NX before, it is surprising how well it performs.  Literally, you may forget that you are using a remote desktop.
<smoser> http://www.stgraber.org/2009/12/12/ubuntu-desktop-cloud-now-working-lucid has information on how to use these.
<smoser> QUESTION: smoser, when you use spot instances for your testing, what rate do you typically offer to pay, and how often do your instances get terminated?
<cjohnston> < kamalmostafa> QUESTION: smoser, when you use spot instances for your testing, what rate do you typically offer to pay, and how often do your instances get terminated?
<smoser> I've never actually had one terminated.
<smoser> http://cloudexchange.org/ has graphs of spot prices historically
<smoser> and you can get that same data with : ec2-describe-spot-price-history
<smoser> what I do is take the high price available and raise it by 10%
<smoser> you'll notice spikes in the graphs at cloudexchange
<smoser> this is where (I think) amazon had higher demand for non-spot instances and explicitly kicked off most spot instances
<smoser> On average, spot instances run ~ 40% of the regular price.
<smoser> This is all I had prepared, so the floor is open to questions
<smoser> Questions
<smoser> oh. One other thing I should mention
<smoser> i can't believe i didn't plug UEC
<smoser> UEC (Ubuntu Enterprise Cloud) is based on Eucalyptus and allows you to easily run a ec2 compatible cloud inside your own data center.
<smoser> This has all sorts of neat uses.
<cjohnston> < zul> QUESTION: how are the images built?
<smoser> zul, thanks for asking :)
<smoser> We build our images using vmbuilder
<smoser> The complete setup for building identical images is available starting at : https://code.launchpad.net/~ubuntu-on-ec2/vmbuilder/automated-ec2-builds
<smoser> and code we use to publish the builds is at https://code.edge.launchpad.net/~ubuntu-on-ec2/ubuntu-on-ec2/ec2-publishing-scripts
<cjohnston> < dhillon-v10> smoser: how is the upcomming HTML5 going to affect the server cloud
<smoser> hm.. I dont know.
<smoser> Do you think it will increase demand for server resources? or reduce demand?
<smoser> I guess I need more context on the question
<cjohnston> < dhillon-v10> smoser: probably decrease the demand because now users can do more stuff offline
<smoser> Maybe, but by the same note, the more you depend on "the cloud" the more important reliable resources are
<smoser> Well, I guess to wrap up...
<cjohnston> < dhillon-v10> smoser: possibly :)
<cjohnston> < kamalmostafa> QUESTION: Can EC2 machine images be used by UEC installations?  (either with our without incurring charges at Amazon)?
<smoser> kamalmostafa, yes
<smoser> The only real difference is that UEC uses KVM and EC2 is xen based.
<smoser> so the end result is that you'll have a different kernel, but ubuntu creates "ubuntu sauce" kernels for both varieties
<smoser> i see UEC as very useful for developing machine images that can then be deployed publically on ec2
<smoser> (and for other purposes too)
<cjohnston> < kamalmostafa> QUESTION: Does one need an Amazon AWS account at all, in order to use those images in a UEC installation?
<smoser> kamalmostafa, no
<smoser> UEC is completely stand alone.
<smoser> The requirements for it are basically just having hardware available.
<smoser> you can create a "cloud" with 2 systems
<smoser> and the ubuntu-server ISOs have an easy option for doing so.
<smoser> I've probably represented UEC poorly here... maybe next developer week we need a UEC class
<smoser> wrapping up...
<cjohnston> < lbrinkma> QUESTION: Whats the api command for creating a spot instance?
<smoser> If you're a ubuntu developer, I strongly urge you to take a look at using EC2 for easily running releases of ubuntu that you have no worry about destroying.
<smoser> ec2-request-spot-instances is the api command
<smoser> it basically looks like 'ec2-run-instances' with some extra args.
<smoser> I've done sone work to make a wrapper 'ec2-cheap-run-instances'.  It needs some work, but then is a dropin replacement for ec2-run-instances
<smoser> http://smoser.brickies.net/git/?p=misc-starter-tools.git;a=blob;f=ec2/ec2-cheap-run-instances;hb=HEAD
<smoser> If you're not a ubuntu developer but want to do "real stuff" with EC2, there are loads of people running businesses and servers on EC2's cloud.  I urge you to look into it further, and,of course, I urge you to start with the Official Ubuntu Images
<smoser> If you have questions or need assistance, please feel free to ping me  #ubuntu-server or elsewhere.
<cjohnston> Thanks smoser !
<cjohnston> kirkland, your next
<kirkland> cjohnston: hi, thanks.
<kirkland> alright, so I'm here to talk about KVM
<kirkland> which is the recommended virtualization hypervisor for Ubuntu
<kirkland> it's similar, at least in principle to other hypervisors like VMWare, Xen, or VirtualBox (among many others)
<kirkland> this talk is structured as follows ...
<kirkland>  a) a brief description/explanation about Virtualization, and how KVM works
<kirkland>  b) a few simple examples for launching virtual machines with KVM (that you can try at home now)
<kirkland>  c) and finally, some "KVM hacks", to do some fun, or more interesting things with your VMs
<kirkland> so for starters, check to see if your CPU supports KVM
<kirkland> egrep "flags.*:.*(svm|vmx)" /proc/cpuinfo
<kirkland> you need to see if your CPU supports either the svm or the vmx flag
<kirkland> these are the AMD and Intel designations for hardware supported virtualization
<kirkland> quick poll in #ubuntu-classroom-chat, hands up o/ if you have cpu support for kvm
<kirkland> if you don't have hw support for KVM, you'll probably need to use something else (like Xen or VirtualBox) to do virtualization
<kirkland> unfortunately, I'm not going to cover those in this talk
<kirkland> okay so KVM ...
<kirkland> kvm is actually supported through a driver in the linux kernel
<kirkland> so if you have cpu support, you can "sudo apt-get install qemu-kvm"
<kirkland> once that installs, you should have a device, /dev/kvm
<kirkland> this is an interface that the kernel provides to the userspace kvm program
<kirkland> basically, this allows virtual machines to runs some instructions *directly* on your real cpu
<kirkland> rather than running those instructions on an emulated CPU
<kirkland> which is what qemu alone (ie, without kvm) does
<kirkland> needless to say, emulation is slow
<kirkland> running on real hardware is much faster!
<kirkland> for this reason, KVM is really smoking fast virtualization
<kirkland> however, we still need parts of QEMU
<kirkland> QEMU = "quick emulator"
<kirkland> it provides what we call "the driver model" for KVM
<kirkland> it emulates the rest of the things that aren't accelerated (yet)
<kirkland> like the sound card, and the video card
<kirkland> so there are a lot of ways to launch virtual machines with kvm
<kirkland> you can launch them through the command line
<kirkland> which is what I generally do, as a developer
<kirkland> or through one of the graphical front ends
<kirkland> virt-manager is probably the most popular front end
<kirkland> i encourage you to try virt-manager out, if gui's are your thing
<kirkland> it's pretty straight-forward, wizard/menu driven
<kirkland> it prompts you for various options about your vm creation
<kirkland> and then, ultimately, just runs a really long kvm line :-)
<kirkland> it does all of this using the libvirt library
<kirkland> libvirt provides a common library interface to multiple different virtualization backends (like kvm, xen, and others)
<kirkland> to get a quick example up and running, let's use "testdrive"
<kirkland> anyone here already running Lucid on the machine they're going to use to try out these examples?  (o/ hands up in -chat)
<kirkland> if so, just "sudo apt-get install testdrive"
<kirkland> otherwise, you'll need to install testdrive from the PPA linked to from http://launchpad.net/testdrive
<kirkland> testdrive is just a wrapper that rsync's or zsync's an Ubuntu ISO and launches it in a KVM with a good set of options
<kirkland> it's a nice way of "testdriving" the daily Ubuntu desktop or server ISOs in a virtual machine
<kirkland> hopefully you have an Ubuntu *.iso file lying around somewhere
<kirkland> otherwise, you're going to need to download one to do any of the following examples
<kirkland> fortunately, I do ...
<kirkland> and testdrive can either run against a http/ftp/rsync able ISO
<kirkland> or against a local file
<kirkland> $ testdrive -u ./lucid-desktop-amd64.iso
<kirkland> so that's what I'm running right now
<kirkland> and so the desktop live cd installer then pops up in a new window
<kirkland> let's look at what KVM was launched with
<kirkland> $ ps -ef | grep kvm
<kirkland> kirkland 11395 11364 99 13:19 pts/12   00:00:35 kvm -m 512 -cdrom /local/virt/iso/lucid-desktop-amd64.iso -drive file=/home/kirkland/.cache/testdrive/img/testdrive-disk-nvqebh.img,if=virtio,index=0,boot=on -usb -usbdevice tablet -net nic,model=virtio -net user -soundhw es1370
<kirkland> the options are mostly straightforward
<kirkland> but testdrive launched with a decent set of options without you having to go figure all of these out
<kirkland> but since you're here to learn about KVM, let's look at them  :-)
<kirkland> -m 512 says give this virtual machine 512MB of memory
<kirkland> which is enough to use the LiveCD
<kirkland> my VM is now up and running the liveCD
<kirkland> i can launch a terminal in the VM and run "free"
<kirkland> and see that yes, this VM has ~512MB of memory
<kirkland> -cdrom tells KVM where to find the ISO to boot
<kirkland> -drive tells KVM where to find the hard disk
<kirkland> now there's a bit more to this
<kirkland> in particular, take note of if=virtio
<kirkland> this VM is using "virtio" for the hard disk driver
<kirkland> this is *much* faster for KVM to use, than say, scsi
<kirkland> virtio is a "paravirtual" disk driver
<kirkland> kvm is able to write to the backing disk image more directly, through a special, virtio feature in the host's kernel
<kirkland> you can also see where the .img file is stored (in ~/.cache/testdrive/*img in this case
<kirkland> it's index=0 which puts this disk at /dev/vda
<kirkland> (note that the disk would be /dev/sda if the if=scsi
<kirkland> )
<kirkland> and boot=on makes kvm able to boot from this disk
<kirkland> -usb -usbdevice tablet is just a neat little hack that allows you to move your mouse cursor in and out of the KVM sdl window more smoothly
<kirkland> totally optional, but I really like it
<kirkland> -net nic,model=virtio is the network adapter
<kirkland> again, we're using virtio for networking
<kirkland> which, like virtio disk, is a paravirtual networking driver, allowing the vm to talk through the host's network adapter *much* faster
<kirkland> like 10x faster
<kirkland> -net user is the type of networking, there are a lot of different options here, but this is the simplest for quick outgoing network access
<kirkland> and -soundhw is the emulated sound device
<kirkland> okay ... was anyone able to get a desktop LiveCD VM launched (either through testdrive or on your own)?  hands up in -chat o/
<kirkland> ah, okay, I see a question about KVM in the BIOS
<kirkland> let me address that ....
<kirkland> first, run "kvm-ok" on your host
<kirkland> that should help detect *most* issues why KVM might not work
<kirkland> first, it does that grep I asked you to do earlier
<kirkland> next, it does a few sanity checks, including grepping for a really annoying message in BIOS
<kirkland> some desktop/laptop manufacturers ship machines that *have* CPUs that support virtualization (VT)
<kirkland> *but* they disable it in BIOS
<kirkland> the widespread rumour is that M$ pressures them to do so
<kirkland> in any case, we all suffer with this
<kirkland> so if you enter your bios, look in CPU options, and you should see something about "enabling VT, Virtualization Technology"
<kirkland> turn that on, physically power off, then back on
<kirkland> and then re-run kvm-ok, and you should be good to go
<kirkland> cool, looks like we have a few people with running VMs
<kirkland> now, go ahead and perform an installation (if you like)
<kirkland> and your desktop image should be installed into that single disk image
<kirkland> it'll take a little while to complete
<kirkland> okay, mine's going in the background
<kirkland> the fun thing is that you can do *anything* in this VM without affecting your stable desktop
<kirkland> for that reason, KVM is wonderful for developers and testers
<kirkland> i did all of my development of Ubuntu's Encrypted Home Directory feature, for instance, in hundreds of VMs that I created and destroyed
<kirkland> have you ever wanted to cd / && sudo rm -rf / ?
<kirkland> be my guest, in your VM :-)
<kirkland> anyway, you can do some really constructive (or destructive) things in VMs
<kirkland> let's pause for a few questions, now, while our installations are going, and before we get into some advanced features
<kirkland> please post your questions in #ubuntu-classroom-chat, prepended with: QUESTION
<kirkland> <rmunn|lernid> QUESTION: If I have an existing VM created in VirtualBox and/or VMWare, is it possible to convert it to run under qemu-kvm instead?
<kirkland> rmunn|lernid: possibly ...  or at least you can get very, very close
<kirkland> rmunn|lernid: mainly, you need to track down the disk image, where it installed into
<kirkland> rmunn|lernid: assuming it's a standard disk format, you should be able to launch
<kirkland> rmunn|lernid: you might have to recreate some of the meta data, though
<kirkland> rmunn|lernid: like how much memory the VM gets
<kirkland> rmunn|lernid: but if you find the disk image itself, make a backup copy of the disk image (while the VM is *not* running), cp it to /tmp/foo.img, for instance
<kirkland> rmunn|lernid: and then just run "kvm -m 512 -hda foo.img"
<kirkland> rmunn|lernid: if that works (or mostly works), you'll then just need to play with getting the rest of the kvm options you want in there (like adding networking, sound, etc)
<kirkland> rmunn|lernid: as for something more automated, it might well exist ... though I don't know of it
<kirkland> rmunn|lernid: i think that would be a cool idea
<kirkland> rmunn|lernid: file a brainstorm request, and/or a wishlist bug
<kirkland> <rmunn|lernid> QUESTION: How do you save a "snapshot" of your VM's state under qemu-kvm, then revert to that snapshot later, discarding any changes since the snapshot?
<kirkland> rmunn|lernid: *great* question ... i'll try to get to that in the advanced examples section
<kirkland> rmunn|lernid: in case I don't get all the way through to it (as I didn't prepare that particular example), see: http://manpages.ubuntu.com/manpages/lucid/en/man1/kvm.1.html
<kirkland> rmunn|lernid: search in that manpage for snapshot=
<kirkland> rmunn|lernid: and -snapshot
<kirkland> <kjele> QUESTION: What benefit does kvm have over virtualbox?
<kirkland> kjele: for one thing, KVM is really, really, really fast
<kirkland> kjele: though it requires hardware support to be really, really, really fast
<kirkland> kjele: KVM is mostly maintained by the Ubuntu Server team
<kirkland> kjele: and our target hardware (mostly server class hardware) has such support pretty ubiquitously
<kirkland> kjele: personally, I think VirtualBox is the best alternative for users who *don't* have hardware support
<kirkland> kjele: and VirtualBox has a pretty GUI
<kirkland> kjele: ideally, someone in the Ubuntu Desktop team would perhaps support VirtualBox
<kirkland> kjele: but as of now, it's a project in Ubuntu Universe that mostly works pretty well
<kirkland> <yltsrc> QUESTION: is kvm faster than virtualbox and vmware?
<kirkland> yltsrc: in my experience, and on hardware that has VT, yes, and yes.
<kirkland> yltsrc: in particular, if KVM is using virtio networking and disk, yes, and yes ;-)
<kirkland> <kamalmostafa> QUESTION: Does testdrive create a blank .img of a particular size before booting the specified iso?  Or does the .img file somehow "grow" as needed?
<kirkland> kamalmostafa: good question
<kirkland> kamalmostafa: yeah, it totally does, and I'm glad you reminded me to mention the command
<kirkland> kvm-img create -f qcow2 $DISK_FILE $DISK_SIZE
<kirkland> that's the command testdrive uses
<kirkland> if you're creating/launching custom VMs outside of testdrive, you'll need to use "kvm-img create" to create a backing disk image
<kirkland> there are several supported -f formats
<kirkland> usually, I use either "raw" or "qcow2"
<kirkland> I strongly recommend "qcow2" whenever possible
<kirkland> qcow = quick copy on write format 2
<kirkland> which allows the backing disk image to be *much* smaller than the total allocation
<kirkland> testdrive randomly generates the filename
<kirkland> and uses 6G for the backing disk size, by default
<kirkland> (both of which can be overriden by the user (see the testdrive manpages)
<kirkland> okay, my install has completed
<kirkland> has anyone else's installation completed?  (hands up, or % done in -chat)
<kirkland> <lernid_luislopez> QUESTION: Is it possible to have live migration in KVM?
<kirkland> lernid_luislopez: yes!  we'll try that out shortly, actually :-)
<kirkland> <yltsrc> QUESTION: is kvm ready for production?
<kirkland> yltsrc: another good question ...
<kirkland> yltsrc: i would say "if you're on a modern version, yes" :-)
<kirkland> yltsrc: let me qualify that ...
<kirkland> yltsrc: Ubuntu 8.04 LTS (Hardy) was the first of the enterprise distros to ship with KVM as the hypervisor
<kirkland> yltsrc: however, the kvm version back then (and more importantly the kernel support) was very young
<kirkland> yltsrc: for this reason, I backported kvm-84 to hardy-backports
<kirkland> yltsrc: I'd say that version (which is Jaunty's KVM) is pretty good
<kirkland> yltsrc: however, Karmic's (and Lucid's) is far more stable
<kirkland> yltsrc: and KVM is ultimately what UEC (Ubuntu Enterprise Cloud and Eucalyptus) are using for cloud VMs
<kirkland> yltsrc: which is production ready ;-)
<kirkland> <statik-lernid> QUESTION: I used testdrive-select-iso last night and ran through a lucid desktop installation, but then i turned it off this morning. is there a way for me to get back to that machine without having to do a whole new install?
<kirkland> statik-lernid: if you want to launch the backing image, yeah, sure ... you just need to find the disk image
<kirkland> statik-lernid: cd ~/.cache/testdrive
<kirkland> statik-lernid: cd ~/.cache/testdrive/img
<kirkland> statik-lernid: ls -thalF *.img
<kirkland> statik-lernid: look at the timestamps, and the file sizes, and you should be able to find the one you want
<kirkland> statik-lernid: and then just launch KVM
<kirkland> okay, let me tear through the rest of this
<kirkland> I have a few fun hacks I'm going to just paste and tell you about, as I'm running low on time
<kirkland> kvm -m 1024 -cdrom http://cdimage.ubuntu.com/daily/current/lucid-alternate-amd64.iso
<kirkland> this one is fun ...
<kirkland> you can actually stream the ISO over http, without downloading it :-)
<kirkland> i have a pretty good ISO mirror here local on my gigabit network
<kirkland> which is obviously faster than going over the internet
<kirkland> so I can launch ISOs without having them locally on my small SSD hard drive in my laptop
<kirkland> for *really* fast VMs, put your ISO and/or hard disk image in a tmpfs in memory
<kirkland> i use tmpfs for my /tmp
<kirkland> (you have to have a lot of RAM, really, to do this well)
<kirkland>     /etc/fstab:tmpfs /tmp tmpfs rw
<kirkland> that's the line you add to /etc/fstab
<kirkland> kvm -m 2048 -cdrom /tmp/lucid-desktop-amd64.iso
<kirkland> that launches an ISO for me, with a *lot* of memory
<kirkland> where the backing ISO is itself in my RAM :-)
<kirkland> needless to say, it's pretty quick :-)
<kirkland> kvm-img can create disks of *any* size
<kirkland> and qcow2 will make them sparse
<kirkland> so you can create, let's say, a 2PB (petabyte) disk
<kirkland> kvm-img create -f qcow2 /tmp/petabyte.img 1024T
<kirkland> launch a KVM with that as the backing disk and do a "sudo fdisk -l" in the VM
<kirkland> it's fun to see a 1PB backing disk
<kirkland> long before they're on the market :-D
<kirkland> you can dynamically add a disk to a running VM
<kirkland> in the vm, "sudo modprobe acpiphp"
<kirkland> (note that we're enabling this by default in Lucid, so that you don't have to modprobe it on the server)
<kirkland> now, in your running KVM, drop to the QEMU console, where there are all sorts of fun, interesting commands
<kirkland> ctrl-alt-2
<kirkland> that'll put you at a QEMU prompt
<kirkland> pci_add auto storage file=/tmp/petabyte.img,if=virtio
<kirkland> then go back to your VM
<kirkland> ctrl-alt-1
<kirkland> sudo fdisk -l
<kirkland> that should show you your very big disk :-)
<kirkland> finally, let's do a live migration ...
<kirkland> now we'll do the live migration from one VM to another VM, running on the same system (your localhost)
<kirkland> but if you have two machines running the same KVM version, you should be able to do this across your network too
<kirkland> so first, launch a vm
<kirkland> kvm -m 512 -hda /local/virt/img/lucid-desktop.img
<kirkland> or use your running one
<kirkland> next, launch a second kvm process WITH THE EXACT SAME PARAMETERS
<kirkland> plus the -incoming option
<kirkland> kvm -m 512 -hda /local/virt/img/lucid-desktop.img -incoming tcp:0.0.0.0:1025
<kirkland> and the IP address and Port
<kirkland> i'm using local, so I have 0.0.0.0
<kirkland> and I arbitrarily chose 1025
<kirkland> In the source, drop to the QEMU console
<kirkland> ctrl-alt-2
<kirkland> and run:
<kirkland>     migrate tcp:localhost:1025
<kirkland> and in a few seconds, you should see your vm move from one process to the other
<kirkland> to do this across separate hosts, you need to have persistent storage across both (like NFS)
<kirkland> and it requires a slightly more complicated networking setup
<kirkland> but it's quite doable
<kirkland> okay, I think my time is up
<kirkland> hope this was useful
<kirkland> i'll be around in #ubuntu-server if you have more questions
<kirkland> cheers
<DktrKranz> Hello everybody, and thank you to be here at Python Application packaging hosted at Ubuntu Developer Week!
<DktrKranz> My name is Luca Falavigna, I'm a MOTU and Debian Developer, and I'll be your SABPDFT (Self-Appointed Benevolent Python Dictator For Today) for the next minutes :)
<DktrKranz> For those who weren't here last week, I already had a session about basic Python application packaging. You can find logs here: http://irclogs.ubuntu.com/2010/01/21/%23ubuntu-classroom.html
<DktrKranz> It basically covered how to handle control files in debian/, and how to easily find dependencies for your Python applications. Even if you are good in Python packaging, there could be some interesting tips to improve your kung-fu :)
<DktrKranz> Today we will look at some advanced tricks to improve overall Python packages quality and stability.
<DktrKranz> But let's start with a really short introduction.
<DktrKranz> I refer to a "Python application" as a piece of software composed by one or more Python scripts and eventually one of more modules (or "packages", distutils calls them that way).
<DktrKranz> Other kinds of software are "Python modules", which contain modules potentially useful for other programs installed in the global namespace, and "Python extensions", which usually are C source files, compiled and liked for a given Python interpreter to extend its features.
<DktrKranz> But how does a Python application look like?
<DktrKranz> I've created a really dumb one for the occasion. Open your favourite terminal and launch dget -u http://people.debian.org/~dktrkranz/pythontest/pythontest_0.1-1/pythontest_0.1-1.dsc
<DktrKranz> Once you've downloaded it, look at pythontest-0.1 directory, you will find pythontest script, PythonTest module (or "package") and setup.py, which is Python distutils' "makefile".
<DktrKranz> It's probably the smallest Python application you'll ever seen, it just prints a message, and then exits :)
<DktrKranz> Invest a couple of minutes to examine the few files available, then we will move to packaging.
<DktrKranz> < Omar871> QUESTION: Will "setup.py install" work?
<DktrKranz> Omar871: it should by launching "python setup.py install"
<DktrKranz> I didn't test that way, but it should work as expected ;)
<DktrKranz> < Omar871> QUESTION: How do I use the package after installing it?
<DktrKranz> it installs a script under /usr/bin, named pythontest. you should be able to launch it, but we will see it in the next minutes
<DktrKranz> < statik-lernid> QUESTION: when would we choose dh --with-python-central instead of the default?
<DktrKranz> statik-lernid: it's a matter of tastes. I personally prefer python-support, I read the code and I understand a bit its logic.
<DktrKranz> < lucio> QUESTION: what is pycentrak and pysupport and why do i care?
<DktrKranz> lucio: these are helpers which manage to expand ${python:Depends} to the right values, and byte-compile Python files during package install
<DktrKranz> they do more, but that's beyond the scope of the lesson.
<DktrKranz> lucio: if you are interested, a more detailed description of packaging is held in the logs of the other session, see above :)
<DktrKranz> ok, let's move to the packaging itself now
<DktrKranz> Compile the package (dpkg-buildpackage -uc -us) and install the resulting pythontest_0.1-1_all.deb
<DktrKranz> To test it, open another console and move to a completely different location than the build directory. Keep this in mind: never test a Python software installed system-wide by launching it in the build directory. This will save you from errors, and let you discover serious problems in your packaging!
<DktrKranz> Now launch "pythontest". You should now see a message on your console saying package works correctly.
<DktrKranz> < Omar871> QUESTION: Is debhelper needed for this?
<DktrKranz> Omar871: for this examples, yes. debhelper is explicitly listed in Depends field in debian/control
<DktrKranz> < statik-lernid> QUESTION: when I dpkg -L pythontest, I see files installed to /usr/share/pyshared/. when I python -c "import PythonTest;print
<DktrKranz>                        PythonTest.__file__" I see files located at /usr/lib/pymodules/python2.6/PythonTest/__init__.pyc. why the different paths?
<DktrKranz> statik-lernid: good question. This is how python-support worsk
<DktrKranz> it byte-compiles files for every supported Python version at runtime, and stores files under /usr/lib/pymodules/python*/PythonTest
<DktrKranz> while package only has them under pyshared, because they are common to multiple Python versions at the same time
<DktrKranz> that's the magic behind python-support and python-central :)
<DktrKranz> < POX> QUESTION: shouldn't Python applications use private dirs by default (i.e. when other packages do not use their modules)? What's --install-lib
<DktrKranz> and --install-scripts?
<DktrKranz> POX: yes. Stay tuned for that :)
<DktrKranz> Even if package works, we installed PythonTest module in Python global namespace, which is completely useless for other packages in this case. Nobody will ever want to access our PythonTest module, and we should also want to avoid collisions with other modules as well.
<DktrKranz> To avoid global namespace pollution, we should install our PythonTest module in a "private directory", that is one not listed in the output shown by python -c "import sys; print sys.path" command.
<DktrKranz> /usr/share/packagename is a very good choice in almost all cases, so we'll adjust our package to install modules in /usr/share/pythontest.
<DktrKranz> I prepared a second package, you can grab it with dget -u http://people.debian.org/~dktrkranz/pythontest/pythontest_0.1-2/pythontest_0.1-2.dsc, and see changes I've made here: http://people.debian.org/~dktrkranz/pythontest/0.1-1_0.1-2.patch
<DktrKranz> Basically, the only change I did is passing --install-lib=/usr/share/pythontest to distutils to instruct it to install PythonTest in our private directory (see the three rules files to see several methods to do that).
<DktrKranz> Again, compile, install the resulting pythontest_0.1-2_all.deb, and test it by launching pythontest in the other console.
<DktrKranz> You should now see something unexpected...
<DktrKranz> I got "Uh-oh! There is something wrong with the package, I can not import PythonTest module!", so we probably did something bad here :)
<DktrKranz> Before explaining that, let's answer to some questions.
<DktrKranz> < mhall119|work> QUESTION: so the dh $@ in debian/rules is processing the pythontest.* files?
<DktrKranz> mhall119|work: it's dh_pysupport (or dh_pycentral), called by dh sequencer which parsed "dh $@"
<DktrKranz> you can see dh_pysupport has been called in your terminal output
<DktrKranz> < Omar871> QUESTION: What about virtual env?
<DktrKranz> Omar871: we don't usually use virtualenv to avoid shipping multiple files in the same package
<DktrKranz> < mhall119|work> QUESTION: so I understand, dh->dh_pysupport->pythontest.postinst.debhelper
<DktrKranz> mhall119|work: exactly. dh calls dh_pysupport at the given time, while dh_pysupport also generates *postinst files to handle byte-compilation of Python objects.
<DktrKranz> < johnsgruber> QUESTION: In my case for the first example source package the built deb says to put the library in /usr/share/python-support/pythontest
<DktrKranz> johnsgruber: do you have a python-support version << 0.90.0 ?
<DktrKranz> e.g, you use an older Ubuntu/Debian release than Intrepid/Karmic, or testing/sid?
<DktrKranz> Back to our problem then.
<DktrKranz> Why did we get that? We moved PythonTest to a private directory, and this is good, but our pythontest script is no longer able to access it, and this is bad!
<DktrKranz> This is why PythonTest is not in global namespace anymore, but pythontest script obviously thinks it is there.
<DktrKranz> We have two options now: using sys.path.append() from inside of pythontest script (the one installed in /usr/bin), or moving it to the same directory where PythonTest is (/usr/share/pythontest).
<DktrKranz> My preferred way to achieve this goal is the latter, I don't like playing with sys.path :)
<DktrKranz> Let's download today's third package with dget -u http://people.debian.org/~dktrkranz/pythontest/pythontest_0.1-3/pythontest_0.1-3.dsc and look at the diff at http://people.debian.org/~dktrkranz/pythontest/0.1-2_0.1-3.patch
<DktrKranz> This time I passed a new option to distutils: --install-script=/usr/share/pythontest, to instruct it to install our scripts in /usr/share/pythontest too. I also created a /usr/bin/pythontest symlink pointing to /usr/share/pythontest/pythontest, this way we still have pythontest in our $PATH :)
<DktrKranz> Again, compile, install the resulting pythontest_0.1-3_all.deb and test it by launching pythontest in the other console.
<DktrKranz> Now you should see something familiar, and more friendly :)
<DktrKranz> We have PythonTest module in a private directory, and pythontest is able to import it without problem, let's celebrate! \o/
<DktrKranz> It's a little tricky at times, but you just need some practice, and things will be clearer.
<DktrKranz> < mhall119|work> QUESTION: applications should always be put in a private space?
<DktrKranz> mhall119|work: it's not always possible, sometimes modules are required by other packages, and having it in global namespace helps, but normally the private directory should be used
<DktrKranz> in my memory, > 95% Python applications can be installed using private directory method
<DktrKranz> < Omar871> QUESTION: Can you please explain to me what exactly is a "private space"?
<DktrKranz> Omar871: a private directory is a directory not accessible by Python global namespace.
<DktrKranz> Omar871: for example, if you launch python console and import a module (f.e. gtk, but feel free to pick another one), python interpreter will look in some directories looing for gtk module
<DktrKranz> these are the ones listed by "python -c "import sys; print sys.path" command
<DktrKranz> other ones are "private", given that python interpreter won't look in those searching for modules
<DktrKranz> < POX> QUESTION: what if script and module name is the same? What's --install-scripts?
<DktrKranz> POX: in that case, one of the quickest solutions is to manually install scripts having the same name as modules/packages (e.g. foo -> foo.py)
<DktrKranz> POX: --install-scripts is another distutils option which instructs it to install files listed under scripts=[] (seen it in setup.py) to a given directory.
<DktrKranz> < rmunn|lernid> QUESTION: Won't DktrKranz's approach fail once Python 2.7 is released and absolute imports (http://www.python.org/dev/peps/pep-0328/)
<DktrKranz> become the default? Isn't it better to fiddle with sys.path?
<DktrKranz> rmunn|lernid: nice question. I haven't had the occasion to look at relative and absolute imports yet applied to Debian packaging, but I guess something have to be adjusted for that, and sys.path mangling could become handy.
<DktrKranz> < mhall119|work> QUESTION: is rules.cdbs being used in what we're currently doing?  I see that your patches updated it as well
<DktrKranz> mhall119|work: not directly. I included it in my example for those familiar with CDBS over dh7. I patched it to show how to handle things with different helpers.
<DktrKranz> (debian/rules.olddh follows the same rule)
<DktrKranz> < mhall119|work> QUESTION: is setup.py being called by anything in this setup?
<DktrKranz> mhall119|work: it's called by dh_auto_install
<DktrKranz> which in turn is called by dh sequencer, yay for tiny rules :)
<DktrKranz> < Omar871> QUESTION: Which channel can we find you at?
<DktrKranz> Omar871: several maintainer and developers interested in Python packaging are on #debian-python, OFTC network
<DktrKranz> feel free to join, ask questions and look for sponsorship :)
<DktrKranz> < Emilien> QUESTION: elaboration: Well, I've heard that with Quickly you can package your app, which is written in Python too... Wouldn't it be easier
<DktrKranz>                  to use that instead of having to set everything manually up?
<DktrKranz> Emilien: I've heard of Quicly, I know is active developed by some cool guys here, I didn't have the occasion to test it yet, I still prefer using my favourite editor, just because things to cut are huge.
<DktrKranz> so, I can't answer to that question, but I guess if it manages things as described here today, it should be fine (but please don't completely trust helpers)
<DktrKranz> < Emilien> dktrkranz: what do you mean by "things to cut are huge"?
<DktrKranz> Emilien: usually, templates are prepared to fit everyone's needs, while I prefer to tailor a package to fit its needs, removing every unneeded bit.
<DktrKranz> OK, we're a bit late, if you still have questions, we can move to our usual channels. Thanks everyone for coming, I had a great time! See you :)
#ubuntu-classroom 2010-01-28
<ecanto> date -u
<cjohnston> ecanto: you need to do that in the command line
<cjohnston> @now
<ubottu> Current time in Etc/UTC: January 28 2010, 01:25:16
<ecanto> cjohnston thanks. (:
 * jcastro taps on the mic
 * dholbach looks for the technicians to fix the feedback loop
* dholbach changed the topic of #ubuntu-classroom to: Ubuntu Classroom || Support in #ubuntu || https://wiki.ubuntu.com/Classroom || https://wiki.ubuntu.com/Packaging/Training || Upcoming: Mon 25 Jan - Fri 29 Jan 2010: https://wiki.ubuntu.com/UbuntuDeveloperWeek || Run 'date -u' in a terminal to find out the UTC time | Ask questions in #ubuntu-classroom-chat
<dholbach> WELCOME EVERYBODY TO DAY 4 OF UBUNTU DEVELOPER WEEK!
<dholbach> If you don't know why you're here and what's going on, check out https://wiki.ubuntu.com/UbuntuDeveloperWeek :-)
<dholbach> Questions all go to #ubuntu-classroom-chat and please prefix them with QUESTION so they stick out!
<dholbach> if you're uncomfortable asking questions in English, please head into one of the channels listed at the end of https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dholbach> there will be people who will translate questions and answers for you if necessary (consider helping out yourself, please :-))
<dholbach> OK, enough organisational mumbo-jumbo!
<dholbach> I'm here with the amazing Jorge O. Castro, jcastro!
<jcastro> woo hoo!
<jcastro> we have been preparing real hard for this session, hope you like it!
<dholbach> And together we'll talk about Adopting an Upstream! Why it's fun, necessary and makes the world a better place.
<dholbach> jcastro: What's an Upstream?
<jcastro> that's a good question
<jcastro> first, when you get an ubuntu CD it comes with a bunch of great software
<jcastro> things like Firefox, Openoffice, GNOME, KDE, etc.
<jcastro> what Ubuntu does as a distribution is take all those things, assemble them into one operating system, and then ship
<jcastro> so, these projects, we call them upstream, like in a river
<jcastro> and distributions like us are downstram
<jcastro> and derived distributions like Mint would be downstream from us
<dholbach> so that's like all the software authors of those projects?
<jcastro> working with upstreams and downstreams is a critical part of ubuntu
<jcastro> right!
<dholbach> (I hope I encourage YOU ALL to ask questions too, I asked the first ones myself... :-))
<jcastro> so, for example, it's critical for us to be able to work with upstreams like Firefox to ensure that we're shipping something users will love
<jcastro> so for example this week in #ubuntu-mozillateam you'll see our Ubuntu teams working with people from Mozilla
<dholbach> So there's millions of Ubuntu users and there's thousands of Upstream projects... looks like being there for both huge groups is quite an undertaking
<jcastro> so there's a bunch of cross boundary work going on there that some people don't see
<jcastro> right, especially when you're trying to fix a problem! But we'll show you how to do that when we get there
<jcastro> you'll see that sometimes putting a bug in the right place that we can be a service to upstreams when it comes to testing.
<jcastro> and when we fix problems it's of course our duty to make sure that those fixes get back upstream so that they can improve the overall quality of their project
<jcastro> and of course, the other half is ensuring that when upstream fixes bugs that we get those out to users, because at the end of the day that's what it's all about
<jcastro> so
<jcastro> I have been working on some wiki pages to help people get started
<jcastro> https://wiki.ubuntu.com/Upstream
<jcastro> It's unreasonable to expect every upstream author to know in detail how ubuntu works
<jcastro> some are content just making their software
<dholbach> and the other way around :)
<jcastro> so I've put together a little cheat sheet here for them (you can help improve this too if you find mistakes)
<jcastro> so that they can have one place to find important things, like when we freeze, what our security policy is, etc.
<jcastro> and also give them information on how things are going on the ubuntu platform
<jcastro> so if you wanted to find out about notify osd or messaging indicators, I've listed those there
<jcastro> now
<jcastro> one thing we've all been working on is a little program to give upstreams an "in" in the distro
<jcastro> this would be a person that does know how Ubuntu works
<jcastro> and is passionate about that specific piece of software
<jcastro> and wants to work on it in Ubuntu but also be there for the upstreams to answer their questions, be an information source, and be there when things go wrong
<jcastro> we call this Adopt a Package
<jcastro> dholbach: want to go into that for a little bit?
<dholbach> sure
<jcastro> https://wiki.ubuntu.com/BugSquad/AdoptPackage
<dholbach> and https://wiki.ubuntu.com/Upstream/Adopt
<dholbach> so to Adopt an Upstream can mean a couple of things
<dholbach> the most important one being that you act as a tie betwen Ubuntu and that upstream project
<dholbach> you can answer questions for people on that project, you know what's going on there, you know what's going on in Ubuntu
<dholbach> an easy example for "knowing what's going on" is: Upstream wants to ship a new feature release 2 weeks before the new Ubuntu release comes out
<dholbach> in that case you can talk to them and make it clear that it's hard to get that new feature release into Ubuntu because Ubuntu is already almost frozen
<dholbach> you can help with that kind of misinformation and help with the coordination early and explain what to do
<dholbach> jcastro and I will talk about the release cycle in more detail later on
<dholbach> another thing you can work on is bug reports
<dholbach> as we said before Ubuntu exposes great software to millions of users
<dholbach> of course these users occasionally run into problems
<jcastro> and they might not know what an upstream is!
<dholbach> exactly
<dholbach> so it's our job to triage those bugs, debug them, get as much information as possible and forward them to the upstream maintainers
<dholbach> because they are in the best position to work on the bug effectively
<dholbach> if we can fix it that's great, then we'll forward the patch to upstream
<jcastro> oh, so we can be good filters you mean?
<dholbach> exactly
<jcastro> we can weed out all the junk bugs so upstreams can concentrate on the ones with the best debugging info, descriptions, etc.
<dholbach> I've heard we have great tools for finding duplicates and dealing with crashes?
<dholbach> jcastro: maybe we should explain first what "to triage" means
<jcastro> yes.
<dholbach> you wanna do it? :)
<jcastro> https://wiki.ubuntu.com/Bugs/HowToTriage/
<jcastro> sure!
<jcastro> so when users report bugs
<jcastro> they go into this big pile
<jcastro> to triage a bug means to subdivide that pile from one huge unmanageable mess to smaller piles
<jcastro> and as the bug continues on in it's lifecycle it will end up in the right pile
<jcastro> so, we might start with a big pile
<jcastro> but then we have smaller piles, kernel, desktop, printing, etc.
<jcastro> and then those get smaller
<jcastro> until you have a package, like say, nautilus.
<jcastro> bug triagers are people who sort the bugs in the right pile
<dholbach> then we might be able to get the bug confirmed, make sure we know in which release the bug occurs
<jcastro> the great thing about this is that you can do this without being too technical
<dholbach> then find the right steps to reproduce it
<jcastro> these days we have tools that do a good job of guessing what pile something should go in
<jcastro> but we also need to try to reproduce the bug so we can confirm it
<jcastro> this involves following what the reporter did
<jcastro> so if the report is "clicking on this button breaks printing"
<dholbach> https://help.ubuntu.com/community/ReportingBugs has a bit more detail about how this "guessing" works
<jcastro> then usually you try it, and see if you see the problem too
<jcastro> also, remember that we have millions of users
<dholbach> the better we isolate the issue, the less work the upstreams have, they can concentrate on fixing the bug :-)
<jcastro> I find that most times bugs sitting in the big pile have already been reported, so you can do a bunch of good just marking things as duplicates (if they are indeed duplicates)
<dholbach> right
<dholbach> also there's bugs with crash reportsf
<dholbach> Ubuntu has a fantastic machinery that gets as much debug information about those crashes as possible
<dholbach> automatically
<jcastro> https://wiki.ubuntu.com/Apport <--- here are pictures of what it looks like
<dholbach> so what was a painstaking job before (https://wiki.ubuntu.com/Backtrace) is a lot easier now
<dholbach> the end result is that we can say in function do_something() in line 45 of file bla/something.c the whole thing crashed
<dholbach> plus other things that developers might want to know :)
<dholbach> go and see Emmet Hikory's session on Friday about "Interpreting stacktraces" if you want to know more :)
<jcastro> are these important to send to upstreams?
<jcastro> they look important!
<dholbach> holy cow yes!
<dholbach> with all this information it should be a bit easier for upstream developers to find the cause for the crash and fix it
<dholbach> a crash in most cases means: the program is gone, it stopped working, unsaved work, etc you know what it's like
<dholbach> sometimes these crashes happen in special circumstances that didn't happen for the upstream developers when they tested it
<dholbach> in almost every discussion I was part of upstreams were happy about that kind of conversations and grateful for detailed bug reports
<dholbach> if you have questions about how to get started with bugs and everything check out https://wiki.ubuntu.com/Upstream/Adopt and talk to the fine people in #ubuntu-bugs
<jcastro> ok, so apport finds this and reports this to launchpad, what's the next step?
<dholbach> the Launchpad machinery will do its magic and add more debug information to the bug report
<dholbach> the next step would be trying to confirm the issue
<dholbach> if you can confirm it and maybe add some more details to what happened, you can have a look and see if it was already reports in the upstream bug tracker
<dholbach> if it was, see if you can add more information to the bug
<dholbach> if it wasn't report it
<dholbach> sometimes it's useful to have a look and see if upstreams have some kind of "debugging information" documented somewhere
<dholbach> for some of them it will be something like "start the program with --debug option" or something
<dholbach> a lot of that kind of information is listed at https://wiki.ubuntu.com/DebuggingProcedures and you should add info for your upstream project if you have any :)
<dholbach> also Launchpad has a great feature: you can link the upstream bug to the Ubuntu bug, right?
<jcastro> yeah
<jcastro> let me show you about that
<jcastro> actually, give me a minute to find a bug
<jcastro> dholbach: do a dance!
 * dholbach puts on some music and does the funky Upstream-Bug-Linking dance
<jcastro> https://wiki.ubuntu.com/Bugs/Upstream
<jcastro> ok so here is some documentation, depending on the bug
<jcastro> however, in general, you can just click "Also affects project" in launchpad, and paste in the bug url from the other bug tracker
<jcastro> https://wiki.ubuntu.com/Bugs/Watches
<jcastro> they looks like this
<jcastro> so you see there, on the top example, there's the  bug in ubuntu, and the bug in the upstream project's bug tracker
<jcastro> in this case linux kernel bug 10911
<jcastro> these are useful because with certain bug trackers
<jcastro> like mozilla's bugzilla, we can do neat things like syncing comments between the 2 bug trackers
<jcastro> https://bugs.edge.launchpad.net/ubuntu/+source/notify-osd/+bug/501393
<jcastro> here is a good example of both ubuntu and mozilla developers working on a bug for example
<jcastro> however, just linking the bug can help
<jcastro> because it gives everyone a place to gather discussion around a bug
<jcastro> and especially for new users that might not know how things work
<jcastro> what other information can we help upstreams with dholbach?
<jcastro> tell me about this schedule
<dholbach> another fine thing you can do is: plan a Bug Day with your Upstream: invite them to https://wiki.ubuntu.com/UbuntuBugDay - triage bugs together, give people some coaching with that particular software - once you're good friends with your upstream, sky's the limit
<dholbach> alright... release schedule!
<jcastro> upstreams ask me all the time about the schedule
<jcastro> but sometimes I don't know what means what!
<dholbach> have a look at https://wiki.ubuntu.com/ReleaseSchedule
<dholbach> it shows our current release cycle
<dholbach> you can see how it goes from green in the beginning of the 6 months cycle to red at the end
<dholbach> green doesn't mean "it's all good, everything works" :-)
<dholbach> it rather means "everything's allowed from a developer point of view"
<dholbach> so we start with setting up the build tools in the beginning, plan features at UDS and merge with Debian (more on merges, syncs and Debian in a bit :-))
<dholbach> at some stage we hit feature freeze, that's where we plan to have most of the feature in the distro
<jcastro> Xazax | why is the release cycle for upstream projects important?
<dholbach> doesn't mean they have to be all perfect
<dholbach> Xazax: will get to that in a sec
<dholbach> but it means that they have to be there and be test-able :)
<dholbach> so we move from feature development to fixing
<dholbach> and stabilisation
<dholbach> the later it gets in the release cycle the more conservative we get
<dholbach> to upload a small patch that fixes a crash 3 weeks before release is probably fine
<dholbach> but to upload a GIANT new release with n+1 new features will probably get you in trouble with the release managers
<dholbach> Jorge and I worked on a cheatsheet that makes it easier to understand what is allowed at which stage of the release cycle to ease the planning and coordination somewhat: http://people.canonical.com/~dholbach/cheatsheet.pdf
<dholbach> that's linked from https://wiki.ubuntu.com/Upstream/Adopt too
<dholbach> I hope that answers Xazax's question somewhat.
<jcastro> i would like to chime in on his question
<dholbach> sure
<jcastro> with things like a Long Term Support release it's critical for us as a downstream distro to communicate our release schedule
<jcastro> we sync our schedule with GNOME
<jcastro> so, we're kind of lined up
<jcastro> some upstreams want to know when they should release to have their software in ubuntu
<jcastro> so they can make a release, or decided to skip an ubuntu release, etc.
<jcastro> so, when we're at UDS
<jcastro> and we're talking to upstreams we make decisions on things dependent on release cycles
<jcastro> so it might be "well, that feature won't be ready in time, so we'll go with version 1.x instead" or something
<dholbach> that sounds very reasonable
<dholbach> whatever we can't fix during the release time, we have to fix after the release... jcastro: do you know how that works?
<jcastro> yes
<jcastro> it's a big source of confusion
<jcastro> so let's talk about Stable Release Updates
<dholbach> I think it all started with something like this: http://blog.somekool.net/images/img_4232.jpg
<jcastro> https://wiki.ubuntu.com/StableReleaseUpdates
<jcastro> doh!
<dholbach> shall I tell the story quickly before you move on?
<jcastro> yes!
<dholbach> ok
<dholbach> so in the very early days of Ubuntu we uploaded a couple of fixes (they all were upstream already) to the xserver to a stable release
<dholbach> that means that users who had installed the release (and not the development version) got those fixes
<dholbach> the developer had tested them all, they were upstream fixes and everything seemed good
<dholbach> the problem was that a certain percentage of our users (x% of some millions) suddenly had a broken Xserver
<dholbach> which resulted in people like my dad having to wrestle with: http://blog.somekool.net/images/img_4232.jpg
<dholbach> so we realised that we need to be more conservative with fixes like that
<dholbach> that's where SRUs originate from
<dholbach> jcastro: so how does this all work now?
<jcastro> https://wiki.ubuntu.com/StableReleaseUpdates
<jcastro> we have these
<jcastro> don't worry, it only looks scary!
<jcastro> the key point to remember here when talking to upstreams
<jcastro> is that really bad bugs should be communicated to distros
<jcastro> you see this all the time on like planet gnome
<jcastro> "wow, we found a bad bug in gstreamer, distros should ship this fix: $url" or something
<jcastro> as you hang out and talk with upstreams
<jcastro> at some point they will have a critical bug that will need to be fixed
<jcastro> so usually you can take ownership of that, talk to the ubuntu maintainer, and communicate the needs that way
<jcastro> sometimes upstreams fix small bugs
<kfogel> dhasenan: thanks
<jcastro> and of course those are good
<kfogel> whhooops
<kfogel> dholbach: thanks
 * kfogel watches out for nick completion
<jcastro> but it can be frustrating to an upstream when the fix doesn't get into an SRU
<jcastro> it's just one of those things where the fix needs to be weighed with the risk
<dholbach> https://wiki.ubuntu.com/StableReleaseUpdates is pretty good at explaining what kind of fixes we want and which make sense
<jcastro> In general I think we do a good job here, but if an upstream still wants new crack in the distro, we have things like PPAs and backports
<jcastro> that's also an area where you can contribute
<jcastro> many ubuntu contributors set up and run PPAs as a service to upstreams for apps people love
<dholbach> http://people.canonical.com/~dholbach/cheatsheet.pdf should give you an overview over what to do in which case
<jcastro> that is highly encouraged, and a good way to learn packaging if you want to start the  road to becoming an ubuntu developer
<jcastro> we only have 5 minutes left, so let's talk about debian for  a bit
<dholbach> one of our most important upstreams is Debian
<dholbach> and we inherit a lot of packages and lots of great work from Debian developers
<dholbach> usually it works like this: if a package is unmodified in Ubuntu and we're before DebianImportFreeze (Check the release schedule again), it gets "synced" automatically
<dholbach> which means that the package in Ubuntu will get overwritten with the source that is in Debian right now (and rebuilt)
<dholbach> if it's modified in Ubuntu, we need to figure out if we can drop out changes (then we'll ask for a sync)
<dholbach> and if we can't drop our changes, we need to merge the changes semi-manually
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/Merging explains how the merging works and which tools we use
<dholbach> common scenarios for differences between Ubuntu and Debian are:
<dholbach>  - we're in different parts of our release cycle and we decide to ship a newer version
<dholbach>  - new improvements we want to try out in Ubuntu (launchpad integration of gnome apps, new indicators, new notifications, etc.)
<dholbach> and lots of other small things because of different things we support and not support
<dholbach> but generally the idea is: the more we can have in sync with Debian, the better
<dholbach> it means less merging, less maintenance hassle and a common code base to look at
<dholbach> so whatever is suitable in terms of patches to forward to Debian, we do forward
<dholbach> https://wiki.ubuntu.com/Debian/Bugs has more details on that
<jcastro> whew
<jcastro> that was alot of info!
<jcastro> and only one question, so either we were really great or really bad!
<jcastro> \o/
<dholbach> that's the great thing about working on a certain piece of software is you get to know: lots of users (and make them happy with fixes), the upstream maintainers, lots of great Ubuntu developers that work with you and maintainers of others distros too
<dholbach> you not only make the world a better place by working on making software better for everybody, but you also get to know a lot of great people AND learn something new :)
<dholbach> one page you should definitely bookmark is: https://wiki.ubuntu.com/Upstream/Adopt :)
<dholbach> any final questions?
<dholbach> jcastro: any final words? :)
<jcastro> nope, thanks for coming everyone!
<dholbach> thanks everybody - you ROCK!
 * ogasawara fades in
<dholbach> next up is Leann Ogasawara who will talk to us about "Kernel patches"!
<ogasawara> Hi Everyone!  Welcome to the Kernel Patches Session.
<ogasawara> My name is Leann Ogasawara and I'm a member of the Ubuntu Kernel Team.
<ogasawara> If you have any questions, please post them to #ubuntu-classroom-chat prefixed with QUESTION:
<ogasawara> One of the biggest issues we face as a team is the large volume of bug reports we receive against the kernel.
<ogasawara> One possible way to lend a helping hand is submitting patches to fix these bugs.
<ogasawara> Submitting a kernel patch might seem like a daunting task, but hopefully after today's session it won't seem so intimidating.
<ogasawara> There are five main items I'd like to cover in today's talk:
<ogasawara> 1) Choosing bugs to patch
<ogasawara> 2) Patch submission process
<ogasawara> 3) Walk through an actual example
<ogasawara> 4) Reasons for not applying a patch
<ogasawara> 5) Getting Help
<ogasawara> I should mention that the Ubuntu kernel team's ideal scenario is to have little to no divergence from the upstream linux kernel.
<ogasawara> If a kernel patch will benefit Ubuntu users, it'll likely benefit all.
<ogasawara> This is why it is important to make sure patches get submitted upstream.
<ogasawara> Also, keeping the delta we have between our kernel and the upstream kernel as small as we can makes it much much easier to maintain the kernel from our end.
<ogasawara> As such, the Ubuntu kernel team's preferred policy is for all patches to be submitted and accepted into the upstream kernel before pulling them into the Ubuntu kernel.
<ogasawara> So how does this happen?
<ogasawara> Let's begin with our first talking point.
<ogasawara> == Choosing bugs to patch ==
<ogasawara> Ideally we want to isolate good bug candidates that could easily be resolved if a patch were applied.
<ogasawara> A good approach might be to tackle the low hanging fruit first, ie bugs with patches already attached.
<ogasawara> Launchpad has the ability to search for kernel bugs with patches attached.
<ogasawara> https://bugs.edge.launchpad.net/ubuntu/+source/linux/+bugs?field.has_patch=on
<ogasawara> As I had mentioned previously, due to the large volume of bugs, there are times when bugs are filed with patches attached to fix an issue but they unfortunately get lost in the noise.
<ogasawara> If we have additional volunteers trying to keep and eye on these types of quick fixes, it would be much appreciated.
<ogasawara> Even just getting these types of bugs into a triaged state would be a great help.
<ogasawara> If anyone is interested in getting involved, ping me after the session and I'be be happy to help get you started.
<ogasawara> Many times we see a reporter will open a bug and mention the issue can be fixed with a patch that exists upstream alread.
<ogasawara> Since the patch is already upstream, it's a simple process for a kernel developer to cherry pick the fix back into the Ubuntu kernel.
<ogasawara> That is one example of how patches get pulled from the upstream kernel into the Ubuntu kernel.
<ogasawara> However, not all bugs with patches can be resolved so easily.
<ogasawara> Sometimes a bug will have a patch attached but the patch itself has not been submitted/applied upstream nor to the Ubuntu kernel.
<ogasawara> These are the types of patches we want to focus on getting merged upstream and back into the Ubuntu kernel, assuming they are a valid fix.
<ogasawara> It's helpful to inquire with the patch author about the nature of the patch.
<ogasawara> Is the patch just a workaround for the issue but does not address the root cause?
<ogasawara> Was the patch only meant for debugging purposes to isolate the issue?
<ogasawara> We have to keep in mind that not all patches will be the proper fix.
<ogasawara> If the patch is a band aid and not a proper fix, it shouldn't be applied.
<ogasawara> On the other hand, if the patch author just needs assistance with submitting the patch, hopefully the information I talk about next will help.
<ogasawara> If anyone ever has a situation where they have a question regarding a patch they've seen or personally written, please don't hesitate to contact the kernel team.
<ogasawara> We're usually in the #ubuntu-kernel IRC channel on FreeNode and obviously also closely watch the Ubuntu kernel team mailing list.
<ogasawara> I'd like to take a second here to pause and field any questions before we move onto discussing the patch submission process.
<ogasawara> If there are no questions, we'll just move right along . . .
<ogasawara> Navaneeth> QUESTION: Patches applied on ubuntu kernel are sent back to upstream?
<ogasawara> Navaneeth: indeed we actually strive to push the patch upstream first, before applying to Ubuntu
<ogasawara> Navaneeth: that might not always be the case so after each release, we review our delta from upstream and work to get the non-ubuntu specific patches pushed up
<ogasawara> == Patch Submission Process ==
<ogasawara> First we need to confirm the patch does indeed resolve the issue.
<ogasawara> If you yourself can confirm the issue is resolved with the patch, that's perfect.
<ogasawara> Otherwise, we need to work with whomever has reported the issue and have them confirm the patch fixes the problem.
<ogasawara> Once we have confirmation the fix is valid, we're ready to send the patch upstream.
<ogasawara> If the bug the patch fixes happens to be reported in Launchpad, for completeness sake, the patch can be uploaded as an attachment to the bug report.
<ogasawara> When uploading the patch, be sure to select the "This attachment is a patch" option.
<ogasawara> Now, lets go through preparing the patch to submit upstream.
<ogasawara> Upstream has this process clearly documented at the following link.
<ogasawara> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/SubmittingPatches
<ogasawara> I'll highlight some of the more important bits below . . .
<ogasawara> 1. Know who/where to submit the patch.
<ogasawara>    This can be done by examining the MAINTAINERS file in the linux kernel tree
<ogasawara>    http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=MAINTAINERS
<ogasawara> 2. Be sure to create the patch against the upstream kernel source, not the Ubuntu kernel source.
<ogasawara>    http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git
<ogasawara>    Note that some subsystems maintain their own git trees.
<ogasawara>    If this is the case, create the patch against the subsystem's tree.
<ogasawara>    The location of the subsystem's tree can also be found in the MAINTAINERS file
<ogasawara> 3. Clearly describe what the patch is fixing.
<ogasawara>    Also be sure to break large patches up into small logical pieces.
<ogasawara>    A good rule of thumb is each patch should fix one specific issue.
<ogasawara> 4. Be sure to note the version of the kernel the patch applies to.
<ogasawara>    When submitting a patch upstream, the patch should apply cleanly to the latest version of the upstream kernel available.
<ogasawara> 5. Make sure the patch adheres to the kernel's coding style.
<ogasawara>    http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/CodingStyle
<ogasawara>   If you run scripts/checkpatch.pl, this should quickly detect any coding style violations.
<ogasawara> 6. Make sure to maintain full provenance of the patch by signing off on the patch.
<ogasawara>    Signing off on the patch allows others to see the full history of who's written/reviewed the patch.
<ogasawara>    Signing off is done by simply adding the "Signed-off-by:" line to your patch.
<ogasawara> 7. Send the patch as plain text in the email.
<ogasawara>    Do not attach the patch.
<ogasawara>    It's quicker to review a patch that's already present in the body of the email rather than having to download and open an attachment.
<ogasawara>    Your email client should provide a way to inline the text directly from the patch file into the body of the email.
<ogasawara>    Additionally, plain text allows others to respond and annotate their feedback directly in the context of the patch.
<ogasawara>    Be careful if you just cut and paste as this might have negative affects like switching tabs to spaces and therefore violating the kernel coding style.
<ogasawara>    Also, be careful that your email client doesn't mangle the patch by line wrapping the patch.
<ogasawara> 8. Prefix the subject of the email with "[PATCH]"
<ogasawara>    This allows people to immediately know this is a patch being submitted.
<ogasawara> 9. Don't give up.  Be persistent :)
<ogasawara>   If the patch is not immediately applied there are usually reasons.
<ogasawara>   Take suggestions constructively and fix up the patch if necessary.
<ogasawara>   Patches might go through a few rounds of reviews and iterations before being accepted.
<ogasawara>   If there is no response or feedback after submitting a patch, don't be afraid to submit it again.
<ogasawara> Eventually the patch should hopefully receive the required Ack's from upstream and get applied.
<ogasawara> Once the patch is applied upstream it will automatically make it's way into the Ubuntu kernel upon the next rebase.
<ogasawara> If the patch should be considered for a Stable Release Update to a previous kernel release, the patch must come via the upstream stable tree.
<ogasawara> In order for a patch to be accepted into the upstream stable tree, the patch must meet certain criteria.
<ogasawara> The patch should be relatively small in size (less than 100 lines of code).
<ogasawara> The patch must fix a real issue, no hypothetical use case fixes.
<ogasawara> The patch must already exist in Linus' tree upstream.
<ogasawara> For a full list of criteria, please refer to the following:
<ogasawara> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/stable_kernel_rules.txt
<ogasawara> Submitting a patch to the upstream stable tree is as easy as sending the patch in an email to stable at kernel.org
<ogasawara> Alternatively, when originally submitting a patch upstream, one can add a "CC:" line under their "Signed-off-by:" line.
<ogasawara> For a more detailed explanation of sending a patch to upstream stable, ssee the stable_kernel_rules.txt file referred to above.
<ogasawara> Once a patch has been submitted upstream, I usually like to add a reference to the upstream thread from the bug report.
<ogasawara> This allows anyone wanting to track the current status of the patch to read and follow along with the thread upstream.
<ogasawara> Again, if any patch author needs helps submitting a patch upstream, don't hesitate to ask those on the kernel team for help.
<ogasawara> I'm going to pause once more to field any questions.
<ogasawara> mirsal> QUESTION: What about using git to produce patches ?
<ogasawara> mirsal: of course, that's an excellent way to generate your patch
<ogasawara> mirsal: for those not familiar with git, the command it 'git format-patch'
<ogasawara> Navaneeth> QUESTION: Will this session covers debugging kernel source code and fixing a bug? If not, is there any helpful materials available online?
<ogasawara> Navaneeth: I'm going to walk through and example of a bug that was fixed and the patch pushed upstream
<ogasawara> Navaneeth: it likely won't go as in depth into the debugging process as you'd like, I'll point you to helpful materials after the session
<ogasawara> vishalrao_vbox> QUESTION: Do you @ubuntu have a hardware testing lab of sorts? For example can you test SSD support as you can see LP #502219 ?
<ogasawara> vishalrao_vbox: we do have access to hardware we maintain in a lab
<ogasawara> vishalrao_vbox: I do not know off the top of my head about the hw in the bug you note, but I'll take a look after the session
<ogasawara> any other questions?
<ogasawara> ok, we'll move along
<ogasawara> == Example of Submitting a Patch Upstream ==
<ogasawara> I thought it would be a good idea to walk through an actual bug whose patch was sent upstream.
<ogasawara> Lets take a look at https://bugs.launchpad.net/ubuntu/+source/linux/+bug/366682
<ogasawara> This bug was about a system hanging on reboot.
<ogasawara> This particular bug was fixed by creating a patch to add a reboot quirk for this particular system.
<ogasawara> This patch would be beneficial not only for Ubuntu users but all users who had this hardware.
<ogasawara> As such, this was a good patch candidate to send upstream.
<ogasawara> From reading the report, you can see the original bug reporter was able to confirm the patch fixed the issue.
<ogasawara> I, the submitter, carefully read the upstream SubmittingPatches document and made sure to adhere to the items outlined in that document.
<ogasawara> Let's look at the actual email I posted:
<ogasawara> http://lists-archives.org/linux-kernel/27263461-x86-asus-p4s800-reboot-quirk.html
<ogasawara> 1) I tried to make sure I had a clear and well written description.
<ogasawara>    I made sure to clearly state what the issue was and what it is the patch was fixing.
<ogasawara>    I provided system information to help identify hardware that this patch would impact.
<ogasawara>    I made sure to note that the bug reporter had tested and confirmed the patch resolves the issue.
<ogasawara>    Additionally, I explained how and why it is I crafted the patch the way I did.
<ogasawara> 2) I made sure to follow the upstream kernel coding style
<ogasawara> 3) As you can see in the link, I inlined the patch within the body of the email
<ogasawara> 4) "[PATCH]" was prefixed in the subject line of the email
<ogasawara> 5) I examined the MAINTAINERS files to see that I should send the patch to the three subsystem maintainers (Thomas Gleixner, Ingo Molnar, H. Peter Anvin) and the x86 mailing list.  I also CC'd LKML for good measure.
<ogasawara> 6) I also saw from the MAINTAINERS file that they had their own linux-2.6-x86.git tree so I made sure my patch cleanly applied to the tip of this tree.
<ogasawara> 7) As a final task, I made sure I signed off on the patch by adding my "Signed-off-by:" line.
<ogasawara> The one thing that I failed to do was mention the version of the kernel this should be applied to.
<ogasawara> :/
<ogasawara> Thankfully the patch was accepted and applied even with this slight oversight.
<ogasawara> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4832ddda2ec4df96ea1eed334ae2dbd65fc1f541
<ogasawara> ^^ there's the patch in it's upstream form
<ogasawara> Additionally the maintainer CC'd upstream stable when applying this patch.
<ogasawara> As a result we have already had the patch come back to Karmic via the 2.6.31.9 upstream stable kernel.
<ogasawara> This is the typical scenario of how a patch goes upstream first and then makes it's way back into the Ubuntu kernel.
<ogasawara> There are obviously exceptions that are sometimes made.
<ogasawara> If a patch is for example a Critical bug fix, the Ubuntu kernel team may opt to temporarily carry the patch while it's going through the upstream submission process.
<ogasawara> The patch must still adhere to the usual patch submission policy and procedures.
<ogasawara> There are also cases where the patch is Ubuntu specific and therefore does not make sense being submitted upstream.
<ogasawara> For example, https://bugs.launchpad.net/ubuntu/+source/linux/+bug/393517
<ogasawara> This was an Ubuntu specific issue where we failed to completely remove a driver.
<ogasawara> If the patch is an Ubuntu specific patch, just send it to the Ubuntu kernel team mailing list.
<ogasawara> Additionally opening a bug in Launchpad to track the issue would also be good (and required when we go to fix the issue)
<ogasawara> Let's quickly pause again here for questions.
<ogasawara> Otherwise I'll keep going
<ogasawara> OK, lets keep moving
<ogasawara> == Reasons for not applying a patch ==
<ogasawara> If it isn't good enough for upstream it likely isn't good enough for us.
<ogasawara> That's not 100% true, but the basic idea is that if the patch is not in upstream, that generally means the patch is not likely ready for mass consumption.
<ogasawara> Ubuntu's kernel is not a testing ground for experimental features.  We need stability.
<ogasawara> As I mentioned earlier, maintaining patches in our tree is not an easy task if we have a large delta of divergence between our tree and the upstream tree.
<ogasawara> If we have a small delta to rebase, it makes maintaining the kernel much simpler.
<ogasawara> Also, if the code has deviated from what's upstream, it's hard to get any additional help from the upstream developers to debug any issues that may arise.
<ogasawara> There could also be security repercussions by carrying custom patches that are not upstream.
<ogasawara> The patch could contain potential security vulnerabilities, which we would likely never hear about since the code isn't part of the stock vanilla kernel and routinely being examined.
<ogasawara> Patching stock code could also introduce bugs.  Adding bugs is bad.
<ogasawara> It also might be that the patch is not against a new enough kernel.
<ogasawara> The issue and fix may not be relevant against the actively developed kernel.
<ogasawara> We also have to be careful about patches that may have a broad reaching impact.
<ogasawara> Even though a patch may fix an issue for one person, it may regress 10 others.
<ogasawara> Finally, the simplest explanation for why a patch might not be applied is that the patch might not be a legitimate patch which should be carried.
<ogasawara> Like I mentioned earlier, band aid's and hacky workarounds will not be applied wholesale.
<ogasawara> So what happens now if a patch was not accepted???
<ogasawara> There's usually a good reason why a patch wasn't accepted and it's usually explained in a response to the patch submission email.
<ogasawara> If there are suggestions for improvements that need to be completed before a patch will be accepted, make the improvements and resubmit.
<ogasawara> Most patches go through this type of review process and will need to be modified and re-submitted a few times before they are accepted.
<ogasawara> As I mentioned before, don't give up.
<ogasawara> In the end, there will however still be patches that never make it upstream nor into Ubuntu.
<ogasawara> An alternative if someone so chooses would be to roll their own kernel with the patch applied.
<ogasawara> Anyone should be able to do this by following the kernel compile guide
<ogasawara> https://help.ubuntu.com/community/Kernel/Compile
<ogasawara> Note that building and booting your own custom kernel is done purely at the users own risk
<ogasawara> Next week we're looking to clean up this Kernel/Compile guide to be more user friendly and easier to follow.
<ogasawara> I was going to pause once more in case there are any additional questions, otherwise I'll start to wrap it up
<ogasawara> vishalrao_vbox> QUESTION: after you submit a patch, how do you get notified whether it was accepted or rejected?
<ogasawara> vishalrao_vbox: typically you've receive an email from the maintainer that the patch has been applied
<ogasawara> vishalrao_vbox: otherwise they'll likely send feedback on what needs to be fixed up with the patch
<ogasawara> Navaneeth> QUESTION: Do you add new features to Ubunutu kernel without upstream having it? If yes, can you list out a feature like that?
<ogasawara> Navaneeth: we typically try to refrain from doing such a thing
<ogasawara> Navaneeth: again, it's that whole pain point of maintaining something out of tree
<ogasawara> anything else?
<ogasawara> vishalrao_vbox> QUESTION: what is this "SAUCE" we see mentioned in some ubuntu kernel changelogs?
<ogasawara> vishalrao_vbox: those are the Ubuntu specific patches
<ogasawara> vishalrao_vbox: those ones will likely never go back upstream as they don't make sense to go back upstream
<ogasawara> vishalrao_vbox> ogasawara: S.A.U.C.E. stands for? (acronym?)
<ogasawara> heh, I don't think it's actually an acronym in our usage of it, if it is I don't know what it stands for :)
<ogasawara> my understanding it implies it our "special sauce" patches
<ogasawara> anything else?
<ogasawara> vishalrao_vbox> yes, i figured, i was wondering if its all uppercase for a reason :)
<ogasawara> it's uppercase so it's easy for us to spot and search against in the logs
<ogasawara> we try to examine all our sauce patches each release and figure out why we have them and if they are still needed
<ogasawara> ok, lets move on to the last item
<ogasawara> == Getting Help ==
<ogasawara> I'd like to remind anyone that if you need assistance or have any questions regarding a patch, need a patch to be reviewed, or need help getting the patch submitted upstream, the Ubuntu kernel team would be happy to help.
<ogasawara> Please contact us through the kernel team mailing list or in the #ubuntu-kernel IRC channel on FreeNode.
<ogasawara> If you need to know the kernel team mailing list address, refer to our wiki.ubuntu.com/KernelTeam
<ogasawara> Also, most of what we covered today I'd previously documented at https://wiki.ubuntu.com/KernelTeam/KernelPatches
<ogasawara> I've also started graphing some trends for bugs with patches attached:
<ogasawara> http://qa.ubuntu.com/reports/ogasawara/csv-stats/bugs-with-patches/linux/
<ogasawara> It would be great to see if we can drive the number of bugs with patches attached down to 0.
<ogasawara> We've already made this a focus of previous kernel team bug days, but any additional help is appreciated.
<ogasawara> And one last shameless plea. . . if anyone is interested in getting involved but just doesn't know where to start, let me know!
<ogasawara> I'll be glad to help get you started.
<ogasawara> Anyways, thanks again to all for listening.  I'll finish to fielding the remaining questions.
<ogasawara> as time permits :)
<ogasawara> vocx> QUESTION: what percentage of bug reports filed against the kernel are invalid? I'm under the impression that a lot of new users incorrectly file bug reports against the kernel, which contributes to much "noise".
<ogasawara> vocx: it is true that the kernel does get a large amount of bugs that are not valid against the kernel, but they are still valid in a sense that it's an issue against a different package
<ogasawara> vocx: I can't quote an exact number unfortunately
<ogasawara> vocx: but we do appreciate the community triage help on making sure the bug finds it's way to the proper package
<ogasawara> vocx> QUESTION: what percentage of patches are rejected?
<ogasawara> vocx: I'd say a very small percentage of patches are outright rejected
<ogasawara> vocx: probably less than 5%?
<ogasawara> vocx: If an issue is legitimate it can stay open
<ogasawara> vocx: patches are always welcome :)
<ogasawara> vocx> QUESTION: how much experience do you need to be able to submit a patch to the Linux-freaking-Kernel?
<ogasawara> vocx: you will need to have a general understanding of the kernel to know that the patch is correct
<ogasawara> vocx: but it's not rocket science :)
<ogasawara> <ecm123> QUESTION: I've heard the Nouveau driver was going to be included in in lucid's kernel, however lucid will not use the 2.6.33 kernel in which this driver is included by default, does that mean the ubuntu kernel team will maintain the driver all by itself in lucid?
<ogasawara> ecm123: yes there are talks/works to have this backported and available
<ogasawara> anything else?
<ogasawara> 1min . . .
<ogasawara> Navaneeth> QUESTION: As promised, can we have the online materials for debugging kernel source?
<ogasawara> of course, give me a few minutes to gather the links and I'll post it to ubuntu-classroom-chat so not to run over into the next session
<ogasawara> ok, that's it for me
<ogasawara> thanks everyone!
 * ogasawara hands off to bdmurray 
 * bdmurray takes the mic
<bdmurray> Hi, my name is Brian Murray and I'm a member of the Ubuntu QA team.
<bdmurray> I'm here today to talk about how you can get higher quality bug reports about packages that you care about.
<bdmurray> One way you can do this is by writing an apport hook for your particular package.
<bdmurray> Let's start off by talking about what apport is.
<bdmurray>  Apport is a system which intercepts crashes right when they happen, in development releases of Ubuntu, and gathers useful information about the crash and the operating system environment.
<bdmurray> Additionally, it is used as a mechanism to file non-crash bug reports about software.
<bdmurray> This allows us to define what software we want to receive bug reports about and what information will be included in those bug reports.
<bdmurray> Let's look at a sample apport bug report - http://launchpad.net/bugs/416701.
<bdmurray> The bzr package does not have an apport hook but some useful information is still collected.
<bdmurray> We have the architecture, the release being used, the package version and the source package name.
<bdmurray> Additionally, in the Dependencies.txt attachment we have information about the versions of packages upon which bzr depends.
<bdmurray> Are there any questions so far?
<bdmurray> Okay, so while all of that can be helpful an apport hook for a package allows us to gather specific information for a package.
<bdmurray> For example, consider a bug report about usplash.  usplash has a dedicated configuration file, located at "/etc/usplash.conf", and this would be something quite helpful in debugging a usplash bug report but not very useful in other package bug reports.
<bdmurray> Apport looks for package hooks in "/usr/share/apport/package-hooks/" on the local system for ones named after the package for which they will be used.
<bdmurray> Looking in "/usr/share/apport/package-hooks/" lets take a look at the usplash hook - with the filename usplash.py.  I've also pastebin'ed the hook to http://pastebin.ubuntu.com/364661/.
<bdmurray> The package hooks are written in python.
<bdmurray> We can see that the usplash.py hook imports the apport.hookutils module - "from apport.hookutils import *".
<bdmurray> hookutils is a collection of readymade and safe functions for many commonly used things.  There are functions for attaching a file's contents, getting a command's output, grabbing hardware information and much more.
<bdmurray> This package hook is using 'attach_file_if_exists' and 'attach_hardware'.  'attach_file_if_exists' is pretty self explanatory but what does attach_hardware include?
<bdmurray> Let's look at the hookutils module to find out.  You can use "python -c 'import apport.hookutils; help(apport.hookutils)'" or you can view it using codebrowse - http://bazaar.launchpad.net/~apport-hackers/apport/trunk/annotate/head%3A/apport/hookutils.py.
<bdmurray> The 'attach_hardware' function starts at line 72.
<bdmurray> As we can see it adds a wide variety of hardware information to a bug report which can be quite useful for some packages like the kernel and usplash!
<bdmurray> Having the apport package hooks has reduced the amount of bug "ping pong" necessary to get information out of a bug reporter and having these convenience functions reduces the amount of work it takes to write a package hook.
<bdmurray> In addition to 'attach_hardware' and 'attach_file_if_exists' other functions include: 'attach_conffiles', 'attach_dmesg', 'attach_alsa', 'command_output', 'recent_syslog', 'pci_devices' and 'attach_related_packages'.
<bdmurray> In the event that you have a group of packages that would benefit from a shared convenience function, please file a bug about apport and include the function you'd like added.
<bdmurray> Are there any questions so far?
<bdmurray> So, back to the usplash hook, we can see that the usplash configuartion file is added like so "attach_file_if_exists(report, '/etc/usplash.conf', 'UsplashConf')".
<bdmurray> This means that a bug reported about usplash using apport should have an attachment named 'UsplashConf' and it will contain the reporter's usplash.conf file.
<bdmurray> Looking at http://launchpad.net/bugs/393238 we can see this actually isn't the case.
<bdmurray> Because usplash.conf is only 4 lines it ends up getting put into the bug description.  However, most items end up getting added as attachments in Launchpad.
<bdmurray> For example, lspci-vnvn.log or BootDmesg.txt
<bdmurray> Let's take a look at another package hook for apport.
<bdmurray> The totem hook is particularly interesting as it is utilizes interactive questions - which is a new feature in apport.
<bdmurray> You can see how this works by executing "ubuntu-bug totem", but please don't actually report the bug! ;-)
<bdmurray> More detailed information regarding how to use the hook user interface can be found in the python help for the available functions: "python -c 'import apport.ui; help(apport.ui.HookUI)'".
<bdmurray> The totem hook asks questions and runs tests to determine if the bug report is related to alsa, pulseaudio or codecs in gstreamer.
<bdmurray> It then sets the affected package appropriately.
<bdmurray> The interactive hook greatly reduces the amount of triaging work required (as questions are asked before the bug is reported instead of after) and helps make the initial bug report much more complete.
<bdmurray> Oh, here's a link to the totem hook - http://pastebin.ubuntu.com/364672/
<bdmurray> Are there any questions regarding the material I've covered so far?
<bdmurray> Now that we know a lot of what hooks can do, lets talk about how to write one.
<bdmurray> After the Karmic Ubuntu Developer Summit I compiled a list of packages that had recently received a fair number of bug reports and subsequently might benefit from an apport package hook.
<bdmurray> That list can be found at https://wiki.ubuntu.com/QATeam/Specs/IncreaseApportCoverage.
<bdmurray> < yltsrc> QUESTION: where i can find hooks for all default ubuntu
<bdmurray>                 applications?
<bdmurray> yltsrc: they will be installed on your system in "/usr/share/apport/package-hooks".  Each hook is distributed with the package it is used for instead of being distributed with apport.
<bdmurray> This allows developers to add hooks to their own package and not having modify 2 packages.
<bdmurray> < qense> QUESTION: Is there a nice table showing what packages have and
<bdmurray>                what haven't got Apport hooks?
<bdmurray> qense: there is a likely incomplete list at https://wiki.ubuntu.com/Apport/PackageHooks
<bdmurray> I'll update it soon though
<bdmurray> Back to writing an apport hook - Let's take rhythmbox from that list and write a simple apport hook for it.
<bdmurray> The easiest way of writing and testing a package hook is to put one in "/usr/share/apport/package-hooks" named after the appropriate package.
<bdmurray> I'll create one called "source_rhythmbox.py".
<bdmurray> We'll import hookutils from apport and os, then in the add_info function we'll add the rhythmdb.xml file, if it exists, and gconf settings for rhythmbox.
<bdmurray> The hook as written looks like http://pastebin.ubuntu.com/262850/.
<bdmurray> Its really only 2 lines of code but now we'll have some potentially useful information in every rhythmbox crash or bug report,
<bdmurray> After I've put this file in "/usr/share/apport/package-hooks" I can test it using "ubuntu-bug".
<bdmurray> After running "ubuntu-bug rhythmbox", apport presents the user with a dialog asking them if they want to send the problem report.
<bdmurray> In this dialog box we can see the complete contents of the report and if our collected information was attached.
<bdmurray> I see a key named rhythmdb.xml which contains the same information as the one on my system and a key named GconfRhythbox which contains my gconf settings for rhythmbox.
<bdmurray> That's really all there is to writing and testing an apport hook!
<bdmurray> In the event that you write a hook for a package that you can not upload or need help getting sponsored, please report a bug about the package missing a hook.
<bdmurray> Then add the hook as a patch (or a merge proposal) and subscribe me, brian-murray, and the appropriate sponsor's team to the bug report.
<bdmurray> I'll work to ensure that it gets uploaded.
<bdmurray> Another thing to consider is that a hook isn't just useful for bug reports going forward,
<bdmurray> it could actually help you out with your existing bug reports!
<bdmurray> For example, if you write a hook for your package right now and get it included in Lucid you could then have bug reporters execute 'apport-collect' and the number of the bug they've reported.
<bdmurray> This will then use the package hook to include the information you want in the already reported bug.
<bdmurray> Are there any more questions about writing apport package hooks?
<bdmurray> Another way to get more detailed bug reports is by setting the bug filing guidelines for packages in Launchpad.
<bdmurray> These are presented when someone files a bug via the web interface at Launchpad.
<bdmurray> For example if you were to file a bug about ffmpeg at https://bugs.edge.launchpad.net/ubuntu/+source/ffmpeg/+filebug ... you would be presented with the package's bug filing guidelines - http://people.canonical.com/~brian/tmp/package-bug-filing-guidelines.png.
<bdmurray> This particular package's bug guidelines asks for specific information that would be rather challenging to gather with an apport hook.
<bdmurray> The bug reporting guidelines for ffmpeg can be set at https://edge.launchpad.net/ubuntu/+source/ffmpeg/+edit.  The url will be similar for any other package
<bdmurray> In the event that you don't have the ability to set the guidelines for a package you care about for some reason, please let me know and I'll be happy to get them set for you.
<bdmurray> I see there are some questions!
<bdmurray> < barcc> QUESTION: can i use apport hook for a project not included in ubuntu but hostet on launchpad?
<bdmurray> barcc: possibly.  you might look at the ubuntuone-client hook as an example.
<bdmurray> In particular the following lines
<bdmurray>     if not apport.packaging.is_distro_package(report['Package'].split()[0]):
<bdmurray>         report['ThirdParty'] = 'True'
<bdmurray>         report['CrashDB'] = 'ubuntuone'
<bdmurray>  < vocx> QUESTION: are debug symbols required to be installed before calling apport? what are debug symbols used for?
<bdmurray> No they are not required, an incomplete (w/o debugging symbols) is uploaded to Launchpad and the the retracer takes care of installing the debug symbols and retracing the bug for you
<bdmurray> You could install the debugging symbols your self if you wanted to manually run gdb and get some detailed output about a crash
<bdmurray> < barcc> QUESTION: is it possible to test apport hooks against lauchpad staging?
<bdmurray> barcc: I believe so. If you look at /etc/apport/crashdb.conf there might be a line like #'staging': True
<bdmurray> You could comment that out and then report a bug.
<bdmurray> However, I've found the dialog that apport presents before filing a bug to be sufficient
<bdmurray> Are there any more questions?
<bdmurray> If you need any further help the apport code is very well documented and there are a few wiki pages about it - https://wiki.ubuntu.com/Apport and https://wiki.ubuntu.com/Apport/DeveloperHowTo.  Additionally, you can find me in the ubuntu-bugs channel.  Thanks!
<bdmurray> Okay, thanks everyone and have a great day!
<jelmer> Thanks!
<jelmer> Hello everybody!
<jelmer> I'm Jelmer Vernooij, one of the Bazaar developers and an occasional contributor to Debian and Ubuntu
<jelmer> I'll be leading the next class about packaging with Bazaar
<jelmer> For this class you will need the bzr-builddeb package
<jelmer> Today we'll have a look at packaging branches on Launchpad, building packages from a branch and making changes to a packaging branch.
<jelmer> Is everybody here familiar with Bazaar, or should I give a quick introduction to it as well?
<jelmer> Great, let's dig into obtaining a packaging branch
<jelmer> As of a couple of releases ago, Launchpad supports packaging branches
<jelmer> You can find the packaging branches for a particular package by clicking on "Branches" when viewing a source package on Launchpad
<jelmer> For example, https://code.edge.launchpad.net/ubuntu/+source/tdb contains the packaging branches for the 'tdb' package
<jelmer> These branches are different from the upstream branches that live at http://code.launchpad.net/<project>, and contain upstream
<jelmer> QUESTION: can you clarify what a package branch is, and how it's different from a regular branch
<jelmer> A package branch is a bzr branch that contains a source package, i.e. the upstream including any changes that have been made to it and the debian/ directory
<jelmer> Other than the contents there isn't anything special about a packaging branch
<jelmer> https://code.edge.launchpad.net/ubuntu/+source/tdb lists all of the Ubuntu packaging branches, but James also imports the Debian archive
<jelmer> for example, you can have a look at https://code.edge.launchpad.net/debian/+source/tdb which contains the Debian packaging branches
<jelmer>  QUESTION: how do you keep the code in a project branch and it's associated package branch in sync?
<jelmer> You can use the "bzr merge-upstream" package to merge in new upstream tarballs
<jelmer> This command will also take care of setting the right tags, etc
<jelmer> But before we get ahead of ourselves..
<jelmer> Let's check out the tdb package and try to build it
<jelmer> If you're familiar with bzr this should be no surprise to you:
<jelmer> $ bzr branch lp:ubuntu/tdb tdb-lucid
<jelmer> After this, you should be able to go into the branch and run "bzr builddeb" (or "bzr bd" for short)
<jelmer> this will export the current working tree and try to build it
<jelmer> QUESTION: What is the standard naming convention of a bzr ? lp:~ for some and it's lp:<version>/<project> for some..
<jelmer> For upstream branches, it is always ~OWNER/PROJECT/NAME
<jelmer> for packaging branches, it is ~OWNER/DISTRO/SERIES/PACKAGE/NAME
<jelmer> but there are some abbreviated names available - if SERIES is the development series, you can get by by just specifying the DISTOR and the PACKAGE
<jelmer> QUESTION:is there a way to search the lp bzr from cli?
<jelmer> There is no way to query the lists of branches on Launchpad using the bzr cli at the moment
<jelmer> Mainly because nobody has had the time to add it yet, patches to add such support would certainly be welcome :-)
<jelmer> (It should also be possible to run "bzr bd lp:ubuntu/tdb", but I haven't tried that in a while)
<jelmer> now that we've built the package, let's have a look at making some changes
<jelmer> The idea is that in the future it will be possible to upload a new version of package simply by pushing to lp:ubuntu/<packagename>
<jelmer> we're not quite there yet, at the moment you will still have to manually build the sourcepackage and upload it.
<jelmer> (upload it using dput, that is)
<jelmer> There are importer scripts, run by james_w, that update lp:ubuntu/<package> to match whatever has been uploaded using ftp.
<jelmer> QUESTION: my build failed because it couldn't sign the package
<jelmer> you can use "bzr bd -- -uc -us" to skip the signing, as I assume most of you won't have access to my private GPG key ;-)
<jelmer> QUESTION: Do ubuntu-stable-release updates work the same way, except one proposes a merge instead of attaching a diff to a bug?
<jelmer> I'm not familiar with the ubuntu-stable-release process, can somebody else tell perhaps?
<jelmer> QUESTION: If I want to create a new package branch for a package not yet in Ubuntu, where should I put it?
<jelmer> That's a good question - at the moment it is not possible to push a new branch for a package that doesn't exist in Ubuntu yet
<jelmer> So at the moment you will have to wait until the first version of your package has been uploaded before you can push your branches
<jelmer> Supporting pushing before the upload is something that is on the todo list of the launchpad developers.
<jelmer> Let's have a look at making a change and preparing an upload.
<jelmer> Let's make a dummy change, perhaps fixing the outdated docs?
<jelmer> $ echo "Don't panic." > docs/README
<jelmer> Next, we should of course update the changelog:
<jelmer> $ dch -i "Fix the documentation. "
<jelmer> When we would like to commit this change, the only thing we have to do is run "debcommit"
<jelmer> $ debcommit
<jelmer> debcommit will create the commit in Bazaar and will automatically figure out the correct commit message based on the changes to the changelog
<jelmer> Next, we should be able to build the source package that we'd like to upload
<jelmer> e.g. "bzr bd -S" (-S for source package)
<jelmer> QUESTION: why is debcommit separate from the bzr- builddeb commands?
<jelmer> debcommit is part of the debian developer scripts, and works for a variety of version control systems
<jelmer> in newer versions of bzr-builddeb you can also use just "bzr commit"
<jelmer> and bzr will fill in a suggested commit message, similar to the one debcommit uses
<jelmer> once you have uploaded the package and are happy with it, you should tag the version in bzr by running "bzr mark-uploaded"
<jelmer> "bzr tags" should list all of the existing tags
<jelmer> the tags should all you to easily navigate all of the versions of a package using bazaar
<jelmer> An easy way to browse the history is by using "bzr viz" from the bzr-gtk package
<jelmer> Another command that is provided by the bzr-builddeb package is "bzr import-dsc"
<jelmer> This command allows you to import existing tarballs that have been published in the past
<jelmer> it is the main engine behind the importer scripts that create the branches owned by ~ubuntu-branches
<jelmer> bzr-builddeb also includes two commands for merging changes into your packaging branch: import-upstream and import-package
<jelmer> import-upstream allows you to import a new upstream version into your package - you specify a tarball and a version string and it will take care of updating your packaging branch and update a new entry to the debian changelog
<jelmer> s/update/add/
<jelmer> and s/import-upstream/merge-upstream/, obviously - sorry
<jelmer> merge-package allows you to merge from another packaging branch
<jelmer> for example, if you need to merge changes from a debian packaging branch you can use merge-package
<jelmer> among other things, this will take care of merging debian/changelog in a smarter way than "bzr merge" does
<jelmer> Is everybody keeping up so far?
<jelmer> merge-package should no longer be necessary after the next bzr release, when "bzr merge" will just Do The Right Thing.
<jelmer> That concludes what I wanted to talk about - are there any more questions or would you like me to expand on anything?
<jelmer> QUESTION: I noticed multiple .deb packages were made, does a package branch create more than one package?
<jelmer> A package branch is like a versioned source package - like a source package multiple binary packages can be created from it
<jelmer> QUESTION: are there some good resources for someone new to debian packaging to better understand the structure and process?
<jelmer> You might want to read the log from the getting started session: https://wiki.ubuntu.com/MeetingLogs/devweek1001/GetStarted
<jelmer> There are also some good resources on the wiki and in the Debian developer corner
<jelmer> QUESTION: years ago, I think I read 'bazaar' and 'bzr' were two different, closely related programs, maybe forks. Is this true nowadays? Is 'bazaar' exactly the same as 'bzr'?
<jelmer> The bazaar project has had two different incarnations: "baz" (written in C, derived from arch) and "bzr" (written in Python, from scratch)
<jelmer> baz used to own the package name "bazaar" but has been removed from the archive now, "bzr" is the current app that we work on. The "bzr baz-import" command can import from old repositories.
<jelmer> (The developers that used to work on baz all work on bzr these days)
<jelmer> Any other questions? Feature requests? Rotten tomatoes?
<jelmer> QUESTION: unrelated, but is there a bzr plugin like mercurial queues?  I know about loom, but it doesn't let change the order or patches, etc
<jelmer> There is also bzr-pipeline, which is similar to but not entirely unlike looms.
<jelmer> I'm not sure if it supports reordering of patches, but you might want to check it out.
<jelmer> Thanks for your attention, happy hacking!
 * kfogel claps for jelmer
<kfogel> AFAIK, I'm teaching the next class.  Should I wait for some official signal to start? :-)
<jelmer> Thanks Karl :-)
<jelmer> I don't think there is a chair at the moment
<kfogel> jelmer: did dholbach or someone lead you in?  (I don't see any record of it...)
<jelmer> The next speaker up is Karl Fogel; he works on Launchpad and will introduce you to the wonderful world of Launchpad development!
<kfogel> Indeed!
<kfogel> Thank you, Jelmer.
<kfogel> Hi, everyone.  To start with, I am by no means the world's greatest expert in lp development.
<kfogel> I have only recently started doing it.
<kfogel> That said, I'm happy to help you get started too -- at least it's fresh in my mind!
<kfogel> :-)
<kfogel>   The intended audience is people who use Launchpad -- especially Ubuntu maintainers, but not limited to them -- and see things they might want to improve in Launchpad.  Some users who have already contributed to Launchpad are listed here:
<kfogel> https://dev.launchpad.net/Contributions
<kfogel> You too can be listed on that page :-).
<kfogel> (That list is automatically updated, so if you hack Launchpad, your name will eventually show up there too.)
<kfogel> For this class, you should have a web browser open.  You should have a little familiarity with Bazaar or some other decentralized version control system, plus basic comfort with Python and HTML -- but you do not need to be an expert in any of these things.
<kfogel> I hope that by the end of the session you will feel like you can contribute an improvement to Launchpad whenever you see something that needs fixing.
<kfogel> This isn't going to be a write-a-change-in-realtime kind of session, because there's too much to tell you about and I want to keep things moving.  Instead, the idea is that you would keep the transcript of this session around, and come back to it later for a closer look (especially at the examples) if/when you're ready to start writing your own changes.
<kfogel> Note that much of whath I say here will be stuff you can also find in the dev.launchpad.net wiki.  But the wiki can be a little daunting.  I hope this narrative presentation will give a useful overview of how things go.
<kfogel> GETTING LAUNCHPAD
<kfogel> You may want to start downloading the Launchpad source code if you don't have it already (although it's not really necessary for what we're going to talk about today, it's just good to have so you can explore around).
<kfogel> Now, normally, the "right" way to obtain the Launchpad source code is to follow the instructions at https://dev.launchpad.net/Getting .
<kfogel> But that's actually a somewhat non-trivial process, and involves running a script (I'll explain more later).  So for now, if you just want to get the code fast, so you can explore it during this session, you can download some pre-packaged, compressed Bazaar repositories I've made for you :-).  (But note that when you actually start hacking on Launchpad, you'll want to go back and follow the instructions at https://dev.launchpad.ne
<kfogel> t/Getting .)
<kfogel> So...
<kfogel> To avoid overload an any one server, let's do it this way: if your family name starts with the letters "A-M", you can start the download from here:
<kfogel> http://www.red-bean.com/kfogel/lp-hacking/lp-repos.tar.gz
<kfogel> And if your family name starts with the letters "N-Z", get it from here:
<kfogel> http://people.canonical.com/~kfogel/lp-hacking/lp-repos.tar.gz
<kfogel> (How do you like my load-balancing algorithm?  I'm thinking of patenting it!)
<kfogel> Just kidding.  I sure hope you're all on slow connections, though :-).
<kfogel> Anyway, when you unpack it with
<kfogel>     tar zxvf lp-repos.tar.gz
<kfogel> you'll get a new subdirectory named lp-repos, and inside that will be a .bzr subdirectory and a branch named "devel".  "devel" is where the Launchpad sources are.  To actually build and run Launchpad, you need a bunch of other dependencies -- all of which is described at (you guessed it) https://dev.launchpad.net/Getting .
<kfogel>  
<kfogel> At this point, I will pause, both for questions, and so people who want to can start download
<kfogel> downloading.
<kfogel> Note it is not really necessary to have the sources for this talk.  I will give you pointers to all examples.
<kfogel> Anyone there? :-)
 * kfogel waits
<kfogel> (or say something in #ubuntu-classroom-chat if you can't speak here)
<kfogel> Heh.  I'll keep going, since the transcript will be useful.  If anyone has a question at any point, please just speak up here or in #ubuntu-classroom-chat.
<kfogel> RUNNING A LOCAL DEVELOPMENT LAUNCHPAD INSTANCE
<kfogel> Basically, do what https://dev.launchpad.net/Running says .  I won't actually try to get your instance running during this class, since there are so many people and we have other stuff to cover.  But do note a couple of things:
<kfogel> At one point in the setup, you run a script as root.  Yes, that's terrible and awful.  But you can look at the script first :-).  The reason to do that is that a launchpad development instance runs on your local box but using the hostname "launchpad.dev" -- to test stuff, you'll point your browser at URLs that start like this:
<kfogel>      https://launchpad.dev/
<kfogel>      https://bugs.launchpad.dev/
<kfogel>      https://code.launchpad.dev/
<kfogel>      https://blueprints.launchpad.dev/
<kfogel>      https://translations.launchpad.dev/
<kfogel>      https://answers.launchpad.dev/
<kfogel>      https://lists.launchpad.dev/
<kfogel> Those would all be running on your local box during development.
<kfogel> So the setup scripts modify your /etc/hosts (and a few other files, I think) to take care of this all automatically.
<kfogel> The other thing is that if you use PostgreSQL, the scripts will blow any data you have in there.  If that's a problem, just run it in a virtual machine.
<kfogel> So, that's how you get it and set it up to run -- just do what that page says.
<kfogel> And understand why it's so complicated!
<kfogel> GETTING HELP
<kfogel> The most important thing to realize is, doing Launchpad development is primarily about communications, not coding.  You do not need mad coding skills, you just need to be comfortable talking to people about your proposed bugfix / enhancement / new feature.
<kfogel> QUESTION: is there a choice as to which DB you can run it on
<kfogel> ANSWER: not right now, AFAIK.  It's tied to PostgreSQL.
<kfogel> Except for really trivial changes (typo fixes and such), most of your time will be spent communicating with other developers, and writing the automated tests for the change.  The actual time writing the change is often the smallest part of it.
<kfogel> So even before I tell you how to get the source code, I'm going to tell you how to get help -- how to find the right people to talk to!
<kfogel> Start here:
<kfogel> dev.launchpad.net/Help
<kfogel> join the mailing list launchpad-dev {AT} lists.launchpad.net
<kfogel> And use these two IRC channels here on freenode;
<kfogel> #launchpad-dev and #launchpad-reviews (for reviewing changes you've submitted)
<kfogel> the first channel is the main one for conversation about Launchpad development.
<kfogel> It is not to be confused with #launchpad, which is for *usage* of Launchpad
<kfogel> Next thing is:
<kfogel> WHAT TO WORK ON?
<kfogel> Most likely, your own usage of Launchpad will drive what you're interested in improving.  But if you want to get an idea of what we think needs fixing, take a look at https://dev.launchpad.net/FixBugs
<kfogel> However, the usual way things work is that you, as a user of Launchpad, run into something that you think should be fixed, and you fix it.
<kfogel> So our list of existing bugs is interesting, but not necessarily the driving force for community developers (do check there to see if your bug has already been filed, though).
<kfogel> HOW TO START TO WORK ON SOMETHING
<kfogel> You'll need three key things: a bug, a branch, and a merge proposal.
<kfogel> If there isn't already a bug filed for what you want to do, then discuss the proposed change first, in #launchpad-dev or on the launchpad-dev {AT} lists.launchpad.net mailing list.  Once there is general agreement, file a bug describing what you plan to do.  (If it's a new feature, there may be a Blueprint involved too.)
<kfogel> So, let's assume that by one route or another, you have a bug filed now.
<kfogel> The next step is to roughly describe your proposed solution to an experienced Launchpad developer  -- this is known as the "pre-implementation call", although
<kfogel> it can also be an IRC chat session instead of a phone call.
<kfogel> Once you've got the basic design agreed on (which is usually a pretty quick process), you make a branch.
<kfogel> A "branch" is equivalent to a patch -- it's how you submit a change to the project.  In order to get the dependencies set up right, I recommend starting one with 'rocketfuel-branch'
<kfogel>   $ cd MY_LP_BRANCHES
<kfogel>   $ ls
<kfogel>   devel db-devel stable db-stable
<kfogel>   $ utilities/rocketfuel-branch 123456-improve-fish
<kfogel>   <<... watch output fly by ...>
<kfogel>   $ ls
<kfogel>   123456-improve-fish devel db-devel stable db-stable
<kfogel>   $
<kfogel>  
<kfogel> By the way, if you're wondering what that "devel", "db-devel", "stable", "db-stable" thing is,
<kfogel> the answer is here:
<kfogel> https://dev.launchpad.net/Trunk
<kfogel> Basically, Launchpad has four trunks, instead of one trunk.  There's stable vs devel, and there's db-changes vs no-db-changes.
<kfogel> It's all explained on that page.
<kfogel> 95% of the time, you'll be working against 'devel', so when I say "trunk", that's what I mean.
<kfogel> In your branch, edit the code and use Bazaar as you normally would.  Make as many commits as you want!
<kfogel> It's okay to make lots of small commits.  This is all just in yuor local branch.
<kfogel> You should also push the branch up to launchpad, so others can see it.
<kfogel> just type 'bzr push' inside the top level of your new branch
<kfogel> bzr will do the right thing
<kfogel> and you'll get a branch visible at some place like this:
<kfogel> https://code.launchpad.net/~your_name_here/launchpad/123456-improve-fish
<kfogel> Note the bug number in the branch name -- this is a convention.  It can go at the beginning or the end, but it's very handy to have it in there.
<kfogel> You should also link the branch *to* the bug.
<kfogel> If you go to the branch page, there will be a link for that.  Do it immediately, so anyone who
<kfogel> visits the bug can see it is being worked on.
<kfogel> You might also want to mark the bug's status as "in progress".
<kfogel> In a moment, I'll digress into talking about what you actually do to develop.
<kfogel> But first, let's assume you're done with your branch, and you want to submit it for review.
<kfogel> First make a merge proposal, in the usual way (there's a link on the branch page for that).
<kfogel> I recommend going into #launchpad-reviews and seeing who the on-call reviewer is
<kfogel> and entering them as a reviewer, if they agree.  Or if you're already talking to another lanuchpad developer about the change, they may be available to review it.
<kfogel> If your change involves a DB schema change, then click "extra options" on the merge proposa page and put "db" for review type.
<kfogel> If it involves visible UI changes, then put "ui" for review type.
<kfogel> (You can submit to different reviewers for different types of reviews -- ask the developers you're working with who the appropriate people might be.)
<kfogel> brief pause for questions...
<kfogel> okay, continuing
<kfogel> Launchpad development is very test-driven.
<kfogel> Most changes of any size (except maybe for trivial typo fixes and stuff) need automated tests to accompany them.
<kfogel> The testing system looks complicated, but don't worry, it's actually complicated.
<kfogel> There.  That was comforting, right?
<kfogel> It's not so bad.  There are three basic kinds of tests: doc tests, story tests, and windmill (javascript/ui) tests.
<kfogel> Running "bin/test -v -t bug.txt"  runs the doc test lib/lp/bugs/doc/bug.txt
<kfogel> bin/test -v -v -t test_bugtask runs
<kfogel> lib/lp/bugs/browser/tests/test_bugtask.py
<kfogel> (for example again, and this is all from inside the top of "devel", by the way)
<kfogel> and bin/test -v -v -t patches-view.txt
<kfogel> runs tests lib/lp/bugs/stories/patches-view/patches-view.txt .
<kfogel> I won't go into depth about how those tests work, since the best way to learn them is just to look at the examples there already.  Basically, they are a way to test both the Python-level interfaces you may have added, and a way to test browser behavior (the story tests actually simulate a browser)
<kfogel> for more on these, see lib/canonical/launchpad/pagetests/README.txt
<kfogel> and lib/canonical/launchpad/pagetests/REFERENCE.txt
<kfogel> By the way, since you run tests at the command line, the MOST USEFUL TRICK IN THE WORLD is this:
<kfogel> in the code, you can do the standard python debugger thing:
<kfogel>         import pdb
<kfogel>         pdb.set_trace()
<kfogel> (that's in a .py file somewhere)
<kfogel> and then when you run your tests, when you get to that spot, you'll be right at an interactive debugger.
<kfogel> It is an incredible timesaver.  Highly recommended.
<kfogel> another trick is, in the story tests, you'll see how when you show browser page contents, there is a certain output expected -- it's just the raw text (with HTML tags stripped out) from the page, with whitespace all folded
<kfogel> So if you want to see the output you're actually getting, just put a bunch of blank lines where the output would be expected, and you'll get a nice diff showing what the browser put out instead
<kfogel> Okay, now really on to some examples, which I hope will be good references.
<kfogel> EXAMPLES
<kfogel> I'm going to use two examples from code changes I happened to make recently.
<kfogel> I think these are actually fairly clean examples of two types of changes you might find yourself having to make.
<kfogel> The first is "What does making a change to the DB schema look like?"
<kfogel> Here's a branch that makes a very small change to the schema (and it landed recently, I believe):
<kfogel> https://code.edge.launchpad.net/~kfogel/launchpad/509194-506514-bug-heat-db-fixes
<kfogel> Note the two bug numbers both in the branch name.
<kfogel> (of course, if there had been many bugs, I would have not done that, or would have had an overarching master bug)
<kfogel> I'll pause so people can take a look at that code.
<kfogel> Note how the SQL file we changed was database/schema/patch-2207-27-0.sql.  When the change first started, the file we added and edited was:
<kfogel> database/schema/patch-2207-99-0.sql
<kfogel> For complicated, historical reasons, DB changes come in distinct SQL files, and the "99" convention tells the DB merge person "fit this one in wherever you have the next slot".
<kfogel> So by the end, when we merged, we were assigned "27".  But when we were working, it was "99".
<kfogel> ("we" is Abel Deuring and myself, btw -- he's adeuring in IRC)
<kfogel> That change went into the db-devel branch, of course, and so our merge proposal was targeted to that.
<kfogel> Regarding merge proposals, there are two good wiki links about them (thanks to ajmitch for these):
<kfogel> https://dev.launchpad.net/PatchSubmission
<kfogel> https://dev.launchpad.net/CoverLetters
<kfogel> A "merge proposal cover letter" is the sort of summary description of the change, that helps the reviewer know what they're looking at and how to test it.
<kfogel> It is important to give the reviewer the context they need to properly review the change.
<kfogel> There will be some more about that in the next example,
<kfogel> which is about making a UI change.
<kfogel> This next example comes from https://bugs.edge.launchpad.net/malone/+bug/506018
<kfogel> which is about making a new "+patches" view available (you put "+patches" on the end of certain Launchpad URLs, and you get a listing of patches available for, say, that source package, or project, or whatever).
<kfogel> The code branch is here:
<kfogel> https://code.edge.launchpad.net/~kfogel/launchpad/506018-patch-report
<kfogel> And the merge proposal is here:
<kfogel> https://code.edge.launchpad.net/~kfogel/launchpad/506018-patch-report/+merge/18181
<kfogel> That's a terrific example of what you can expect from launchpad code review, by the way (above).
<kfogel> Note how the merge proposal describes the change, makes it clear to the reviewer how to test it.
<kfogel> And the bug itself contains a screenshot (http://launchpadlibrarian.net/38192596/screenshot-2010-01-21_rich_popup.png) so the reviewer knows what to look for.
<kfogel>   <PAUSE FOR QUESTIONS>
<kfogel> Okay, so there are two more things I want to talk about.
<kfogel> The first is, how does a change actually land?
<kfogel> The second is just some standard Launchpad development "gotchas" that tend to bite newbies.  Maybe I can save you some time by telling you about them now!
<kfogel> HOW TO LAND A CHANGE
<kfogel> Well, right now, once your branch has passed review (and note that review is something *all* Launchpad developers get, including full-time experts)
<kfogel> an existing Launchpad developer has to land it.  What they'll do is use the Bazaar PQM plugin:
<kfogel> https://edge.launchpad.net/bzr-pqm
<kfogel> and run a command like this:
<kfogel>    $ bzr pqm-submit -m "[r=REVIEWER_NICKNAME][ui=none] Description of change here..."
<kfogel> inside a branch with your changes.
<kfogel> Your commits will be landed, even though they were gated through by someone else (and by the PQM -- "Patch Queue Manager" system -- which does some build sanity checks before putting the change on trunk.
<kfogel> )
<kfogel> After that, your name will show up at https://dev.launchpad.net/Contributions , within a day or so :-).
<kfogel> To see what other people's submit messages and commit messages look like, I highly recommend running 'bzr log -n0 > log-n0.out' in one of the four trunk branches, say, "devel".
<kfogel> It gives you a good sense for how development goes.
<kfogel> Okay, I'll pause for a moment before launching into the final section of this class...
<kfogel>   any questions?
<kfogel> Okay, it's time for...
<kfogel> STANDARD LAUNCHPAD DEVELOPMENT GOTCHAS
<kfogel> Watch out for 'make schema' -- it will blow away any test data you generated while using your instance.
<kfogel> So how do you save previously-generated test data?  Easy:  'make newsampledata'
<kfogel> like this:
<kfogel>     $ pwd
<kfogel>     ...../lp-branches/devel/database/sampledata
<kfogel>     $ ls -l current* newsampledata*
<kfogel>     -rw-r--r-- 1 kfogel kfogel 1635602 2009-12-07 14:11 current-dev.sql
<kfogel>     -rw-r--r-- 1 kfogel kfogel 1583524 2010-01-18 09:01 current.sql
<kfogel>     -rw-r--r-- 1 kfogel kfogel 1712790 2010-01-18 09:54 newsampledata-dev.sql
<kfogel>     -rw-r--r-- 1 kfogel kfogel 1583524 2010-01-18 09:54 newsampledata.sql
<kfogel>  
<kfogel> that file, newsampledata-dev.sql, contains the sample data.
<kfogel> This is very useful for your reviewers, too!  Save it, attach it where they can use it, so they don't have to generate this data themselves.
<kfogel>  
<kfogel> Who are the test users to use in your "launchpad.dev" instance?
<kfogel> log in as "test@canonical.com" for a standard test user (I think the password is "test")
<kfogel> and log in as "foo.bar@canonical.com" for an admin-privs user (same pw I think)
<kfogel>  
<kfogel> Hmm, I'll start numbering the tips now, so you know where the boundaries are.
<kfogel> Tip 3: if things aren't working, you should check the "launchpad.log" file in the top level of your branch
<kfogel> that is, when you do a "make run" and then visit the launchpad.dev instance in your browser,
<kfogel> your code changes may or may not have the effect you expected.  If they don't have the effect you expected, the answers are often to be found in launchpad.log.
<kfogel> Also, /var/log/postgresql/postgresql-8.3-main.log has all your DB queries
<kfogel>  
<kfogel> Tip 4: Visiting foo.launchpad.dev for the first time may bring up a cert failure thing.  Just accept the cert.
<kfogel>  
<kfogel> Tip 5: You don't need to restart on a template change (a .pt file).  You DO need to restart on a .py file change.
<kfogel> These templates are Zope templates, by the way.
<kfogel> If you're new to Zope (I am!) then http://www.owlfish.com/software/simpleTAL/tal-guide.html is your friend.
<kfogel> And we use the Yahoo User Interface (YUI) library for javascript.
<kfogel> If you're new to that, see
<kfogel> http://developer.yahoo.com/yui/3 and http://developer.yahoo.com/yui/3/api/module_event.html
<kfogel>  
<kfogel> Tip 5: terminology.  You may be used to seeing "project" to mean a software program.
<kfogel> But inside the code, "project" means "project group", and "product" means what you normally think of as a project.  E.g, firefox is a "product" object in the code.
<kfogel> Watch out for confusion.  Yes, we're sorry.  No, it's too late to change it now - that would be a massive string-replace :-).
<kfogel>  
<kfogel> Tip 6: use staging.launchpad.net to test behaviors.  the database gets reset every night or so, so you can't hurt anything.
<kfogel>  
<kfogel> Tip 7: most of your page UI will be defined by .pt (template) files, for example see lib/lp/bugs/templates/bugtarget-patches.pt
<kfogel> (the new file added by that 506018 branch I referred to earlier).
<kfogel> In a template file, "context/foo" accesses the model, whereas "view/foo" accesses the view.  If you already know Zope, you probably know that.  For the rest of us, it's a pretty basic thing.
<kfogel>     Also, in the code, such as in a View class (like "BugsPatchesView(LaunchpadView):"), self.context also accesses the model.
<kfogel>  
<kfogel> Tip 8: we observe an "XXX" convention.  If you leave an XXX comment in the code, meaning "this isn't quite right, but I'm going to leave it for now so I can just finish this feature", then the deal is, file a bug about the XXX, and go back and mark the XXX with your name, the date, and the bug number.
<kfogel> For example: "# XXX Jill Random 2010-01-28 bug=123456  We really should use a database query here instead of looping over the objects in Python."
<kfogel>  
<kfogel> QUESTION: what is, or what was the deal with open sourcing Launchpad, exactly? To the average user, and many experienced ones, Launchpad is not software, it's just a web page.
<kfogel>  
<kfogel> Interesting question.
<kfogel> Couple of reasons:
<kfogel> One, many people become more willing to use Launchpad, and invest time & data into it, if they feel that they are not locked in -- that is, no matter what happens, the source code is open so it can't be lost.
<kfogel> We heard from people that they didn't want to host their free software on a proprietary system.  We did want them to use it, so we solved it by making the system not proprietary :-).
<kfogel> The second reason is that, although it is a web service, it's one that has a very technically skilled user base, and there's no reason they shouldn't be able to fix problems when they see them.
<kfogel> So we're doing something a bit unusual: forming a development community around a piece of software that runs as a web service, but forming the community around that actual service -- around Launchpad.net itself.
<kfogel> The code is open, but we try to shepherd all changes onto the running service as quickly as we can.
<kfogel> We have a monthly release cycle, and changes become visible on edge.launchpad.net even sooner for beta testers.
<kfogel> QUESTION: why are there only 14 people outside Canonical with registered contributions?
<kfogel> ANSWER: because one of them is William Grant, who seems to actually about 10 people himself? :-)
<kfogel> No, seriously, I think the answer is that Launchpad is complex, and it takes people a while to get up to speed.
<kfogel> It's not clear to me whether 14 is too high or too low.  I hope it goes up, of course; but we didn't know what to expect when we open sourced.
<kfogel> Remember also that we only open sourced six or seven months ago!
<kfogel> I think that's it.
<kfogel> I hope this helped those who might consider hacking on Launchpad.  It's been a pleasure; find me in #launchpad-dev if ever have questions of course.
<Nahsei> Hello
<Nahsei> I have some questions... can someone help me please?
#ubuntu-classroom 2010-01-29
<Nahsei> good night
<Bree> hi all
<danfish> quit
<dholbach> WELCOME TO THE LAST DAY OF UBUNTU DEVELOPER WEEK!
<dholbach> As you can see on https://wiki.ubuntu.com/UbuntuDeveloperWeek we have a bunch of GREAT sessions lined up for today
<dholbach> If you have any questions, please ask them in #ubuntu-classroom-chat and prefix them with QUESTION:
<dholbach> ie: QUESTION: Does Jono really just listen to Death Metal music?
<dholbach> and if you'd prefer not to ask questions in English have a look at the bottom of https://wiki.ubuntu.com/UbuntuDeveloperWeek - we have a couple of channels where you can ask questions in your native language :)
<dholbach> (and consider helping out there too)
<dholbach> ok... I just learned that our first speaker has trouble making it to the session
<dholbach> I'll make sure that he'll repeat the session some time later
<dholbach> I'm sorry
<dholbach> I'd suggest we make this a Question and Answer session
<dholbach> feel free to ask every development-related question you can think of during this session and I'll try to get you an answer :)
<dholbach> <Daviey> QUESTION: Does Jono really just listen to Death Metal music?
<dholbach> Daviey: I'm afraid he almost exclusively listens to Death Metal. Sometimes there's some AC/DC too and sometimes some ABBA, but 95% Death Metal :)
<dholbach> I'm sure that jcastro can confirm that ^
<jcastro> I can't neither confirm nor deny any ABBA listenage
<dholbach> do we have more questions about Ubuntu and Ubuntu development? anything that was unclear during the week?
<dholbach> <mhall119|work> QUESTION: should tabs be represented as 4 spaces or 8?  Vi or Emacs?  Hungarian notation?
<dholbach> mhall119|work: I guess that depends who you ask :-)
<dholbach> mhall119|work: if you mainly work with python, you might want to check out http://www.python.org/dev/peps/pep-0008/ which at least has something to say about spaces
<dholbach> <lbrinkma> QUESTION: Is there any advanced guide to packaging, for example many banarie packages out of one source package?
<dholbach> lbrinkma: if you worked your way through https://wiki.ubuntu.com/PackagingGuide I suggest check out http://www.debian.org/doc/debian-policy/ (Debian Policy) and http://www.debian.org/doc/maint-guide/ (Debian New Maintainer's Guide)
<dholbach> plus checking out a lot of source packages and see how they do it
<dholbach> I'm no expert, but a lot I know today I learnt from other packages and checking out what other maintainers did
<dholbach> that's one of the things I LOVE about Ubunt, everything is just an "apt-get source ..." away :)
<dholbach> <duanedesign56> <QUESTION> Have you used 'Groundcontrol' yet and how do you see that being integrated into the community?
<dholbach> duanedesign56: I personally didn't
<dholbach> jcastro: ^ did you?
<jcastro> I saw the video
<jcastro> it's a nautilus integration thing for bzr
<dholbach> oh nice
<dholbach> does it integrate with olive (bzr-gtk)?
<dholbach> <duanedesign56> dholbach: he has mentioned bzr-gtk integration in a future release
<dholbach> I guess that answers the question :)
<dholbach> any more questions?
<dholbach> maybe something that wasn't explained due to time constraints?
<dholbach> <amichair> QUESTION: in utilities that are developed "in-house" by (k)ubuntu, rather than just packaged, is there a proper QA cycle, or is it just an 'ok' from the dev followed by waiting for bug reports to flow in?
<dholbach> amichair: yes, although there's no strict one-QA-process-for-everything there's quite a lot of QA being done
<dholbach> tools like bazaar and launchpad which are mainly developed by Canonical engineers are developed through test-driven development and have extensive test-suites that are run for every merge
<dholbach> (and run several hours in the case of Launchpad AFAIK)
<dholbach> tools that actually are in Ubuntu, like upstart have testsuites too
<dholbach> http://mago.ubuntu.com/ is an approach to test desktop applications by test-driving them through the accessibility interface (IIRC)
<dholbach> the security and SRU team add test-cases for stuff that broke to ensure it doesn't break again
<dholbach> and we do quite a lot of certification testing and ISO testing of CD images
<dholbach> I'm sure I forgot heaps of things
<dholbach> jcastro: anything I missed?
<jcastro> I don't know anything about testing
<dholbach> #ubuntu-testing and #ubuntu-bugs and #ubuntu-qa are good places to talk about that
<dholbach> (and we had a session about automated server testing too! :)
<dholbach> <donaldharvey> QUESTION: I'm a Git/Github user, and am really comfortable with the system. I maintain a project on Launchpad and use bzr-git to import the existing repository. Should I switch to bzr, and if so, why?
<dholbach> donaldharvey: what you could easily do without having to switch tools is setting up a bzr in code.launchpad.net
<dholbach> erm sorry
<dholbach> a bzr import
<dholbach> that'd give people the opportunity to use code.launchpad.net to propose merges when they're used to using that already
<dholbach> I love using code.launchpad.net and made great experiences with new contributors who quickly "got it" and knew how it worked
<dholbach> <donaldharvey> That's what I'm doing currently, yeah
<dholbach> I have little experience with git to be honest, but a lot of good with bzr, so I'm probably the wrong person to talk to :-)
<dholbach> but the fine people in #bzr and #launchpad can probably give you some further advice
<dholbach> <duanedesign56> <QUESTION> Are there any charts or graphs that show bug stats plotted over time?
<dholbach> jcastro: ^?
<dholbach> I know there are some on qa.ubuntu.com
<dholbach> let me see if I can spot them easily
<jcastro> not anything that isn't on qa.ubuntu.com
<jcastro> for large packages they have this
<jcastro> http://status.qa.ubuntu.com/qapkgstatus/knetworkmanager
<jcastro> as an example
<jcastro> but nothing that summarizes everything.
<jcastro> this would be good info to get started on
<jcastro> for example look at this one: http://status.qa.ubuntu.com/qapkgstatus/gnome-power-manager
<jcastro> oldest bug with status NEW: 446 days
<jcastro> that means someone either can't confirm the bug or it's been forgotten
<jcastro> jml mentions that he has this: http://people.canonical.com/~jml/lp-bugs/
<jml> jcastro, it's a prototype that uses out-of-date data and is a chart of the bugs on Launchpad itself
<jml> jcastro, I'd be over the moon with ecstasy and joy if someone wanted to turn that into an actual page on Launchpad, and would be more than happy to help whoever wants to do it
<jcastro> graphing in general would be useful I think
<jml> heck yes.
<dholbach> <breinera> <QUESTION> as a newbie to Ubuntu developer, but someone who can program, where can I make the most impact and help Ubuntu?
<dholbach> breinera: awesome question!
<dholbach> the most important thing you need to have as somebody who wants to help out with Ubuntu is: a knack for making things work again, some patience, some humour and being a team player
<dholbach> I'd recommend having a look at https://wiki.ubuntu.com/MOTU/TODO for now until we managed to give http://daniel.holba.ch/harvest a facelift
<dholbach> we soon will have a nice overview over tasks that need some help and group them by packages and everything
<dholbach> until then it's this a bit ugly list of lists
<dholbach> so... what do we have there?
<dholbach> jcastro mentions 'bitesize' bugs
<dholbach> we tag bugs in Launchpad to indicate what kind of task there are
<dholbach> 'bitesize' for example indicates "this is a job to get started with"
<dholbach> 'update' means "this package needs updating to a new upstream version"
<dholbach> 'packaging' means "here's something wrong with the packaging"
<dholbach> etc.
<cjwatson> I'd also be inclined to say that it's always most effective to follow your own interests
<cjwatson> people tend to be more productive with things they care about
<dholbach> the list of official tags can be found here: https://wiki.ubuntu.com/Bugs/Tags
<dholbach> thanks cjwatson - absolutely agreed
<dholbach> Ok, maybe we should broaden the scope of the session somewhat and ask for some feedback about the whole week... what do you think about the week? what do you think went well, what didn't?
<dholbach> (if you still have questions, that's fine too)
<dholbach> Any feedback?
<dholbach> Any questions? :)
<dholbach> maybe requests for the next Ubuntu Developer Week?
<dholbach> or other development related classes outside of UBuntu Developer Week?
<dholbach> <SevenMachines> [QUESTION] i was wondering if theres a difference in focus over the development cycle, ie, work on merging, fixing bugs in ubuntu, or getting bugs fixed in debian
<dholbach> SevenMachines: definitely
<dholbach> one key decision is to try to land as many earth-shattering changes as early as possible so they can get tested and debugged most appropriately
<dholbach> also if you find out that Debian suffers from the same problem and you want to fix it there too, then early in the cycle is a good time for that
<dholbach> the later it gets in our cycle the more we exclusively focus on just fixing stuff
<dholbach> it doesn't make sense to first push the critical fix to Debian, wait for it to get included, then maybe sync or merge it again
<dholbach> http://people.canonical.com/~dholbach/cheatsheet.jpg tries to give a bit of an overview over release-cycle decisions
<dholbach> <dscassel> QUESTION: Any suggestions for running a successful Global Jam? Focus more on giving people the tools to help, versus actual triage and packaging?
<dholbach> jcastro: ^ you want to take that one?
<dholbach> dscassel: I'd try to do everything that the people want to do
<dholbach> dscassel: if some of them are very new to the processes and to Ubuntu they will need all the help they can get
<jcastro> https://wiki.ubuntu.com/Jams is a place to start
<jcastro> the key is to ask around for groups that have done jams in the past
<jcastro> so you don't make a simple mistake
<dholbach> I'm in the Ubuntu Berlin team and we made good experiences with splitting up stuff among team members: one organises bug triage efforts, somebody else does packaging, etc.
<jcastro> for example our first jam we did in a bar and then didn't realize that under-21 people couldn't attend!
<jcastro> now we have that in a wiki page so people don't repeat our mistake
<dholbach> haha :)
<dholbach> more questions? more feedback? more requests?
<dholbach> ok my friends, thanks a lot for your questions
<dholbach> let's all take a 5 minute break before cjwatson is up with "Doing merges right!"
<dholbach> Next up is the incredible and unstoppable Colin Watson, talking to us about "Doing merges right!"
 * cjwatson fusses around a bit looking for his notes. :-)
<cjwatson> Hi, I'm Colin Watson, from the Ubuntu Foundations team, and this talk is called "Doing Merges Right".
<cjwatson> You can ask questions at any time in #ubuntu-classroom-chat.  Please write QUESTION at the beginning of your question so I can see it more easily.  I'll stop at the end of a section and answer some questions.
<cjwatson> This session is mostly for people who've never done merges before and want to know how to do it properly, though it will help if you know what a patch looks like.
<cjwatson> If you already know how to do merges, though, consider listening in anyway.  I'm going to describe up-to-date tools that not everyone will already be familiar with, and I'll cover a few common mistakes along the way.
<cjwatson> Apologies to the desktop folks, but this is unashamedly a terminal-based session.  It is not full of sexy slides and whizzy graphics, because I don't do those.  Love The Terminal.  The Terminal Is Your Friend.
<cjwatson> To follow along with this talk, you should install the bzr, bzr-builddeb, and ubuntu-dev-tools packages.  Make sure that bzr is version 2.0 or better; karmic's is fine.
<cjwatson> WHY
<cjwatson> Every time we open a new development release of Ubuntu, we need to merge our changes with those made in Debian.
<cjwatson> Not everyone finds this exciting, but it's really important; it keeps our repository up to date with the rest of the free software world, and it gives us an opportunity to audit the changes we're carrying and discard ones that don't make sense any more.
<cjwatson> Since we have a lot of packages and a relatively small number of developers, it's important that we have some common understanding of how to go about this.
<cjwatson> Plus, half the time you end up merging something you haven't worked on for months if at all, so some basic habits come in handy ...
<cjwatson> In this session, I'm going to run through an example merge using a couple of different methods.
<cjwatson> WHEN
<cjwatson> http://merges.ubuntu.com/ is your friend for finding things to do.  The lists are divided into a section for packages that haven't been uploaded so far this release, and a section for packages that have been touched but still have a newer version in Debian.  The first section is usually more important.
<cjwatson> Each merge has a "last uploader" recorded alongside it.
<cjwatson> The last person who uploaded the package is the default assignee for each merge.  We sometimes call this the "touched it last" method - you touched it last, it's yours!
<cjwatson> You must always contact the last uploader before doing a merge; please don't just run down the list and submit lots of merges for sponsorship.
<cjwatson> This is a convention to try to avoid duplicate work.  You may also often find that the assignee for a merge has a reason for not just going ahead and merging (perhaps some other package needs to be adjusted), so always talk to them first.
<cjwatson> That said, people often welcome help with their merge workload as long as they're told about it, so don't be shy about asking.
<cjwatson> We expect all packages to have been merged at least once by Debian Import Freeze (see https://wiki.ubuntu.com/ReleaseSchedule) and after that point we don't actively try to keep the merge lists short.
<cjwatson> After Feature Freeze, you have to have a good reason for doing a merge, not just "it was on the list", so expect to be asked searching questions by your sponsor if they can't see why you bothered. :-)
<cjwatson> HOW
<cjwatson> I'm going to go through the same example in two different ways.  Firstly, I'm going to use Bazaar, the revision control system used for (among other things) a good deal of Ubuntu development.  Secondly, I'm going to do things the old-fashioned way.
<cjwatson> Bazaar is really much better at dealing with merges, since that's one of the core functions of a revision control system!  For the example here, it doesn't make so much difference, but it gets more obvious with more complicated packages.
<cjwatson> The Bazaar workflow isn't so extensively covered in MOTU documentation, so I'm going to spend a bit more time on it.
<cjwatson> However, we're still in the process of rolling this out for all packages, and it doesn't quite all work yet.  Sometimes you need to fall back to the old-school method to get your work done.
<cjwatson> Don't worry too much about having to do this; the automatic imports will catch up even if you do your work outside Bazaar.
<cjwatson> But first:
<cjwatson> THE TAO OF MERGING
<cjwatson> 1. Keep Ubuntu changes as small as possible.  If Debian fixes the same bug in a different way, use their fix and discard ours unless it's clearly better in some way.
<cjwatson> 2. Send changes upstream or to Debian whenever possible.  We don't really want to maintain big divergent patches in Ubuntu if we can avoid it; unless things are truly Ubuntu-specific, it's always better to pass them up so that the rest of the free software world can use our improvements too.  You can use the 'submittodebian' script to help with this.
<cjwatson> 3. Sync with Debian whenever possible.  When following these directions, if you find that there are no Ubuntu changes left, then stop!  Request that the package be synced instead: https://wiki.ubuntu.com/SyncRequestProcess
<cjwatson> 4. Write good changelogs that explain what changes we're still carrying in Ubuntu.  This makes it easy to look at a package and quickly see how the Ubuntu version differs.
<cjwatson> Any questions before I dive into our first example?
<cjwatson> Shout if I'm going too fast.
<cjwatson> 17:06 <randomaction> QUESTION: what do background colours in MoM mean?
<cjwatson> It's odd that this isn't documented anywhere ...
<cjwatson> (at least as far as I can see)
<cjwatson> Anyway, the colours refer to the Priority field of the package.
<cjwatson> Red is required, sort of orange/yellow is important, light green is standard, mid-green is optional, dark green is extra.
<cjwatson> This is just a heuristic to try to sort more important packages to the top of the list.
<cjwatson> It doesn't refer to the importance of the *merge*, which can't be determined automatically, but it helps.
<cjwatson> (I think I might have the precise colour/priority mapping a little wrong, but you get the idea!)
<cjwatson> OK, I'll carry on.
<cjwatson> BAZAAR
<cjwatson> I'm going to use a simple merge that's currently outstanding as an example: ipmitool.
<cjwatson> Look at https://merges.ubuntu.com/universe.html and (if it hasn't been merged yet by the time you read this) you'll see ipmitool there, with Chuck Short's name against it as the last uploader.
<cjwatson> Normally, you can access current branches for Ubuntu and Debian packages at lp:ubuntu/SOURCE or lp:debian/SOURCE respectively, where SOURCE is the source package name.
<cjwatson> (You can use 'bzr lp-open' to look at these in a web browser, too.)
<cjwatson> These are special aliases that expand to five-level names; for instance, lp:ubuntu/ipmitool is currently lp:~ubuntu-branches/ubuntu/lucid/gnu-fdisk/lucid.  This breaks down as (owner, distribution, release, source package, branch name).
<cjwatson> err, s/gnu-fdisk/ipmitool/ obviously!  Sorry, error in my prep ...
<cjwatson> Debian branches currently expand to .../debian/squeeze/..., since for the Lucid development cycle we're merging from Debian testing, not unstable.  This may change in future.  To get branches corresponding to unstable, use lp:debian/sid/SOURCE.
<cjwatson> In order that the transcript of this talk will continue to be useful for some time to come, I've taken copies of the current state of the Ubuntu and Debian branches for ipmitool, and pushed them to Launchpad, using my own Launchpad username as the owner.  Anyone can push whatever they like this way, as long as it meets the Launchpad terms of use.
<cjwatson>   lp:~cjwatson/ubuntu/lucid/ipmitool/udw
<cjwatson>   lp:~cjwatson/debian/squeeze/ipmitool/udw
<cjwatson> BAZAAR: STARTING THE MERGE
<cjwatson> Let's prepare to do our example merge.
<cjwatson> Make a new directory and cd into it.  Type 'bzr init-repo .', which should respond with a few lines starting "Shared repository with trees (format: 2a)".  This is optional, but it means that any branches we create under here will share common storage for their revisions, which saves you both disk space and network bandwidth when you have several branches with shared history.
<cjwatson> Fetch the branches we want to merge like this:
<cjwatson>   bzr get -r7 lp:~cjwatson/ubuntu/lucid/ipmitool/udw ubuntu
<cjwatson>   bzr get lp:~cjwatson/debian/squeeze/ipmitool/udw debian
<cjwatson> (Normally, of course, this would be lp:ubuntu/ipmitool etc., and we pick a specific revision of the Ubuntu branch here because the next revision has the results of the merge.)
<cjwatson> If you've used Bazaar before, you may be reaching for 'bzr merge' about now.  bzr-builddeb provides a 'bzr merge-package' command, which we're going to use instead.  I'll explain the difference later on.
<cjwatson> Let's try merging the Debian changes into the Ubuntu branch.  Bazaar will automatically start from wherever the two branches you're working on diverged; you don't need to tell it "merge from 1.8.11-1 up to 1.8.11-2".
<cjwatson>   <cjwatson@sarantium ~/src/ubuntu/ipmitool/udw/ubuntu>$ bzr merge-package ../debian
<cjwatson>   Text conflict in debian/changelog
<cjwatson>   Text conflict in debian/control
<cjwatson>   Text conflict in debian/patches/series
<cjwatson>   3 conflicts encountered.
<cjwatson>   The merge resulted in 3 conflicts. Please resolve these and commit the changes with "bzr commit".
<cjwatson> BAZAAR: CONFLICTS
<cjwatson> That was easy, wasn't it?  Shame about the conflicts.  Type 'bzr status' and you'll see what this has left in your working tree.  Incidentally, you can get detailed help on any Bazaar command using 'bzr help COMMAND'.
<cjwatson> (I'll pause for a bit here to let anyone following along catch up with the commands)
<cjwatson> 17:15 <SevenMachines> i'm getting 'bzr get lp:~cjwatson/debian/squeeze/ipmitool/udw debian
<cjwatson> 17:15 <SevenMachines> sorry, bzr: ERROR: unknown command "merge-package"
<cjwatson> SevenMachines: You need to install the 'bzr-builddeb' package.
<cjwatson> 17:01 <@cjwatson> To follow along with this talk, you should install the bzr, bzr-builddeb, and ubuntu-dev-tools packages.  Make sure that bzr is version 2.0 or better; karmic's is fine.
<cjwatson> presentation syndrome here, just fixing up the branch :-)
<cjwatson> I've fixed the broken example Ubuntu branch now, so try again if you had trouble earlier.
<cjwatson> so, carrying on ...
<cjwatson> Looking at 'bzr status', this has changed four files, only one of which was entirely without incident (the new file debian/patches/passwd_option).  Let's look at each of the three conflicts.  I normally do debian/changelog last, since it's the summary of everything else I've done.
<cjwatson> In each file with a conflict, you'll see "<<<<<<<", "=======", and ">>>>>>>" markers.  These are placed each time Bazaar finds a part of the file that's changed on both sides of the merge.
<cjwatson> The section between "<<<<<<<" and "=======" shows that part of the file in the current branch, and the section between "=======" and ">>>>>>>" shows that part of the file in the branch you're merging from.
<cjwatson> You're expected to remove the markers once you've resolved the conflict.
<cjwatson> Edit debian/control and you'll see markers around Maintainer and Build-Depends lines.  Bazaar has left some files around that you can use to figure out what the change from the base revision on each side was:
<cjwatson>   diff -u debian/control.BASE debian/control.THIS
<cjwatson>   diff -u debian/control.BASE debian/control.OTHER
<cjwatson> So in fact just the Maintainer lines changed on the Ubuntu side, and only the Build-Depends line changed on the Debian side.  We can safely take the XSBC-Original-Maintainer and Maintainer lines from our side and the Build-Depends line from the Ubuntu side.  Bazaar errs on the side of caution when changes are very close together in a file like this.
<cjwatson> Save this and move on to debian/patches/series.  Here we have a real conflict: one line was added on the Ubuntu side, and a different line on the Debian side.
<cjwatson> However, if we look at the patch files in debian/patches/ that these lines are referring to, we can see that they touch totally different files and do completely different things, so we should just keep both.
<cjwatson> (In my sample merge, I did this by moving the Ubuntu patch below the Debian one, so that all the Ubuntu work was "on top" at the end.  In this case it isn't really important though.)
<cjwatson> Now for debian/changelog.  This will get more automatic in future, but for now you usually just get a big conflict with the Ubuntu changelog on one side and the Debian changelog on the other.  Edit this so that the changelog entries come in version order (1.8.11-1ubuntu1 is less than 1.8.11-2, so it should come further down the file.
<cjwatson> Now that we've gone through all the files, we can tell Bazaar that we've done so.  Type 'bzr resolve'.  (You normally don't need to tell it which files you've resolved; it will look at all the conflicted files and see if any conflict markers are still there.)  In this case it says "All conflicts resolved" and we can be happy; otherwise we might need to go back for another look.
<cjwatson> CHANGELOG
<cjwatson> We're done now, right?  Er, not quite.  We still need to write a changelog entry for our merge.  You can use 'dch -i' to create a skeleton one.
<cjwatson> The style of this new changelog entry is important.  It should describe all the important changes that are still present in Ubuntu after merging from Debian.
<cjwatson> You don't need to list details that are intrinsic to it being an Ubuntu upload; don't clutter up changelogs with comments about Maintainer field changes, for instance.
<cjwatson> You don't necessarily need to list any changes that you've dropped (if they've been merged into Debian, say) unless there's something particularly interesting about this.
<cjwatson> Normally, you should try to focus on the *functional* changes ("Add widget creation ability") rather than painstakingly listing every file that's changed.  The revision control system can tell people about the latter if they really care.
<cjwatson> If the previous merge changelog entry matches whatever your personal standards of clarity are, then you can just copy and paste it.  In this case (with due respect to the previous merger, who seemed to have a complicated job on his hands!), I chose to write my own:
<cjwatson>   ipmitool (1.8.11-2ubuntu1) UNRELEASED; urgency=low
<cjwatson>     * Merge from Debian testing.  Remaining changes:
<cjwatson>       - Add Dell-specific commands.
<cjwatson>    -- Colin Watson <cjwatson@ubuntu.com>  Fri, 29 Jan 2010 12:59:16 +0000
<cjwatson> (there were some more blank lines in there, lost in the process of pasting into IRC; fill them in mentally)
<cjwatson> If there are any merge bugs in Launchpad, remember to close them here, using the "(LP: #NNNNNN)" syntax.
<cjwatson> BAZAAR: FINISHING OFF
<cjwatson> Have a look at your changes to make sure they're sensible.  'bzr status' shows a summary.  'bzr diff' shows the detailed patch you're about to commit, relative to what's currently in Ubuntu.  You might also want to check the resulting Ubuntu changes relative to what's in Debian; for that, use 'bzr diff --old ../debian'.
<cjwatson> Of course there's lots more stuff you can do here - you can use the full power of the revision control system.  See online documentation for more.
<cjwatson> All is well, so we can commit.  The changelog says UNRELEASED, so this is marked as a work in progress, but we might as well record what we've done.
<cjwatson>   bzr commit -m 'merge from Debian 1.8.11-2'
<cjwatson> Bazaar won't let you commit if there are still unresolved conflicts, which is a great protection against accidents.
<cjwatson> Note that Bazaar doesn't commit merges automatically if they succeed; you still have the opportunity to look over them and make sure you're happy before actually changing your branch.
<cjwatson> Let's now try building our package.  Install the build-dependencies if you need to, and then type 'bzr bd' (short for builddeb).  (This is like debuild, and in fact you can use debuild if you're careful and know what you're doing, but 'bzr bd' is a bit smarter about some details of Bazaar branches.)
<cjwatson> Have a look at the top of the output.  You'll notice that we never downloaded ipmitool_1.8.11.orig.tar.gz, but it finds it anyway because James Westby is a GENIUS.
<cjwatson> Actually, the automatic package imports store enough data in each branch to be able to reconstruct the original source tarball.  They use 'pristine-tar' for this, which is quite space-efficient.
<cjwatson> 'bzr merge-package', and its relatives, 'bzr import-dsc' and 'bzr merge-upstream', take care of details like this, which is why it's worth using them rather than plain 'bzr merge'.
<cjwatson> (They also make sure that there's something in the history representing each upstream release.  If you want the details, look at 'bzr log -n0'.)
<cjwatson> Now, as it happens, my package fails to build due to some horrible disagreement between autoconf and libtool.  But dealing with autotools problems is a subject for another talk!
<cjwatson> If you need to fix something like this, you can do so in a separate commit from the main merge; that way people can easily see the new changes you've made in the history.  Make sure to document any new changes like this in debian/changelog.
<cjwatson> Let's pretend it all worked, and I want to build a package for upload to Ubuntu (or perhaps to a PPA).
<cjwatson> Run 'dch -r' to finalise the changelog, and 'bzr bd -S -- -v1.8.11-1ubuntu1' to build a source package.
<cjwatson> The '-v1.8.11-1ubuntu1' bit says that you want all the changelog entries since 1.8.11-1ubuntu1 to end up in the .changes file.  This means that people following along with the lucid-changes mailing list will get complete information about what changed, rather than just the relatively uninformative merge changelog entry.
<cjwatson> If there's a new upstream version not already in Ubuntu, you'll need the -sa option as well to upload the .orig.tar.gz.
<cjwatson> Assuming this works, you can look at the result in the parent directory.  I'd recommend using 'debdiff' to compare your source package both to the last version in Ubuntu and to the version in Debian that you're merging.  You don't need to be too obsessive about this, but a quick debdiff check has caught a lot of basic errors in the past.
<cjwatson> 17:32 <sebner> cjwatson: [QUESTION]: What was the repo-init thing for at the beginning?
<cjwatson> 'bzr init-repo .' sets up a shared repository.  This means that, instead of having to store all the revisions for the Ubuntu branch and all the revisions for the Debian branch separately, you can store them in the common repository since actually several of them are just the exact same revisions.
<cjwatson> It also means that you don't have to download those revisions twice, which saves a couple of megabytes.  If your connection to the Internet is anything like mine, you might value this!
<cjwatson> (carrying on)
<cjwatson> If it all works, then 'debcommit -r' (this commits and tags), and upload!
<cjwatson> You can push stuff to personal branches on Launchpad for review using 'bzr push lp:~YOURUSERNAME/ubuntu/lucid/SOURCE/BRANCH-NAME', and set up a merge proposal.
<cjwatson> Using the merge proposal, you can generate debdiffs for bug reports in case your sponsor prefers that.
<cjwatson> I have more links on this sort of stuff for further reading at the end, but any questions on the Bazaar section of this session before I carry on?
<cjwatson> 17:36 <sebner> [QUESTION]: How can I haXX0r bzr to work like git when using bzr log. (It does the same horrible thing as svn, showing the first revisions instead of the recent ones and backscrolling is not always possible)
<cjwatson> sebner: I'm not sure I understand your first problem, as bzr log shows the most recent revisions first
<cjwatson> as does git log
<cjwatson> but you can do 'bzr log --forward' if you want to change that
<cjwatson> if you want a pager, | less :-)
<cjwatson> It's often helpful to use 'bzr log -n0', which shows all merged revisions as well.
<cjwatson> also 'bzr alias' is a generally useful thing to know about, for when you want to change a command's default options, or even add a new command that's more to your liking.
<cjwatson> 17:42 <geser> I usually do "bzr ci" and "bzr mark-uploaded" instead of "debcommit". Should I switch to debcommit or doesn't it matter?
<cjwatson> geser: debcommit saves you from having to type commit messages again in many cases.  Aside from that, right now in practice they're equivalent.
<cjwatson> If you work with lots of different revision control systems, debcommit acts as a partial abstraction layer, which I find moderately useful.  But it's mainly avoiding having to type the same thing into the changelog and the commit log editor that I find useful.
<cjwatson> 17:43 <sebner> [QUESTION]: How many % of the archive is already usable with such branches and actually being used currently
<cjwatson> I don't have a percentage figure (maybe jml does, or james_w if he's watching?), but coverage has got to the point where if you're comfortable with the workflow it's worth trying.
<cjwatson> http://package-import.ubuntu.com/failures/ has a log of current import failures.
<cjwatson> (which is a bit longer than I remember, I wonder if there's some systemic problem right now)
<jml> cjwatson, Last time james_w told me it was in the high 90s.
<cjwatson> the main thing people are likely to run into is that it doesn't handle some cases of dpkg v3 source packages right now.  I expect this will be fixed pretty soon.
<cjwatson> Anyway, I'd better move on now as I have 13 minutes left.
<cjwatson> OLD-SCHOOL
<cjwatson> It turns out that it's kind of hard to import lots of versions of 15000-odd packages from two different distributions and get all the bits lined up properly.  Who'd have thought?
<cjwatson> Eventually this will settle down, but for now you'll still need to do things by hand every now and then.
<cjwatson> merges.ubuntu.com can help with this.  https://merges.ubuntu.com/i/ipmitool/REPORT shows the results of an automatic merge, and you'll see that there were a few conflicts, basically just what we went through above.
<cjwatson> You can use 'grab-merge ipmitool' to get all the files.  This gives you an 'ipmitool' directory with lots of files in it, including an 'ipmitool-1.8.11-2ubuntu1' subdirectory with the best that merge-o-matic could manage.
<cjwatson> As before, you should go through and resolve the conflicts.  There's no equivalent to 'bzr resolve', though also no protection against accidentally leaving conflicts around; you have to keep track of this yourself.
<cjwatson> merge-o-matic has merged the changelogs for you, but you still need to write a changelog entry, as before.  Make sure to change the changelog trailer line to your name and e-mail address rather than "Ubuntu Merge-o-Matic <mom@ubuntu.com>", or risk embarrassment!
<cjwatson> Type '../merge-buildpackage' when you're done.  This is like the 'bzr bd -S' bit above.  Then unpack the source package somewhere and check that it builds.
<cjwatson> Please use debdiff to make sure your changes against both Debian and Ubuntu make sense.  This is much more important when you aren't using Bazaar, because you can't use 'bzr diff' to check each individual change you're making, and it's possible to leave conflicts in by mistake.
<cjwatson> To get a sponsor to look at this, you'll need to generate debdiffs against both Debian and Ubuntu, attach them to a merge bug, and subscribe either ubuntu-main-sponsors or ubuntu-universe-sponsors as appropriate.  There's more detail on this in the MOTU wiki area.
<cjwatson> And remember: if you're actually going to ask for sponsorship for this merge, you should still check with the previous uploader, even though I used it as an example for this session!
<cjwatson> FURTHER READING
<cjwatson> For more details on merge proposals, see https://wiki.ubuntu.com/DistributedDevelopment/Documentation/Merging, and https://wiki.ubuntu.com/DistributedDevelopment/Documentation for general docs on using Bazaar for Ubuntu packaging.
<cjwatson> For general advice on merging (particularly "old-school"), see https://wiki.ubuntu.com/UbuntuDevelopment/Merging, which has more detail than I could fit into this session.
<cjwatson> FUTURE
<cjwatson> Ultimately, we want to get to the point where every upstream has a Bazaar import, every Debian package has a Bazaar branch matched up with that import, and every Ubuntu package has a Bazaar branch matched up with both of those.
<cjwatson> The closer we get to this, the easier it will be to merge code between upstream, Debian, and Ubuntu.  We have this for a few select packages already: I handle grub2 and openssh this way and it's lovely.
<cjwatson> If you want to help get us there for more packages, please join https://lists.ubuntu.com/mailman/listinfo/ubuntu-distributed-devel.
<cjwatson> Thank you for following along, and happy merging!
<cjwatson> Any questions?
<cjwatson> 17:51 <sebner> [QUESTION]: Are there any consequences when using bzr to work on a package, then another(?) developer merges some new versions/revisions by hand and then you decide to merge the newest version again with bzr?
<cjwatson> The automatic import script is reasonably clever (although it could be improved).
<cjwatson> If it tries to import and finds that there are more revisions beyond the last thing it did, it imports, but moves the "conflicting" revisions aside and files a bug on the 'udd' project about them.
<cjwatson> The main thing that's lacking from this right now is good notification to the people responsible for those changes.
<cjwatson> But at least nothing is lost.
<cjwatson> If you make changes in bzr and *do* upload them, then as long as you tag your upload the automatic importer will take that as evidence that that's a good representation of that version.
<cjwatson> So if I uploaded 1.8.11-2ubuntu1 from the ipmitool example above and pushed my changes to lp:ubuntu/ipmitool, and then somebody else uploaded 1.8.11-2ubuntu2 without using bzr, that would all work fine - the automatic import would work on top of my changes.
<cjwatson> 17:51 <vocx> QUESTION: With all the tools that exist today. Is it significantly easier to merge and patch Debian packages? I have a feeling that aspiring maintainers may be overwhelmed by the multitude of "bzr action" commands, along with the traditional "dpkg" tools.
<cjwatson> So, there's always a learning curve, and it's certainly a bit difficult in a transitional period when you have to learn two sets of tools.
<cjwatson> However, hardly any serious upstream project works without revision control.
<cjwatson> So I think it's quite justifiable to try to move Ubuntu to having consistent revision control - in fact I think the end result will be much less confusing.
<cjwatson> My experience is that once you've acquired basic familiarity with the relevant revision control tools, merging and patches is much, much less time-consuming, and the error rate is much lower.
<cjwatson> I also hope that ultimately it will be easier to build ways to encourage aspiring developers this way.  When you get right down to it, having to send repeated versions of debdiffs around isn't all *that* great either ...
<cjwatson> Thanks again.  If you have other questions, feel free to ask me directly or on #ubuntu-devel or #ubuntu-motu.
<cjwatson> I'll hand over now to Jonathan Lange, a gentleman and a scholar, who's going to be talking about launchpadlib.
<jml> cjwatson, why thank you
<jml> as before, please stop me if I go too fast, or hassle me if I go too slow
<jml> You might know already, but pretty much no matter what kind of Ubuntu development you are doing, you'll have to interact with Launchpad
<jml> Interacting with Launchpad is fun and all, but sometimes you'll want a computer to do the interaction for you
<jml> Say you want to suck out some of the data and make a pretty graph
<jml> or you want to build a site like http://qa.ubuntu.com/
<jml> This session should help you do that...
<jml> Before we begin, you should install the 'python-launchpadlib' package now.
<jml> Confirm that it works by running:
<jml> $ python
<jml> and then
<jml> >>> import launchpadlib
<jml> >>> launchpadlib.__version__
<jml> you should get output like:
<jml> '1.5.1'
<jml> if it's an earlier version, then you need to either update the package, upgrade to a newer version of Ubuntu, or find the PPA.
<jml> A moment for those installing the package
<jml> Moment over.
<jml> This session is going to have four parts: theory, example, gotchas and future.
<jml> = 1. Theory =
<jml> The Launchpad developers implemented an API for three reasons:
<jml> 1. To let you get at your data
<jml> 2. To allow you to do project-specific policy stuff
<jml> 3. To watch people do cool things we would never have thought of.
<jml> (I'm a Launchpad developer, hence the 'we')
<jml> We decided to implement the API using something called RESTful Architecture
<jml> http://en.wikipedia.org/wiki/Representational_State_Transfer
<jml> This means that Launchpad's APIs are actually language neutral
<jml> in theory, you can write code to control Launchpad in any language you want
<jml> without screenscraping!
<jml> You do HTTP requests with operations like GET, POST, PUSH and DELETE and send and receive JSON content that's described by a WADL file
<jml> WADL == http://en.wikipedia.org/wiki/Web_Application_Description_Language
<jml> Which is all nice and wonderful but you don't really have to care about it, because there's also a Python library
<jml> called "launchpadlib"
<jml> (have you installed it yet?)
<jml> If you don't care at all about Python, now's the time to stop following this session and go to https://help.launchpad.net/API instead
<jml> Because I'm about to go into the example.
<jml> = 2. Example =
<jml> You can follow along from this example by getting the branch at lp:~jml/+junk/bugstats
<jml> You do that by running 'bzr branch lp:~jml/+junk/bugstats'
<jml> The way to follow along is to change into that branch, and then run 'bzr revert -r 1'
<jml> and then when I say "Next revision", do the same thing with "-r 2" instead
<jml> and so on
<jml> bzr revert -r1
<jml> The branch contains a single file 'bugstats.py'
<jml> If you look at that file in your favorite text editor, you'll see that it's very very simple
<jml> It imports sys, defines a main function that does nothing, and then runs that main function.
<jml> Go ahead and run it now
<jml> $ python bugstats.py
<jml> It should do absolutely nothing, fairly quickly
<jml> (at the speed of PYTHON!)
<jml> OK. Next revision
<jml> bzr revert -r2
<jml> (sorry alt-tab fail)
<jml> Have a look at this version of bugstats.py. You might need to reload it in your editor.
<jml> This is an extremely simple launchpadlib script
<jml> It logs in to launchpad and prints out the title of bug number one
<jml> I'll break down exactly what the script does in a moment.
<jml> But first, you should run the script.
<jml> $ python bugstats.py
<jml> When you run it, an authorization page will open up in your web browser
<jml> This is very important, this is how your Launchpad web credentials get applied to the application
<jml> It's done using oauth, which I don't understand.
<jml> http://oauth.net/ and http://en.wikipedia.org/wiki/OAuth are probably good places to start though.
<jml> For now, pick "Read non-private data"
<jml> Then, switch back to your terminal and press enter.
<jml> The script should then print the title of bug number one.
<jml> Run the script again
<jml> Notice that launchpadlib has cached your credentials
<jml>     launchpad = Launchpad.login_with(APP_NAME, SERVICE_ROOT, CACHE_DIR)
<jml> ^^^ that's the line of code what did it
<jml> if you look at the script...
<jml> you'll see I've imported 'os' and 'sys', which are standard Python modules.
<jml> I've also imported 'Launchpad' and 'STAGING_SERVICE_ROOT' from launchpadlib
<jml> Then I've defined an application name, a caching directory and a service root
<jml> APP_NAME = 'jml-bug-stats'
<jml> CACHE_DIR = os.path.expanduser('~/.launchpadlib/cache')
<jml> SERVICE_ROOT = STAGING_SERVICE_ROOT
<jml> There's nothing special about the names of the variables, I've just made them ALL CAPS to hint that they are constants
<jml> APP_NAME is the name of the application. launchpadlib & Launchpad use this as a marker for authorization. You authorize an application based on its *name*.
<jml> Go to https://staging.launchpad.net/people/+me/+oauth-tokens and search for "jml-bug-stats"
<jml> you'll only find it if you actually ran the script
<jml> if you have run the script, you should find it there, saying when you authorized it and what you authorized it to do
<jml> You could revoke the authorization if you wanted to, but you shouldn't do that just now
<jml> Anyway, that 'jml-bug-stats' is the app name used in the script.
<jml> SERVICE_ROOT is _which_ Launchpad.net instance to use
<jml> does everyone know about staging.launchpad.net, edge.launchpad.net and so forth?
<jml> ...
<jml> that's a yes.
<jml> Today, we're using staging. Testing against staging is a good idea, since it's impossible to mess up your live production data by messing with staging.
<jml> CACHE_DIR is the place where launchpadlib stores cached credentials and cached json objects
<jml> It's worth having a poke around in it sometime
<jml> most apps use ~/.launchpadlib/cache
<jml> for reasons that escape me
<jml> If you run ls -l ~/.launchpadlib/cache/api.staging.launchpad.net/credentials/ you should see a file called 'jml-bug-stats'
<jml> That file contains the cached credentials for this app
<jml> If you delete it, you'll have to re-authorize the application
<jml> moving on to the script proper.
<jml> The main() function has us logging into Launchpad and printing a bug title
<jml> login_with is a handy convenience function that logs in with an application name, but looks in the cached credentials first to see if you've already logged in. It returns an instance of 'Launchpad'
<jml> 'launchpad' is an object with a bunch of pre-defined top-level collections, and is the starting point of any launchpadlib app.
<jml> https://help.launchpad.net/API/launchpadlib#The%20top-level%20objects will list all of them for you
<jml> Here we use 'bugs', get the bug with id '1' and print its title.
<jml> $ python bugstats.py
<jml> Microsoft has a majority market share
<jml> Easy
<jml> Now for something a bit more useful
<jml> Next revision
<jml> bzr revert -r3
<jml> $ python bugstats.py
<jml> Please specify a project and a username.
<jml> $ python bugstats.py ubuntu jml
<jml> Jonathan Lange has had 2 bugs fixed on Ubuntu
<jml> it shows the number of bugs someone has had fixed
<jml> useful, huh?
<jml> take a look at the code
<jml> It's got a work-around for a bug in launchpadlib to get the length of a returned collection.
<jml> I don't really understand why the bug isn't fixed yet, since it's got to bite almost everyone who writes a non-trivial launchpadlib application.
<jml> Anyway, this script is more advanced than the last one.
<jml> look at ...
<jml>     pillar = launchpad.projects[pillar_name]
<jml> "Pillar" is Launchpad developer jargon for a distribution, project or project group. e.g. ubuntu, gnome-do or gnome
<jml> you can try running the script with your username and fave project
<jml> The script takes the pillar name from the command line, along with a bug reporter name, finds all of the 'fix released' bugs and then prints out a friendly message.
<jml>     reporter = launchpad.people[reporter_name]
<jml>     fixed_bugtasks = pillar.searchTasks(
<jml>         bug_reporter=reporter, status=['Fix Released'])
<jml> If I run it with this:
<jml> $ python bugstats.py launchpad-code jml
<jml> I get:
<jml> Jonathan Lange has had 164 bugs fixed on Launchpad Bazaar Integration
<jml> To me, the most interesting thing about this script (apart from the cool data) is "how did I figure out to call 'searchTasks'?"
<jml> Well, each of the Launchpad instances has generated API documentation at +apidoc
<jml> e.g. https://staging.launchpad.net/+apidoc/
<jml> or e.g. https://edge.launchpad.net/+apidoc/
<jml> I happen to know a bit about the Launchpad object model, and knew I'd need to get a bunch of "bug tasks"
<jml> A bug task is that row in the table that has an assignee, status, importance etc. A bug can have many bug tasks.
<jml> I went to the API documentation page and had a look around for something that would return a list of bug tasks.
<jml> I found "searchTasks", and then gave it a try and it worked
<jml> The API documentation also told me that people have display_name attributes and that projects do too.
<jml> Note that the API documentation is *not* launchpadlib documentation. It's generic REST API documentation.
<jml> That means you often need to translate from the abstract REST docs into concrete Python. It's not that hard.
<jml> Anyway the script is pretty simple
<jml> <geser> QUESTION: does python-launchpadlib also clean up the cache of old unused files?
<jml> geser, No, it does not.
<jml> geser, as far as I'm aware, there's absolutely no functionality in launchpadlib for removing cache files under any circumstances
<jml> The next revision is something a little bit more complex
<jml> bzr revert -r4
<jml> This script does almost exactly the same thing, except it tells you how successful the reporter was as a percentage of bugs fixed over bugs filed
<jml> The new code is the total_bugtasks line, which finds all bugs of any status
<jml>     fixed_bugtasks = pillar.searchTasks(
<jml>         bug_reporter=reporter, status=['Fix Released'])
<jml>     total_bugtasks = pillar.searchTasks(
<jml>         bug_reporter=reporter,
<jml>         status=[
<jml>             "New",
<jml>             "Incomplete",
<jml>             "Invalid",
<jml>             "Won't Fix",
<jml>             "Confirmed",
<jml>             "Triaged",
<jml>             "In Progress",
<jml>             "Fix Committed",
<jml>             'Fix Released'])
<jml> zoiks!
<jml> (I thought I had my newlines done differently)
<jml> I had to specify each status manually, because 'searchTasks' defaults to only finding open bugs
<jml> Then there's some code to calculate a percentage and print it out nicely
<jml>     percentage = 100.0 * length(fixed_bugtasks) / length(total_bugtasks)
<jml>     print "%s is %.2f%% successful on bugs in %s" % (
<jml>         reporter.display_name, percentage, pillar.display_name)
<jml> Let's try running it!
<jml> $ python bugstats.py ubuntu jml
<jml> Jonathan Lange is 22.22% successful on bugs in Ubuntu
<jml> $ python bugstats.py launchpad-code jml
<jml> Jonathan Lange is 56.16% successful on bugs in Launchpad Bazaar Integration
<jml> Again, you can try it with yourself, or with a friend, or with cjwatson
<jml> That's all I have for the example.
<jml> = 3. Gotchas =
<jml> There are quite a few things that can trip you up with the Launchpad API
<jml> We've already bumped into a couple of them: it's got bugs.
<jml> https://bugs.edge.launchpad.net/launchpadlib/ for more info on that
<jml> The second is that even though it does have documentation, it's not always easy to apply to what you need.
<jml> (wtf, "Colin Watson is 79.65% successful on bugs in Ubuntu"!)
<jml> I'm going to pimp http://help.launchpad.net/API again, since there really is a fair chunk of good documentation there.
<jml> https://help.launchpad.net/API/Examples is good, as is https://help.launchpad.net/API/launchpadlib
<jml> However, the docs often aren't up to scratch.
<jml> There is only one way for them to get better
<jml> People like your good selves must ask questions, get answers, and then edit the help.launchpad.net wiki.
<jml> Another gotcha is error messages.
<jml> Because launchpadlib is a very, very thin wrapper over a generic RESTful client library, if ever you get an exception raised, it's going to be really unhelpful.
<jml> https://help.launchpad.net/API/Examples#Get%20a%20useful%20error%20message%20from%20launchpadlib shows the work-around.
<jml> I think I filed a bug about that.
<jml> hmm.
<jml> there's another gotcha, which is *performance*
<jml> For a lot of the things you probably want to do, you'll end up writing code that looks like this:
<jml>   for thing in bunch_of_things:
<jml>       thing.do_something_on_launchpad()
<jml> Code like this is really really slow
<jml> It'll do an HTTPS request for each 'thing'
<jml> We'd like to have some way of reducing that load, but we don't have any good answers yet
<jml> Only two more gotchas left :)
<jml> Not everything that's in Launchpad itself is exposed via the API.
<jml> Sorry.
<jml> It's generally either really, really easy to expose stuff over the API or almost impossible.
<jml> If the thing you want falls into the first category, you can probably patch Launchpad yourself.
<jml> In any case, *file a bug*. Everything that's not exposed over the API is a bug.
<jml> Last gotcha: testing launchpadlib apps is hard
<jml> jkakar has done some work on this recently
<jml> but I haven't had a chance to look at it.
<jml> That's it on the gotchas: bugs, docs, errors, potato programming, unexposed methods, testing
<jml> = 4. Future =
<jml> There are plenty of other examples of launchpadlib apps out there
<jml> bughugger uses launchpadlib (https://launchpad.net/bughugger)
<jml> quickly has some templates for using launchpadlib (https://launchpad.net/quickly)
<jml> The code that puts branches in https://code.launchpad.net/ubuntu is done entirely with launchpadlib (we talked about those branches last session!)
<jml> There's also a stack of projects that are part of a group called 'lpx' that you can find at https://launchpad.net/lpx
<jml> and at http://help.launchpad.net/API/Uses there's even more stuff
<jml> If ever you need help, ask on #launchpad or #launchpad-dev on freenode or send an email to launchpad-users@lists.launchpad.net
<jml> That's it from me.
<jml> Questions?
<jml> Cool ideas for launchpadlib programs?
<jml> General complaints about Launchpad that I can respond soothingly to?
<jml> By "complaint", I of course meant "suggestion for improvement"
<jml> <vocx> QUESTION: so, Python plays a HUGE part in Ubuntu, no? Other scripting won't feel left out?
<jml> A lot of Ubuntu stuff is written in Python.
<jml> As I mentioned earlier, you don't *have* to use Python to control Launchpad, but it makes it a lot easier.
<jml> <jÃ¶nÃ¶bacon>  QUESTION: Can you make more examples for python-snippets happen?
<jml> jonobacon, I can point you at https://help.launchpad.net/API/Examples again, I guess :)
<jml> <kamalmostafa> QUESTION: Is there a way to access two JSON values in one "call"... I.e.   launchpad.people[reporter_name].latitude   gets the latitude -- is there a way to also get the longitude at the same time?
<jml> kamalmostafa, I'm fairly sure that if you get the object first, then subsequent attribute access doesn't do a separate webapp call.
<jml> so...
<jml> reporter = launchpad.people[reporter_name]
<jml> reporter.latitude, reporter.longtitude
<jml> <vocx> QUESTION: is there a need to worry about python 3.0 breaking something?
<jml> vocx, wrt launchpadlib or wrt Ubuntu more generally?
<jml> vocx, launchpadlib is a Python 2 application. It hasn't been tested with Python 3.
<jml> vocx, I'm not the launchpadlib maintainer, but I tend to think of python3 as a completely different language. if a program works on both 2 and 3 it's a happy accident
<jml> vocx, no plans to port to 3 yet.
<jml> vocx, I guess we'd start doing that when Ubuntu stops providing Python 2
<jml> are there any other questions?
<jml> QUESTION: Can we convince jonobacon to use metal umlauts in his name so my friends can go back to calling me Jono?
<jml> Last chance for questions folks
<jml> remember you can get the code for the example by 'bzr branch lp:~jml/+junk/bugstats'
<jml> and that the folk on #launchpad-dev are helpful and friendly and want more people doing stuff with launchpadlib
<jml> ok folks
<jml> don't mind the dead time on Radio Ubuntu Dev Week, Kubuntu Junior Jobs will be up in 20 minutes
<jml> have a great weekend
<maco> Hiya
<maco> Ready for the Papercuts session?
<maco> I'm going to guess that anyone wanting to sit on in this session is here by now, so...
<maco> Hi, I'm Mackenzie, and I'm a MOTU.  I was asked this morning to cover this session for Celeste since she has school, so I'm going off of her notes
<maco> This session is on KDE Junior Jobs and *buntu Papercuts (or paperkuts <g>)
<maco> So first off, if you don't know yet, Kubuntu is a version of Ubuntu that uses KDE for its desktop environment instead of GNOME
<maco> Most development happens upstream at KDE (kde.org) and then the Kubuntu developers package up each upstream release
<maco> We try to stick closely to upstream, as giving back to the KDE is a good thing, and having to maintain a bunch of patches is a bad thing
<maco> (or at least a not-fun thing)
<maco> One thing we do because users seem to like it and it helps KDE get extra testing is package up pre-releases for KDE
<maco> For example, KDE SC 4.4 RC2 is currently in one of the (many) Kubuntu PPAs
<maco> (more info can always be found at kubuntu.org)
<maco> A number of the Kubuntu developers also write patches which then get submitted upstream to KDE
<maco> and then those new features end up in whatever the next final release is for KDE
<maco> If you're interested in getting started contributing to Kubuntu and KDE, then bug fixes, small patches, papercuts, small improvements on existing features, and other junior jobs are all a GREAT way to get started
<maco> For Karmic, the Hundred Papercuts project was started in Ubuntu, and Kubuntu had a share of them
<maco> (see: https://launchpad.net/hundredpapercuts )
<maco> The goal is to fix 100 papercuts per release, or in the case of Kubuntu (as it's a smaller team (can I add, "and KDE's already awesomer than GNOME"?)), 10 papercuts
<maco> A papercut is defined as "a trivially fixable usability bug that the average user would encounter in default installation of Ubuntu or Kubuntu Desktop Edition"
<maco> Ok well, that's the surface goal
<maco> The REAL goal is to fix all those little annoyances that pile up until the desktop becomes unusable or at least a pain in the rear
<maco> For example, a task may require that you click 10 times among 3 different windows, and well, if you only have to do that once every few months, that's not a big deal
<maco> but if you have to do that 50 times per day...
<maco> It gets old fast ;)
<maco> Anyway, Kubuntu tries to deal with 10 paperkuts per release, and we try to get the patches for these paperkuts accepted in upstream KDE as well
<maco> Because, again, maintaining patches is much less fun than writing them
<maco> Some of the past Kubuntu paperkuts were cases where text was a little too technical for an end-user and had to be changed, or in the Kickoff menu the user's icon was showing next to the search box instead of the user's name
<maco> Here are a list of Kubuntu's papercuts from Karmic & Lucid: https://bugs.launchpad.net/hundredpapercuts/+bugs?field.searchtext=kubuntu&orderby=-importance&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field
<maco> .status%3Alist=FIXRELEASED&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_supervisor=&field.bug_commenter=&field.subscriber=&field.omit_dupes.used=&field.omit_dupes=on&field.has_patch.used=&field.has_cve.used=&field.affects_me.used=&field.tag=&field.tags_combinator=ANY
<maco> (and apparently not all of the kubuntu ones were tagged...)
<maco> I suspect Celeste had links already arranged for seeing past and present Kubuntu papercuts, but I don't have them, so...
<maco> here's some more that say kde but dont say kubuntu: https://bugs.launchpad.net/hundredpapercuts/+bugs?field.searchtext=kde&orderby=-importance&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field
<maco> .status%3Alist=FIXRELEASED&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_supervisor=&field.bug_commenter=&field.subscriber=&field.omit_dupes.used=&field.omit_dupes=on&field.has_patch.used=&field.has_cve.used=&field.affects_me.used=&field.tag=&field.tags_combinator=ANY
<maco> Anyway, moving on...
<maco> If you think you've found a papercut, submit it as a bug to Launchpad
<maco> Mark it as  bug both against the "hundredpapercuts" project and the specific package in Kubuntu if you know it
<maco> If you would like to fix one of those papercuts you see up there but you need some help ^  join #kubuntu-devel and
<maco> er... and we'll help you out
<maco> OK, so that's papercuts.  I mentioned something called "Junior Jobs" at the start too
<maco> Maybe you've seen bugs tagged "bitesize" in Launchpad, or you might know about Daniel Holbach's Harvest project to show low-hanging fruit for new developers
<maco> Junior Jobs are KDE's version of that same idea
<maco> And I'm being told in -chat that I should point out that "job" is like "volunteer job" in case you're thinking you can get money for it. Because you won't.
<maco> QUESTION: link for the harvest project? (i am google challenged at the moment)
<maco> Harvest can be found at http://daniel.holba.ch/harvest
<maco> There are plans to make it prettier
<maco> By the way, my computer is currently telling me that opening the "sourcepackage list" page on Harvest while having ~100 other tabs open in Firefox is an idea to which it is opposed. You've been warned.
<maco> OK, so...Junior Jobs.  The KDE techbase (one of the KDE wikis) page for Junior Jobs is here: http://techbase.kde.org/Contribute/Junior_Jobs
<maco> As you can see, KDE separates its Junior Jobs by sub-project, so you can see just KMail or just Kopete or whatever's available jobs
<maco> Or you can see all of the KDE Junior Jobs here: https://bugs.kde.org/buglist.cgi?keywords=junior-jobs&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&cmdtype=doit
<maco> Earlier this question came up and I held it til reaching the Junior Jobs part...
<maco> QUESTION: some bugs marked as Junior Jobs don't sound easy, like implementing a new KIO slave, how come they are marked as Junior Job?
<maco> Now, I don't have a lot of involvement with upstream KDE like Celeste does, so she'd have a better answer than I do, but I wouldn't be surprised if there was a bit of mentorship in there somewhere
<maco> I also don't think Junior Jobs are supposed to be aimed at "I've never written code before" but rather "I can code...kind of...but I've never worked on such a big project before"
<maco> And a lot of the Papercuts are quite a bit more advanced than "I've never written code before" too, so... keep that in mind
<maco> Nightrose: do you have a better answer to "some bugs marked as Junior Jobs don't sound easy, like implementing a new KIO slave, how come they are marked as Junior Job?"
<maco> Oh yeah, let me introduce Nightrose, aka Lydia
<maco> She's the Amarok lead, I believe
<Nightrose> jep :)
<Nightrose> so people said some of the junior jobs are hard
<Nightrose> there are two reasons for this:
<Nightrose> 1) the person who marked it as a junior job didn't know the program very well and didn't know how hard it actually is
<Nightrose> 2) the person who marked it is having a hard time judging how hard a particular task is
<Nightrose> neither is really nice but it happens
<Nightrose> we try to keep them at junior level as wel as we can of course :)
<maco> Nightrose: can they be un-marked as JJs?
<Nightrose> yes of course - tell me or other people in #kde-bugs
<maco> Great! Thank you :)
<Nightrose> you're welcome :)
<maco> Feel free to thwap me if I say anything wrong/stupid between now and 15 minutes :)
<maco> <Quintasan> maco, Nightrose: is anyone in particular responsible for reporting PaperKuts to KDE? I mean something like Bug #510219, marked as tiriaged but not linked to any of KDE bugs, it's safe for me to report that upstream and link it to LP?
<maco> Go right ahead :)
<maco> QUESTION: If I want to patch KDE progressbar animation smoothness, where would I start? The oxygen theme? (I've patched it locally before :) )
<maco> Neither Nightrose nor I know know to answer this one, so I guess now's the time to note that on this IRC server there is #kde-devel, and they would likely have an answer
<maco> And Mamarok is pointing out that Nightrose is release manager, not lead. oops!
<maco> Anyway, time to start wrapping up
<maco> So the benefits to participating in Junior Jobs or Papercuts are that you get a chance to test out your skills in a *real* project, not those silly things the teachers make you write at school
<maco> You get a chance to gain some rapport with the rest of the project so that as your skillset grows, they know and trust you
<maco> You end up witha more usable desktop, which is always great
<maco> programming, why hasn't it caught with enough strength? Do women like C++?
<maco> bah
<maco> QUESTION: if Qt (C++) is supposedly hundreds of times better than GTK+ (C) for GUI programming, why hasn't it caught with enough strength? Do women like C++?
<maco> Honestly, the reason I know how to do C/GTK+ programming and not C++/Qt is that my school taught C, not C++
<maco> and I haven't gotten around to learning C++
<maco> In either case, PyGTK and PyQt (and PyKDE) exist, so even so, learning C/C++ is not a requirement to participation
<maco> And I'm just not going to answer that women...C++ part.  People use what they like, regardless of gender.
<Nightrose> there are also bindings for scripting languages
<Nightrose> so you can do cool stuff in ruby or java script
<maco> This does bring up the point that on top of learning just Python or C++, there are libraries you need to learn to work in the KDE world, so Junior Jobs / Papercuts give you a chance to build on top of your base programming knowledge if you just know Python or C++
<maco> Any other quick questions in the 3 minutes we have left?
<maco> QUESTION: Does everybody know that KDE+Kubuntu will rule the world?
<maco> Yes, but whether they're willing to admit it is another thing entirely
<maco> <Mamarok> also, Qt/C++ allows to do shorter code, the Qt framework is very powerful   <-- good point. you'll find you can do a lot of painful things very easily as you get into KDE programming
<maco> OK, time's up here. Hope everyone's all excited to get cracking on these bugs
<maco> Bye!
<Nightrose> thanks everyone for coming and maco for rocking :)
<maco> Thanks for your help, Lydia
<persia> OK.  That means it's time for Interpreting Stacktraces :)
<persia> I get distracted with -classroom and -classroom-chat, and really prefer interactive discussions, so I encourage anyone to ask questions in this channel at any time (I prefer to be interrupted)
<persia> As an example, we're going to look at a crash in dot.  Anyone wanting to follow closely would benefit from getting a local copy of the cairo and graphviz sources (because we'll be looking at them later)
<persia> Either karmic or lucid sources should be OK.
<persia> A stacktrace is the overview of the current function call stack for a program, and is extremely useful when determining why a crash happens.
<persia> Thanks pleia2 :)
<pleia2> welcome :)
<persia> When a program executes, the various function calls and instructions in the program are run, typically in some sort of order, which we can see from the source code.
<persia> In most programs, there is a main() function, which controls the entire program. In executing it, otehr functions will be called to do various things.
<persia> These functions will then call other functions, and so on, in a nested fashion.
<persia> Each function called is placed on the top of the stack when it is called, and when it, in turn, calls another function, that function is placed on the top of the stack.
<persia> As a result, at any point, the function on the top of the stack is the currently executing code, and the rest of the stack contains all the nested functions needed to unwind to get back to the operating system starting the program.
<persia> An example stacktrace (and the one we'll use for debugging today) is http://launchpadlibrarian.net/37459596/Stacktrace.txt
<persia> The stack is commonly described in terms of frames.  Frame #0 is the currently executing function, Frame #1 the function that called that function, etc.  In our example, Frame #8 is main() which was called by the operating system when starting the program (sometimes you can see this, depending on the stacktrace)
<persia> At each Frame, the stacktrace contains the address of the function, the name of the function, the values of (most of) the arguments to the function, and often some avtive variable values in the vicinity.
<Pendulum> < vishalrao_vbox> QUESTION: who/how generates a textual stacktrace from, say, a core dump?
<persia> Well, there's lots of ways to do that :)  The two most common ways to generate stacktraces as used for crashes in Ubuntu are with gdb and apport.
<Pendulum> < michae28> QUESTION : what is vicinity ?
<persia> "vicinity" is a state of being near in space or relationship.  Things in the same vicinity are close to each other.
<persia> Could also be nearby, surrounding, etc.
<Pendulum> < vishalrao_vbox> QUESTION: can you briefly mention the commandlines for gdb and apport to generate the stacktraces?
<persia> The process of generating a stacktrace with gdb is described at https://wiki.ubuntu.com/Backtrace
<persia> For apport, there are three ways to do it, all dependent on the apport-retracer infrastructure.
<persia> The first being to enable apport crash tracking, which automatically uploads the crash information to launchpad and files a bug when a crash happens.
<persia> The second being to use apport-bug to file a bug with a previously produced .crash report
<persia> The third being to use apport-retrace manually to collect information.
<persia> If the details in the crash report are uploaded to launchpad, the apport-retracers will typically use them to generate textual stacktraces with debugging information.
<persia> So, by using the stacktrace, we can see exactly what the program is doing at the time the stacktrace is taken.
<persia> In our example, the program started, did some stuff which resulted in a call to gvRenderJobs(), which did something and called emit_graph(), which did something and called emit_background(), and so forth.
<Pendulum> < vishalrao_vbox> QUESTION: if i try to generate a backtrace in gdb and it just shows numbers instead of symbols, how do i get it to show me the function names etc?
<persia> To determine the parts that aren't described, we'll need to review the source code along with the stacktrace.
<persia> For most programs, the debugging symbols have been stripped out into ddebs.  These contain mappings between the function call addresses and the code.
<persia> I can never find the right wiki page that explains how to install them, but it should be navigable from the links in the /topic of #ubuntu-bugs (or maybe someone else can dig it up and share)
<persia> The example stacktrace I've shown comes from Bug #503503
<ubottu> Bug 503503 on http://launchpad.net/bugs/503503 is private
 * persia fixes that
<persia> Right.  Now bug #503503 should be public
<ubottu> Launchpad bug 503503 in graphviz "dot crashed with SIGSEGV in cairo_set_dash()" [Medium,New] https://launchpad.net/bugs/503503
<persia> This bug was filed using apport, which I find much easier to search.  If you're looking for other crash bugs, using the apport-crash tag is great way to get a list from which to work.
<persia> The title of the bug tells us that there was a segmentation fault when calling the function cairo_set_dash().  These tend to be my favorite sort of crash bugs, because they are usually fairly easy to track down.
<persia> http://en.wikipedia.org/wiki/SIGSEGV has a little more information about segmentation faults.
<persia> Other than the title, the rest of the bug report is mostly uninteresting at this point.  Depending on what we find, we may want to investigate using some of the other provided information (for instance, if we're crashing in translations, the fact that it's reported with de_LU.UTF8 is important)
<persia> Well, there's one other interesting thing, actually, which is the package against which the bug is filed.  This tells us which package we need to get source from in order to interpret the stacktrace.
<persia> Also, reviewing the stacktrace, one might notice that the source file identified at frame #0 is /build/buildd/cairot-1.8.8/src/cairo.c rather than some local file.  This notation is used to identify code from other packages.  In this case, it's the cairo package (version 1.8.8), so that's why we wanted to download graphviz and cairo sources earlier (and I'll now assume that you've all done that)
<persia> The first step when reviewing a stacktrace is to find somewhere interesting to start.  One could always just look at frame #0 where the crash is actually happening, but this is rarely enough context to actually understand the bug.
<persia> Alternately, one could start from the very bottom of the stack, but usually the first several calls are far too general, and it's easy to get frustrated or distracted reading that much source.
<persia> It's never possible to know the right point in advance, but I usually pick something near the middle, preferably something that has a lot of vairable references defined.
<persia> So in this case, frame #4 looks like a sensible place to start.  From here, we'll read up to frame #0 to understand things.  If the problem has already happened at frame #4, we may end up backing up (perhaps even to frame #0) to fix it, but at least we'll understand the targets to search when we look at the more general code.
<persia> So, frame #4 is the gvrender_box call at line 851 of gvrender.c .  Since there are no funny pathnames, this is in the graphviz source.
<persia> I usually use `find . -name ${SOURCE} -print` from within the source directory to quickly identify the right file.
<persia> Running `find . -name gvrender.c -print` shows ./lib/gvc/gvrender.c
<persia> Please open that file in your favorite text editor
<persia> At line 851 is a gvrender_polygon call, which is giving us trouble.  Unless we've previously worked with this source, we probably don't know what this means, although the name may help us guess.
<persia> So, it's best to scroll up to the beginning of the function that is calling gvrender_polygon() and read down again to line 851 to get some understanding.
<persia> The top of the function is at line 840, and the entire function consists of setting the values of variable A (type pointf) based on values from variable B (type boxf).
<persia> So in our call, we are just passing through the job pointer and the filled boolean, along with A and a number.
<persia> Next, we look at frame #3, which is at line 812 of gvrender.c
<persia> Again, we scroll up to the beginning of the function (at line 805), and read down.  We know the inputs from the last function we read, so we can understand this a bit better.
<persia> The function assigns an engine from the job, apparently succeeds (because of the if), apparently confirms the job has the GVRENDER_DOES_TRANSFORM flag set, and calls gvre_polygon using all the same values that were passed in previously.
<persia> Moving to frame #2, we need to switch source files, to gvrender_pango.c
<persia> THis is in ./plugin/pango\gvrender_pango.c
<persia> Line 277 is in the cairogen_polygon function, which isn't quite the name that was called, but seems to take the same inputs we had previously.
<persia> Between the start of the function and the call in the stacktrace, we see only that *obj, *cr, and i are defined (and *obj and *cr are initialised).
<persia> We then call cairogran_set_penstyle with job and cr.  Looking at the stacktrace, we can see that job is optimised out (but had been0x90945d0 in previous calls, so is probably the same)
<persia> And cr is 0x0.
<persia> since we know that cr is a pointer to a variable of type cairo_t, it shouldn't have a value of 0 (this is a null pointer).
<persia> Which probably means that cairo_t *cr = (cairo_t *) job->context; failed.
<persia> Moving to frame #1 is just moving to line 235
<persia> Here the function sets *obj again, and based on the value of *obj, selects a way to call cairo_set_dash().  In our case, it's the neither a dashed nor a dotted pen.
<persia> But we pass dashed anyway :)
<persia> For frame #0, we need to look at the cairo source code.  This is in src/cairo.c (it's easier to tell with foreign source files)
<persia> Looking at line 1033, and up to the start of the funtion, we can see that we're right at the beginning.
<persia> Before doing anything else real, the code checks the status of cr.  Since cr is a 0, the expected structure isn't present, so cr->status isn't valid, which causes the segfault.
<persia> This is another thing to fix,because it's best for a library not to crash, even when the wrong data is passed.
<Pendulum> < vocx> QUESTION: are stack traces really important nowdays? I feel like much development is done now in programming languages such as Python and C#/Mono, which use their own runtime, and so don't "crash" in the traditional way, and don't produce a stacktrace.
<persia> So, after reading the stacktrace, we've identified two things to fix, either one of which would solve the bug.
<persia> 1) test to make sure one has a valid value for cr in cairogen_polygon(), and 2) put an exception handler around the status check in cairo_set_dash()
<Pendulum> < vocx> QUESTION: in your experience, where are the crashes most often found? The program itself, or the supporting libraries, like Gtk+, Qt, glib, cairo, poppler, etc.?
<persia> Python produces something called a Traceback, which is essentially the same as a stacktrace, except presented in the opposite order (frame #0 is at the bottom).
<Pendulum> < michae28> QUESTION : <value optimized out> does it mean that the real value cannot be displayed ?
<persia> But the vast majority of system libraries end up being written in compiled languages, so if there is a crash in a library, a stacktrace is likely interesting (even if the call comes from python or mono bindings)
<persia> I've yet to find a crash that couldn't be worked around by type checking, value checking, return code checking, or exception handling in client code.
<persia> But many crashes *also* expose an issue with the underlying library (as we saw in this case, where both graphviz and cairo could use code improvements).
<persia> When the value is opimised out, it usually means that the value isn't relevant in some way, or is redundant.  In our example case, the value for job was passed a couple times, and then dropped.  We could still look at older uses, but it no longer mattered.
<Pendulum> < SevenMachines> [QUESTION] Often you see argument memory addresses cropping up in stacktraces, is there a good way to get more information in the stacktrace on the actual object on the heap that was passed?
<persia> Not really.  I tend to try to assemble a mental model of the object by passing through several frames.
<persia> If the intial guess for starting was wrong, one sometimes needs to go back further to understand the data being passed.
<persia> But most of the time, crashes seem to be from a miscommunication between the library author and the application author, where one is expecting something different than what the other is providing.
<persia> And these tend to be obvious (like the one we examined, where the code never checked to see if a valid value was being passed to cairo, and when cairo couldn't complete the request, didn't trap the return)
<persia> Whether SIGSEGV is the best thing for cairo to return is a different question, but that it wasn't checked doesn't help.
<persia> cairo should probably have trapped the SIGSEGV, and returned someting with _cairo_set_error, and graphviz should have checked the value of _cairo_set_error (as well as having checked to make sure cr was a valid pointer before using it)
<persia> Are there more questions?  I seem to be out of time, but there's no following sessions, so I'm happy to keep answering questions for a bit.
<Pendulum> < michae28> QUESTION : to have all this stack informations, the program have been compiled with -g option ?
<persia> I actually don't know.  I've gotten stacktraces just using `gcc foo.c -o foo`, but this may have been from some default options that were set.
<persia> Well, thanks everyone for attending.  Feel free to catch me in #ubuntu-bugs if you're digging through any traces and have questions in the future.
<persia> And thanks a lot for participating in Ubuntu Developer Week.  I hope some of you will be presenting next time :)
<persia> Pendulum: Thanks especially for forwarding questions.
<Pendulum> persia: you're welcome :) Thank you for presenting :)
#ubuntu-classroom 2010-01-30
<SpinachHead> Hi if I want to run the latest build to do development, is vmware server okay? Or the player? or do I need the GSx?
<nhaines_> SpinachHead: VMware Server or Player is perfectly fine, as is VirtualBox.
<SpinachHead> oh, I didn't know about virtualbox, maybe that looks better
<daskreech> And it's open code :)
<SpinachHead> yeah, and I found packages in synaptic
<jmarsden> I did a talk about virtualbox for a local Linux user Group recently, and yes, it's easy for beginners to use.  Slides at http://crosswire.org/~jmarsden/taks/virtualbox/virtualbox.html
<nhaines> I always like to mention Virtualbox.  :)
<SpinachHead> thx, the link is off though
<SpinachHead> oh, it was just missing the l in taks for talks instead. Works now
<jmarsden> That'll teach me to type in a link that long by hand :)
<SpinachHead> Hi, one more question for development do I want the dailybuild or an alpha 2
<nhandler> SpinachHead: You might want to read https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases
<nhaines> Alpha 2 is more guaranteed to install, and of course Update Manager will bring you up to the daily build, but you may want to grab the daily and test to see if it installs so you can file bugs.  :)
<SpinachHead> okay, thanks that helped clarify it for me
<nhaines> SpinachHead: Also, don't be afraid to read the link that nhandler gave.  With a name like Nathan he can't be too wrong.  ;)
<nhandler> :)
<JFo> !ops
<ubottu> Help! Channel emergency! (ONLY use this trigger in emergencies) -  elky, Madpilot, tritium, Nalioth, tonyyarusso, PriceChild, Amaranth, jrib, Myrtti, mneptok, Pici, Jack_Sparrow, jpds, bazhang, jussi01, Flannel or ikonia!
<JFo> looks like we need a +R again
<nhaines> +R?
<nhaines> Ooh, I didn't know Flannel was an op in here.
<JFo> nhaines, yeah where we only allow registered nicks
<nhaines> Ah.
<JFo> keeps the junk like above from happening
<JFo> and on the downside keeps those with unregistered nicks out
<JFo> there is no good solution
<Myrtti> no they can still join
<JFo> hmmm, what am I thinking of then
<Myrtti> they justt cant send messages
<JFo> do they have voice Myrtti?
<JFo> ah, that was it
<Myrtti> +r
<JFo> saw that in action earlier today
<Myrtti> thats what you're thinking
<JFo> <-mind is awash with useless information in no order :)
<JFo> thank you :)
<JFo> it is a wonder I am effective at work
<nhaines> Hey, wasn't there some sort of upgrade that was supposed to happen an hour ago?
<nhaines> Oh, heh, nevermind.  Happening soon.
<issyl0> nhaines: happening as we speak - global notices tell all :)
<nhaines> Hehe.  :)
<nhaines> Looks like they're just bringing everyone over now.
<nigel_nb> yeah
<nhaines> Glad to know it worked, hehe.
<nhaines> Hehe, I'll bet #ubuntu was spectacular.
<nigel_nb> hehe
<cjohnston> ~
<cjohnston> ~
<cjohnston> uggh
<jpds> ...
<wolferi> hy all
#ubuntu-classroom 2011-01-26
<dm> hi there!
<dm> anydody alive here???
<garfield> i have a question
<serfus> garfield, if you are looking for support, you better try at #ubuntu
<himuraken> Is the calendar correct that classes are being held in the early (1,2,3) am?
<himuraken> Ah must do a GMT conversion XD
<pleia2> User Days is 21 hours long, so yes for some time zones there will e classes at 1AM
<pleia2> s/e/be
<himuraken> Thanks pleia2
<pleia2> https://wiki.ubuntu.com/UserDaysTeam/maverick links to dateandtime.com links to make conversion easier :)
#ubuntu-classroom 2011-01-27
<EBC3> morning all
<the_hydra> i am ready for the upcoming session...
<resno> 6 more mins
<nigelb> Folks, special announcement.
<nigelb> Today is the_hydra's birthday!
<nigelb> And he's celebrating that by giving a session in -classroom!
 * the_hydra bows to everyone 
<resno> happy birthday the_hydra
<resno> by the way, we arent muted ;)
<the_hydra> resno: thanks...I hope I do something meaningful
<the_hydra> ok, is it now?
<resno> the_hydra: me too
<resno> its 11 am!
<the_hydra> ok, let's begin, shall we?
<nigelb> hang on for a minute
<the_hydra> k...
<nigelb> the classbot should kick in
<resno> whats the chat channel?
<the_hydra> "ubuntu-classroom-chat" AFAIK
<resno> thanks
<the_hydra> ok people, let's roll
<the_hydra> today, I am gonna discuss about how to use monitoring tools in Linux to pinpoint system problems such as lack of RAM and so on
<the_hydra> what we're gonna quickly observe here is top, vmstat and friends
<the_hydra> "top" is a classic...you will likely find it in every UNIX flavour....
<the_hydra> if you look closer, "top" display almost everything, your CPU usage, memory usage, process statistics
<the_hydra> they're either displayed as percentage or number...mostly..
<the_hydra> for example, CPU usage...are divided into user and system (marked as "us" and "sy")
<the_hydra> anyone has idea what they mean?
<c2tarun> us: processes that are controlled by user account
<c2tarun> and don't have there system account (i guess)
<the_hydra> other ideas?
<obengdako> well like you said us for user and sy for system
<the_hydra> alright, "us" means time spent in user mode
<resno> user: processes that the user owns or runs
<the_hydra> while "sy" is system
<the_hydra> let's pick cp
<the_hydra> when you copy a file with it, cp do two things actually:
<the_hydra> 1. read the data from disk
<the_hydra> 2. copy it to memory area, and write it somewhere
<the_hydra> read and write to disk are example of system work
<the_hydra> while pasting them to temporary buffer in RAM is user mode
<the_hydra> or to make it simple, "sy" is anything where kernel is involved
<c2tarun> the_hydra: What does it actually mean by user mode?
<the_hydra> meaning, it could entirely done without kernel involved
<c2tarun> ok
<the_hydra> e.g: number operation (substract, multiplication)
<the_hydra> so, let's bring this knowledge when observing top
<the_hydra> high "us" means CPU is busy doing very likely number crunching
<the_hydra> you guys got a figure what number crunching is?
<obengdako> sorry guys but aren't we supposed to ask questions in the chat section because i just asked there and see others ask here
<the_hydra> ok wait
<the_hydra> Q: obengdako : i realise for cpu there is also ni id wa hi si st what do they mean?
<the_hydra> ni is a field that tells us how much CPU time is spent to work on "niced" jobs
<the_hydra> nice means any process with priority higher than 0
<the_hydra> these jobs are likely to be scheduled less frequently...because CPU prioritize bigger ones
<the_hydra> id --> idle... CPU idle a.k.a resting :)
<the_hydra> wa--> ok this is interesting
<the_hydra> ever wonder on event like waiting cp or rsync doing large files transfer?
<the_hydra> although they spent time in user and system mode, but they spend more in waiting....
<the_hydra> why wait? because the data need to be read from the disk spindle
<the_hydra> reading from disk are thousands time slower rather than from RAM...so you got the picture
<the_hydra> other example are waiting data from network
<the_hydra> so next time you see high number it %wa, go check if an application is sitting in background doing I/O
<the_hydra> Q: <obengdako> when you say higher you mean greater than zero and meaning a lower priority?
<the_hydra> in priority, bigger number means lower priority
<the_hydra> so +5 vs -5, -5 wins :)
<the_hydra> next: si and hi...
<the_hydra> they are interrupts actually
<the_hydra> if it's quite big, let's say 50%, then very likely a device is "interrupting" your CPU too much
<the_hydra> it could be sending data, a damaged hardware and so on
<the_hydra> lately, thanks to DMA (Direct Memory access), CPU is less likely involved in hardware operation, so you can be more relaxed in regards to CPU utilization
<the_hydra> Q: <obengdako> so ni will be for the higher priority stuff that have figures less than zero eg. pulseaudio at -11
<the_hydra> nope, -11 isn't accounted in %ni
<the_hydra> only if e.g pulse audio is marked as +5
<the_hydra> Q: <obengdako> so would si be system interrupt and hi be hardware interrupt?
<the_hydra> nope, si is "soft interrupt"
<the_hydra> while "hi" is hard interrupt
<the_hydra> "hi" for example is interrupt coming from your keyboard received by the CPU
<the_hydra> and "si"? you can think like this: Linux kernel splits the job of taking care your hardware in two "session"...initially, in "hard interrupt" mode
<the_hydra> which is done as fast as possible
<the_hydra> and later, the rest is done in "soft interrupt"
<the_hydra> so both represents the job when system is handling hardware most of the times
<the_hydra> let me pause briefly here...
<the_hydra> note: likely you will just need to watch %id
<the_hydra> because, by knowing it, you could have idea how busy the CPUs are :)
<the_hydra> for example, %id is 99%
<the_hydra> so CPU is only busy 1%
<the_hydra> press "1" to get per core/ per physical CPU statistic
<the_hydra> by default what you see there is  the sum of all CPUs
<the_hydra> Q: <obengdako> final about ni so desktopcouch-se with ni of 10 will be accounted for in %ni and not pulseaudio with -11 ?
<the_hydra> correct obengdako
<the_hydra> and if you suspect slowness but you think Linux is "doing nothing", check %wa
<the_hydra> if it's bigger than 0, then.....it's doing I/O e.g reading your USB thumbdrive
<the_hydra> Q: <himuraken-mobile> How to switch back to sum of all cpu?
<the_hydra> simple, "1" again :D
<the_hydra> it's a toggle :D
<the_hydra> ok, slipped something...
<the_hydra> see "zombie" field?
<the_hydra> got idea what that is?
<the_hydra> <resno> zombies are processes that havent quit yet
<the_hydra> correct...
<the_hydra> so, if you see that field is bigger than zero...very likely you see bugs in the current running applications
<the_hydra> to pin point it, you can use "ps" or "top" in batch mode and look out for process with "Z" status
<the_hydra> such as "ps auxww | grep Z"
<the_hydra> AFAIK to get rid of it, you have to kill the "master" process
<the_hydra> pstree could help locate the parent of the zombie
<the_hydra> Q: <obengdako> how do i use top in batch mode?
<the_hydra> use -b switch
<the_hydra> please note that batch mode will use any setting you have written to ~/.toprc
<the_hydra> for example, you have set that you only display 20 process (by pressing "n" in top"), then in batch mode you will only see 20 process listed too
<the_hydra> batch mode is an alternative way to continously monitor your system but in non interactive mode :)
<the_hydra> ok, may I move to memory part?
<the_hydra> you will likely think "great, all my RAM are used?"
<the_hydra> "all are my app that hungry"
<the_hydra> most likely no...check buffers and cached field
<the_hydra> the bigger they are, meaning Linux is caching some of recently accessed files in your RAM
<the_hydra> the purpose? to speed up the next access toward those files
<the_hydra> Q: <resno> the_hydra: did you talk about st?
<the_hydra> st is "steal"
<the_hydra> what is stealed?
<the_hydra> it's introduced in this virtualization hype era
<the_hydra> it means some of your CPU time are accounted for doing something for the virtual machine
<the_hydra> so if you run plenty virtual machines (be it KVM, Xen, Qemu in KVM mode etc), you will see this field increased
<the_hydra> swap used is bigger than 0? meaning: you need more RAM... :)
<the_hydra> seriously: swapping should be avoided actually...so if you have budget and can afford for bigger RAM, buy them..it will make your machine runs faster
<the_hydra> these days, 2 GiB is the lowest amount of RAM you should have IMHO
* 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 || Current Session: How to use top and similar tools to pinpoint system problems - Instructors: the_hydra
<nigelb> doh
<ClassBot> resno asked: Is there a way to tell when the CPU is not keeping up.  As in when more RAM wont help.
<the_hydra> while %sy and %us are nice clue, for better indication use load average field
<the_hydra> those three number represents loads during the last 5, 10 and 15 minutes respectively
<the_hydra> but what is "load"?
<the_hydra> the simplest meaning is: the average number of process running per core
<the_hydra> so if you have quad core and you see -/+ 4.0, it means per core are fairly constantly running 1 process
<ClassBot> obengdako asked: so if my swap is never used according to top can i delete the swap partition?
<the_hydra> better not..think swap like the emergency room
<the_hydra> if you have no swap and suddenly your application need more "memory", you will ended with situation called OOM (out of memory)
<the_hydra> the effect? your app will be killed....:D
<the_hydra> must be hurry :)
<ClassBot> There are 10 minutes remaining in the current session.
<the_hydra> process field....you can sort them here..press "M" to sort them by memory usage
<the_hydra> and "P
<the_hydra> for CPU usage
<the_hydra> so if you wanna get quick idea which one is hungry for RAM...press M...then kazaam...you know it :)
<the_hydra> pay attention that for finer grained statistics, you need to lower the update...press "s" and make it somewhere between 3 and 5
<the_hydra> anything higher will make top update quite slow
<the_hydra> but if it is lower than that, you will make top itself one of top  CPU consumer :)
<the_hydra> VSZ or RSS, which one represents memory usage?
<the_hydra> correct answer is RSS
<the_hydra> you can think VSZ like the final plan construction of  a building
<the_hydra> while RSS is current progress of building construction itself
<ClassBot> There are 5 minutes remaining in the current session.
<the_hydra> effectively use "P" and "M" will help you to find out question like "machine feels slow, ok who's the suspect?"
<the_hydra> again, questions?
<ClassBot> obengdako asked: sorry but where from RSS and VSZ are they in top? or should i google?
<the_hydra> oh sorry, I mean RES and VIRT
<the_hydra> VIRT=virtual size (final plan construction"
<the_hydra> RES= current construction progress
<the_hydra> i think we got 2-3 minutes left
<the_hydra> btw, press "f" in top...you have plenty choice of fields there
<the_hydra> perhaps another time,I shall discuss them
<ClassBot> obengdako asked: so is that like the maximum possible allocation for an app (virt) and res the current allocation?
<the_hydra> not really...virt itself can expand
<the_hydra> but compared to RSS, it is likely to change too frequently
<the_hydra> it is not, I mean
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/27/%23ubuntu-classroom.html
* 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 ||
<obengdako> wow great session the_hydra
<nigelb> Thanks for the wonderful session the_hydra and Happy birthday again!
<the_hydra> sorry if the time feels too narrow, guys
#ubuntu-classroom 2011-01-28
<RyanTheInternetP> hi
<thoufi> hello ubuntu's ..
<jith> hi
<jith> any one is here
<jith> ?
<thoufi> want to know abt ubuntu deepy..
<thoufi> pls help
<jith> me too new to ubuntu
<thoufi> oh ....share some ideas to create a webpage using php
<faroukus> hello
<irrsi> hello
#ubuntu-classroom 2011-01-29
<sebsebseb> Hi
<Anto> Hi i'm a new user to fedora, can you help me?
<ikt> Anto, this is probably the wrong place to look for help
<ikt> this is a chatroom for irc discussions based around: https://wiki.ubuntu.com/Classroom
<Anto> Ok fine, i guess there is some event going on, how to connect to that?
<ikt> doesn't start till later tonight
<Anto> Oh I thought its starting at 8.30
<Anto> So after it starts how to connect to it, i'm a newbie!
<ikt> that's ok
<ikt> you just have to be in this channel
<ikt> this channel will be muted so only specific people can talk
<ikt> and you can ask questions in #ubuntu-classroom-chat
<Anto> Oh fine, so i have to be in this channel, right??
<ikt> yep :)
<Anto> hmmm fine, thanks
<Anto> I'm using Fedora, is this event will help me?
<ikt> a little bit, but not as much if you were using ubuntu
<anlarye> it might give you some help ... this event will be using Ubuntu which is based on Debian and Fedora is based on Red Hat. There are differences but still it will be useful.
<ikt> yeah, switch over to ubuntu :D
<Anto> Oh!
<anlarye> LOL ikt
<ikt> http://www.ubuntu.com/ <- ubuntu > fedora
<Anto> hmmm!
<Anto> So your saying ubantu is better than Fedora? :)
<ikt> yes :D
<anlarye> everyone believes their flavor of Linux is better than others
<anlarye> ubuntu is my choice but then i've always been on the debian side of things
<Anto> Oh Ok ok
<ikt> anlarye, it depends though, ofc I love ubuntu but if someone asked me what distro to checkout before using red hat, I would recommend fedora
<ikt> if someone asks me which distro I recommend for new users, it's always going to be ubuntu
<ikt> or even linux mint
<anlarye> mint is based on ubuntu isnt it
<ikt> yep
<anlarye> i like ubuntu of course myself ...
<Anto> But the command's in ubantu and fedora changes?
<Anto> a little bit?
<ikt> yeah a little bit
<ikt> that's if you're using the commands
<Anto> Ya or else the desktop structure all same right isn't it?
<anlarye> fedora would use yum for installing packages via command line while ubuntu uses apt-get
<Anto> I have a doubt, can I put nw?
<ikt> nw?
<Anto> now!
<Anto> like in windows os, if some one went wrong, we can claim Microsoft, but in case of open source, whom to claim?
<ikt> you can try it now yeah, you just install it to a usb drive or cd and then when you boot of the cd, it has try ubuntu without installing, use that and then if you like it you can install
<Anto> sorry something went wrong  means.......
<ikt> oh
<ikt> if someone goes wrong we have: http://ubuntuforums.org/ + #ubuntu + #ubuntu-beginners
<ikt> but ubuntuforums.org is incredibly active, your questions would be answered there quickly
<ikt> Active Members: 56,819
<ikt> someone = something
<Anto> But if something internally goes wrong, say kernel crashes.. then who will be responsible?
<ikt> you would be, because you did something wrong :P
<Anto> A critical answer ;)
<ikt> but if something does go wrong (and it will because we are not all experts) then the ubuntuforums.org can answer if you need help
<ikt> but ubuntu is the easiest to install
<ikt> easier than windows to install
<Anto> Oh ok ok!
<Anto> I havent tired it :)
<anlarye> its helped me a few times :)
<anlarye> and even here on IRC too
<anlarye> love the support
<ikt> yeah support with ubuntu is by far above and beyond the best
<Anto> Oh!!!
<Anto> I'm waiting for the event to start!! :)
<ikt> ^_^
<Anto> when the event will be start?
<pleia2> 8:30 UTC, you can see the current UTC time with this command in a terminal: date -u
<Anto> date -u
<pleia2> not here, in a terminal on your computer :)
<pleia2> a little under 4 hours from now
<Anto> Oh !!!!
<habeouscorpus> four hours?
<anlarye> Sat Jan 29 04:39:01 UTC 2011
<habeouscorpus> I'm going to be, graces willing, passed out in bed in four hours.
<pleia2> well it lasts for 21 hours, so there will be plenty of other classes when you wake up :)
<habeouscorpus> is there going to be logs posted online somewhere?
<pleia2> all logs are automatically posted to irclogs.ubuntu.com
<pleia2> plus they will be linked to the wiki after each session
<pleia2> (well, as soon as a volunteer can add the link :))
<habeouscorpus> ooh nice little ftp style going on there
<Anto> Event will be a "video streaming"?
<pleia2> no, it's IRC only
<pleia2> our presenters are from all over the world
<Anto> So all things will be chatted??
<pleia2> yes
<pleia2> presenters talk here, you can ask questions and talk about the session in #ubuntu-classroom-chat
<Anto> oh, i'm a newbie!! Will it help for me?
<Anto> and i'm using fedora :)
<pleia2> the schedule is here: https://wiki.ubuntu.com/UserDays
<pleia2> it's geared toward regular users, so hopefully you'll find something useful :)
<Anto> Ya, its cool :) I'm a hard fan windows user :) Time changed me:)
<sam1231> hello everyone...!!!
* 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 User Day - Current Session: Introduction to User Day - Instructors: nigelb, pleia2
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> Hello everyone, and welcome to our third Ubuntu User Day event! https://wiki.ubuntu.com/UserDays
<pleia2> The User Days Team has been working hard these past few weeks in order to bring you these 20 sessions.
<pleia2> Due to today's event lasting more than 20 hours, the other members of the User Days Team are unable to be here right now. However, they will be around helping out later in the day, so be sure to thank them for all of their hard work when you see them :)
<pleia2> (I myself am heading to bed after this session, it's just after midnight here)
<pleia2> Now, we have members from many teams in the Ubuntu community here today who have graciously volunteered to share their knowledge with all of us.
<pleia2> Before we begin, we would like to get a quick feel for who is here. If you are here, please say your name and where you are from.
 * zkriesse is here... Rockford IL, US
<pleia2> ah, you're up late! :)
<pleia2> California here
 * JackyAlcine is from NYC, NY.
<digbydog> digbdog ... Bristol, UK
<zkriesse> yeah..I am
<Fred55411> Fred in Minneapolis, Mn
<tvaculin> Zubri, Czech Republic
<yofel> Philip, Stuttgart/Germany
<pleia2> Great! Quite the international turnout, good to see.
<pleia2> A few of you are probably wondering what User Days are all about.
<pleia2> User Days were created to be sets of classes offered during a one day period to teach the beginning or intermediate Ubuntu user the basics in order to get them started using Ubuntu. This includes:
<pleia2> Software Installation, Finding Help in Ubuntu, Accessibility Apps, Command Line Basics, Linux Security Myths, Unity, What's Cooking in Ubuntu...
<zeroseven0183> Jean Austin, Philippines
<pleia2> ...and more! For our full schedule head over to https://wiki.ubuntu.com/UserDays
<pleia2> User Days were born out of a discussion at the Ubuntu Developers Summit in November 2009 regarding Ubuntu Open Week not being targeted enough at users.
<pleia2> Now for a quick rundown of how today will work:
<pleia2> Each hour, an instructor will be giving a class in this channel, #ubuntu-classroom
<pleia2> During the classes, #ubuntu-classroom will be moderated (+m). This means that only the instructor and hosts will be able to talk in the channel.
<pleia2> Any discussion about the class should take place #ubuntu-classroom-chat
<pleia2> If you have a question during the class, please ask in #ubuntu-classroom-chat. Be sure to prefix it with 'QUESTION:' to ensure that it gets noticed. For example:
<pleia2> QUESTION: What are Ubuntu User Days?
<pleia2> Anyone wanna give it a try? :)
<ClassBot> zeroseven0183 asked: How long has Ubuntu been holding Ubuntu User Days
<pleia2> We held our first User Days in January of 2010, had the second in July of 2010
<ClassBot> geekosopher asked: who is the target audience
<pleia2> beginner to intermediate users, but some sessions may be of interest to everyone
<ClassBot> Fred55411 asked: is there a way to see schedule in local time?
<pleia2> there are a couple of ways, you can add the schedule ical in the topic to your own calendar: http://is.gd/8rtIi
<pleia2> or you can go to the schedule on https://wiki.ubuntu.com/UserDays and click on the time - it'll take you to a website which tells you the local time in dozens of cities around the world
<pleia2> After each session, our group of volunteers will post the IRC logs to the wiki as soon as possible.
<pleia2> So if you miss a session or just want to review what you learned, be sure to check out https://wiki.ubuntu.com/UserDays for links to logs that our volunteers will put up as soon as they are able
<pleia2> If you can't wait, Logs will also be automatically posted on http://irclogs.ubuntu.com near the end of each hour.
<pleia2> Please be sure to remind all of your friends and family who might be interested in using Ubuntu that this event is taking place today. https://wiki.ubuntu.com/UserDays/JoiningIn has some information about how they can participate.
<pleia2> Finally, before we move on to answering any more questions about Ubuntu User Days that you might have, I would like to give a big thanks to everyone who has helped make this day possible.
<pleia2> It simply would not have been possible to organize this event without all of their help :)
<pleia2> Finally, at the end of the day, please take some time to fill out our survey! We will use the results to help make the next Ubuntu User Day event even better. http://tinyurl.com/UUDSurveyJan11
<pleia2> Now, does anyone have any general questions about the day?
<ClassBot> Fred55411 asked: What percent of time would you expect will be questions?
<pleia2> It depends on the class and the instructor and some instructors have a lot of Q&A throughout their session, some wait until the end
<pleia2> generally it's most of the class as a lecture, and a minority of questions
<ClassBot> digbydog asked: I'm using IRC via my browser and there is a long list of users to the right but there are only a few users attending this class. Who are all the ussers on the right?
<pleia2> a lot of people idle in this channel 24/7 and some people are here but don't wish to speak up (that's fine!)
<pleia2> so you'll always get a good percentage of people who are "here" but inactive
<ClassBot> geekosopher asked: how were the topics for UUD selected?
<pleia2> a call for instructors goes out a month or two prior to the Day, volunteer instructors then submit class suggestions to the classroom team
<pleia2> from there the team goes through the proposals and instructors and selects ones from the day, we've been quite fortunate in recruiting to have lots of great volunteers
<ClassBot> Fred55411 asked: Is it ok to ask questions at any time even if they will be aswered at the end?
<pleia2> it depends on the instructor, they will often tell you when it's ok to ask questions
<pleia2> generally it's fine though, you may just have to wait until the end
<ClassBot> zeroseven0183 asked: Do you need to be an official Ubuntu Member to be an instructor?
<pleia2> no, but if you're a new instructor and the classroom team isn't familiar with you we may ask for some documentation of previous work or a class outline so we can make sure you're prepared for the class
<ClassBot> There are 10 minutes remaining in the current session.
<treb29> Is this for newbies?
<ClassBot> zeroseven0183 asked: What if I miss a class? How do I catch up? Are there any chat logs I can see?
<pleia2> at the end of each hour, all logs are automatically posted to http://irclogs.ubuntu.com and we'll also link the logs on https://wiki.ubuntu.com/UserDays
<pleia2> treb29: yes, beginners to intermediate
<treb29> Thank you
<ClassBot> Fred55411 asked: Do you encourage chat on the topic in the ...chat channel?
<pleia2> Yes, please stay on topic in the -chat channel, remember the chat channel is where questions are, so instructors have to keep an eye on it during their class
<pleia2> if you have a lot of offtopic chat this makes it very difficult for them to follow while giving their class
<ClassBot> There are 5 minutes remaining in the current session.
<pleia2> so feel free to talk as much as you like about the current session :)
<ClassBot> digbydog asked: Will other media aprart from IRC be used in these sessions?
<pleia2> some instructors may post links to screenshots or other things during their class, but other than that no
<ClassBot> Fred55411 asked: Is being able to ask questions (and gets answers) the main advantage over reading the archives?
<pleia2> that's certainly one of the advantages - you get to hear and talk with the expert directly
<pleia2> I also have found it fun to chat with folks in -chat who share my interest for a subject, so there is the social aspect as well
* 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 User Day - Current Session: Software Installation - Instructors: shrini
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> Shrinivasan, is a open source lover, who lives in Chennai, India. He talks about open source philosophies in local colleges and schools.  Currently he is giving technical support to subversion and TeamForge at CollabNet. He runs a weekly newsletter "FossNews" and a blog for Foss Jobs.
<pleia2> shrini: take it away! :)
<shrini> Hello all
<shrini> So happy to meet you all here
<shrini> Here, let us explore the various options of package management in ubuntu
<shrini> One of the best feature that ubuntu provides is its package management
<shrini> When I was in windows world, I used to carry some 30 to 40 CDs with me always
<shrini> they were filled with various software
<shrini> I had my local collection of required software
<shrini> but the ubuntu linux changed the way we approach installing software in our systems
<shrini> Let us explore about installing and removing of various software in ubuntu linux
<shrini> using Graphical Tools and commandline tools
<shrini> First tool is "Ubuntu Software Center"
<shrini> It is available under the menu "Applications"
<shrini> Hope you all have ubuntu machines now
<shrini> Please open that software
<shrini> It is talking a little time to load
<shrini> It is there opened
<shrini> It is showing some departments
<shrini> What are they?
<shrini> Unlike Windows and Mac, Ubuntu linux provides tons and tons software
<shrini> It gives a central place where we can fetch required software
<shrini> That central place is available in the internet
<shrini> it is called as "repository"
<shrini> Ubuntu gives some default repositories to fetch the software
<shrini> we can add some extra repositories too.
<shrini> repository can be called as "repo" too
<shrini> The default repository is available at http://archive.canonical.com/ubuntu/dists/
<shrini> you can browse the available packages for all the ubuntu versions
<shrini> Let us come back to our "Ubuntu Software Center"
<shrini> The available software in the repositories are categorised into various departments
<shrini> Ubuntu is for all human beings
<shrini> so it provides software for various fields where computers can be used
<shrini> From Education, development, graphics, multimedia, research, office to games
<shrini> and more
<shrini> Let us explore the Graphics packages available
<shrini> I am clicking the "Graphics" department
<shrini> It gives some more categories like 3D, Drawing, Photography, Viewers etc
<shrini> Going into Photography
<shrini> It provides all the software required for digital photography management
<shrini> See the small green tick mark in the "Shotwell Photo Manager"
<shrini> It means that "Shotwell Photo Manager" is already installed in our computer
<shrini> We can install any of the software shown here
<shrini> Let us install "Gwenview"
<shrini> It is a nice Image viewer
<shrini> LEt us click on it
<shrini> It shows some little info with a button "install"
<shrini> Let us click the button "more info"
<shrini> It gives some more info really
<shrini> in the upcoming page
<shrini> An introduction, link to the original website, a screenshot, size and some more details are displayed here
<shrini> Now let us click the button "install" shown in the same page
<shrini> Now it asks the password
<shrini> we need the administrator privileges to install any software in ubuntu
<shrini> The first user in ubuntu has the admin right and we can give the password
<shrini> if we have the admin permission, the screen goes to the next stage
<shrini> The blue bar shows the status as "installing"
<shrini> In the left panel, we can see a new item as "In progress (1)"
<shrini> After a while, it is finished the progress and it shows as "installed"
<shrini> the speed depends on the speed of Internet connection
<shrini> and the dependencies it has to download
<shrini> We can install any package like this
<shrini> Ubuntu provides such easiest process to install any software
<shrini> The same software center provides some "Featured" software in the home  page
<shrini> They are the best software referred by the ubuntu community to install and live happily
<shrini> they are popular, stable and feature rich software
<shrini> We can click on any already installed software and we can see the button "remove"
<shrini> we can uninstall the software by clicking the "remove" button
<shrini> It will ask for the password and will remove it
<shrini> Let us explore some advanced software called "Synaptic Package Manager"
<shrini> It is available at the menu System->administration
<shrini> Close the Software center and open the Synaptic
<shrini> It interface is little advanced but give a lot of details
<shrini> The left panel gives various departments same as software center
<shrini> the right panel lists the software available at the selected department
<shrini> top right corner has a search box
<shrini> give some text there and see the result
<shrini> I give there as "thunderbird"
<shrini> It shows the results of the software related to the word "thunderbird"
<shrini> we can click on any software and select "Mark for Installation" in the menu
<shrini> I selected "thunderbird"
<shrini> Now, click the "Apply" button in the top panel
<shrini> another window pops up with some more details
<shrini> it shows the size of download, dependency package list etc
<shrini> I click "apply" button and it starts to download
<shrini> we can see the files being downloaded and installed automatically
<ClassBot> Fred55411 asked: Does KDE app have lots of dependencies when installed on Gnome system?
<shrini> yes. KDE apps will download the core packages to run the KDE apps
<shrini> we can run all the KDE apps in Gnome, after installing the required kde packages
<ClassBot> geekosopher asked: If installing a package requires removal of other already installed program, does Software Center warn the user that the other package will be removed?
<ClassBot> There are 10 minutes remaining in the current session.
<shrini> it will do that automatically
<shrini> synaptic and commandline tools will show the list of software installed and removed
<shrini> after we confirm only they start installing
<shrini> To remove any software using synaptic, we can click and select "Mrk for removal"
<shrini> "Mark for complete removal" will remove all the dependency software too
<shrini> we can edit or add repositories in "Settings->Repositories" in synaptic
<ClassBot> There are 5 minutes remaining in the current session.
<shrini> Let us explore some commandline tools
<shrini> open a terminal
<shrini> apt-cache search <name>
<shrini> to search the software related to the "name?
<shrini> apt-cache search thunderbird
<shrini> will list the repated software
<shrini> related software
<shrini> sudo apt-get install thunderbird
<shrini> will list the required software to fetch and after our confirmation
<shrini> it will install thunderbird
<shrini> to uninstall any software
<shrini> sudo apt-get remove thunderbird
<ClassBot> Fred55411 asked: You said "left panel gives various departments same as software center" but software center's seem more "friendly" and less extensive. Do you concur?
<shrini> Yes. software center is more user friendly
<shrini> My old dad loves it very much then synaptic
<shrini> Ubuntu is always making our life much easier
<shrini> https://help.ubuntu.com/community/SynapticHowto
<shrini> this links give more info about snaptic
<shrini> I am done with the session
* 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 User Day - Current Session: Networking and sharing files in Ubuntu - Instructors: dnivra
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> thanks shrini!
<pleia2> now we welcome dnivra for a class on Networking and sharing files in Ubuntu :)
<dnivra> thanks pleia2 !
<dnivra> Hello everyone. I'm dnivra and welcome to this session on âNetworking and Sharing Files in Ubuntuâ.
<dnivra> If you have any questions at any point of time, ask at #ubuntu-classroom-chat and I shall try to answer them as much as possible.
<dnivra> so let's begin.
<dnivra> Here's a scenario: you want to browse the video collection of your friend and copy few that you like.
<dnivra> BUT, your friend is busy doing some important work on his computer so you can't use it and you don't have a hard disk to copy all videos to view at your own leisure.
<dnivra> In this session, I will introduce a simple and easy to do solution-how to connect two computers over LAN(Local Area Network) and share files between them using samba.
<dnivra> Note that this is a very basic method, to be used when you want to share files instantly and recommended for a short period only.
<dnivra> That is there can be issues(say security) with this method.
<dnivra> I just think going into those details would be rather overwhelming at this stage. So we will just stick to the basics of this.
<dnivra> For sharing files you will need
<dnivra> 2 computers :)
<dnivra> a LAN cable,
<dnivra> and an internet connection on either computer.
<dnivra> this computer will act as the server, while other as client.
<dnivra> oh and you need sudo privilege on the server as well.
<dnivra> If you have two laptops/desktops with wireless cards, you don't need a LAN cable-you can settle for a wireless connection.
<dnivra> But, I strongly suggest using LAN owing to higher transfer rates.
<dnivra> so for starters, let's install samba.
<dnivra> To do so, please run the command âsudo apt-get install sambaâ in the terminal.
<dnivra> Alternatively, you can install samba from Synaptic Package Manager(System -> Administration -> Synaptic Package Manager).
<dnivra> but i prefer command line, sort of easier and hassle free.
<dnivra> note that you'll need samba installed on both machines.
<dnivra> While samba is being installed, let us configure the network and establish a connection.
<dnivra> To do so, right click on the network manager icon on the top panel and select âEdit Connectionsâ.
<dnivra> You'll be greeted by the Network Connections window, in which the Wired tab would be selected.
<dnivra> In the Wired tab, create a new connection by clicking on âAddâ.
<dnivra> I recommend this over using Auto eth0 connection just in case anything gets messed up, you still have Auto eth0.
<dnivra> For those connecting via wireless, choose the wireless tab and create the connection by clicking on âAddâ.
<dnivra> Those who have a DHCP server running on local network can avoid the following step and hit the âApplyâ button.
<dnivra> If you are unsure, follow the next step(recommended for all).
<dnivra> On clicking add, a window pops up asking you to specify the properties of the connection.
<dnivra> (I'm not going to cover security of the connection-it'd require a lot more time.)
<dnivra> Choose the âIPv4 Settingsâ tab in the window that just popped up.
<dnivra> âMethodâ is set to âAutomatic(DHCP)â by default. Choose âManualâ from the box. The âAddressesâ box just below will become active.
<dnivra> Click on the âAddâ button. This enables to specify an IP address manually.
<dnivra> Enter the value 192.168.1.1 for Address, 255.255.255.0 for Netmask and 192.168.1.255 for Gateway.
<dnivra> I'll explain the meaning of the values if we have time at the end of the session-they are not really relevant here.
<dnivra> (as long as they work of course :) )
<dnivra> Once you have entered the values, click Apply.
<dnivra> Repeat the above steps from right clicking on network manager icon to clicking on apply in the second machine as well except using 192.168.1.2 instead of 192.168.1.1.
<dnivra> Ensure you use the same name for the network, in case of wireless connections.
<dnivra> by now, we have configured the connection.
<dnivra> now, plug the lan cable into the ethernet ports of the two computers.
<dnivra> and please click on network manager and connect to the network you created by clicking on the name of the network. A notification would be shown soon which would say whether the connection is active or not.
<dnivra> Though the connection is active, it needn't be the case that the computers are connected.
<dnivra> To test if two computers are indeed connected, we use the command ping.
<dnivra> there are two ways you can use ping.
<dnivra> 1. Simple Method: run âping 192.168.1.2â in the terminal of the machine 192.168.1.1.
<dnivra> and vice versa too if you want though not required.
<dnivra> or do it using the GUI: System -> Administration -> Network Tools -> Ping.
<dnivra> Enter the IP address in the box there and click on the button âpingâ.
<dnivra> enter IP address in the box named "Network address".
<dnivra> you can do vice versa too.
<dnivra> if you were able to ping successfully, the computers are connected! success! yaay!
<dnivra> a successful ping from terminal would have a similar output http://paste.ubuntu.com/559830/.
<dnivra> *similar* not same.
<dnivra> i'll pause for questions if any :). though I'm guessing steps till now are pretty clear.
<dnivra> no questions? alright then moving on to the sharing part.
<dnivra> In the server machine, right click the folder/file you want to share and select âSharing Optionsâ.
<dnivra> The folder sharing window opens up.
<dnivra> By default, the âShare this folderâ option is not selected. Check this option.
<dnivra> Now, you can specify a share name or choose to stick to the default name.
<dnivra> sometimes samba may complain that 'share name is too long'. just choose a shorter name in that case.
<dnivra> the other two options can be left untouched. they are self explanatory in my opinion.
<dnivra> but if you do enable them, do so with care :)
<dnivra> Click on âCreate Shareâ and your share will be created in the server machine.
<dnivra> any questions till this stage?
<ClassBot> digbydog asked: The share defaults to the same name as the folder can that be a problem?
<dnivra> no there wouldn't be any issues
<dnivra> in fact, i choose to stick to the same name as the folder. otherwise I have to remember the mapping-which share name for which folder.
<dnivra> hope that answers your question digbydog
<dnivra> any more questions before we move on?
<dnivra> okay so moving on.
<dnivra> Now how to view the shared files.
<dnivra> In the client machine, navigate to Places -> Connect To Server.
<dnivra> the connect to server box pops up now.
<dnivra> There are several ways to connect to the server. This is specified by service type.
<dnivra> For our current discussion, select âWindows Shareâ.
<dnivra> note that using this method, you can connect to windows shares from ubuntu and also to samba shares on other ubuntu machines.
<dnivra> In server, enter the IP address of server machine.
<dnivra> i.e. 192.168.1.1
<dnivra> (assuming 192.168.1.1 is your server)
<dnivra> You can supply the optional information but not essential-you will be prompted for the required ones later.
<dnivra> once you are done entering the information(if you are doing so), click on connect.
<dnivra> if you did not specify any specific information, the share list will be retrieved from the server automatically.
<dnivra> share list is the list of folders that are currently being shared by the server. you can then select the appropriate share.
<dnivra> this is where it helps to have same, or at least similar, share name as the folder.
<dnivra> of course, if you have an amazing memory, you can choose any share name :). as long as you will remember it.
<dnivra> let us say the shared folder is videos and it's share name is also videos.
<dnivra> once you connect to the server, the share names will be displayed and the share video will also be displayed there.
<dnivra> (assuming you did everything right :) )
<dnivra> if you had specified any information, you would see that you won't be prompted for those if they were right.
<dnivra> but, i would suggest provide less details-samba will prompt you for required details.
<dnivra> and you'd be prompted to enter them, if you double click the share name.
<dnivra> i.e. here 'videos'.
<dnivra> for the username and password, you can just enter the username and password of the user who created this share on the server.
<dnivra> and leave the workgroup to the default value 'WORKGROUP'.
<dnivra> the workgroup concept is same as the workgroup concept in windows. so nothing new there :).
<dnivra> once you have entered all details, click on connect.
<dnivra> the contents of the share would be displayed to you1
<dnivra> (assuming all details are correct)
<dnivra> which means you've successfully shared files! yaay!
<dnivra> and of course, you can do the same via command line as 'nautilus smb://192.168.1.1'.
<dnivra> short, simple and my preferred method :)
<dnivra> i guess that pretty much means the sessions. i welcome questions now.
<dnivra> we have about ten minutes.
<dnivra> meanwhile I shall try retrieving a few interesting links about samba.
<dnivra> first and best I'd say https://help.ubuntu.com/community/Samba.
<dnivra> It talks about various aspects such as configuring clients, servers, the web interface(SWAT) to configure samba, securing samba, sharing filters, troubleshooting, mounting shares permanently and much more.
<dnivra> swat is something you can check out-Samba Web Administration Tool.
<ClassBot> There are 10 minutes remaining in the current session.
<dnivra> but *before* installing swat, back up the samba configuration file located at /etc/samba/smb.conf
<ClassBot> digbydog asked: You used the command line nautilus smb://192.168.1.1. smb does not appear as an option for nautilus. What is happening with that command line?
<dnivra> digbydog, smb is not an option true. it is a protocol. it stands for Server Message Block.
<dnivra> in fact, you can press Alt+F2 and type in 'smb://192.168.1.1'. it would still retrieve the share.
<dnivra> smb://192.168.1.1 is sort of similar to http://www.google.com or http://192.168.1.1
<dnivra> bottom line, SMB is a protocol just like HTTP.
<ClassBot> There are 5 minutes remaining in the current session.
<dnivra> more questions anyone?
<dnivra> we got 5 minutes or we could wrap up.
<dnivra> Here's how to on mounting windows shares permanently. might come in handy for a few. https://help.ubuntu.com/community/MountWindowsSharesPermanently
<dnivra> there are tons of guides out there on how to share stuff using samba.
<dnivra> here is one on how to share without need for a password. i don't think it quite works though. you can still try it out even though it may be a bit out of reach. http://www.debuntu.org/guest-file-sharing-with-samba
<dnivra> and do remember that the normal unix permissions do apply on samba shares. so if you login as a user who can't create a file, you can't create a file.
<dnivra> t#ubuntu is the place for any sort of help on this-surely somebody will help you out there. Thank you for listening patiently!
<dnivra> I'm done with my session.
 * dnivra bows graciously to the audience. I had a lot of fun!
<dnivra> Well see you guys around in #ubuntu. Enjoy rest of User Days!
* 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 User Day - Current Session: Cloud for users - Instructors: Daviey
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<cjohnston> Up next is Daviey, but we can't seem to find him right now..
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html
* 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 ||
<cjohnston> We are going to have to reschedule Daviey's class on Cloud for Users. Sorry for the inconvenience.
<cjohnston> For now, take a break, and we will resume in about 45 minutes.
<obengdako> okay then
<cjohnston> Sorry for the change all.
<edwardteach> help #ubuntu has turned into ubuntu-ot
<droidslayer> edwardteach: not really the right channel
<dnivra> edwardteach, there is !ot in #ubuntu.
<dnivra> you can just tell the users that.
<edwardteach> i know i typed it in the wrong tab sorry guys !  i have fat clumsy fingers on my netbook :)
<cjohnston> coming up in just a few minutes is ralsina
<Faroukus-Ubounut> let talk about somthing ?
<cjohnston> you have 1.5 minutes
<MrChrisDruif> Faroukus-Ubounut: Ubuntu One within secs
<cjohnston> Someone kick ClassBot
* 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 User Day - Current Session: Ubuntu One - Instructors: ralsina
<cjohnston> hey look.. i kicked it
<cjohnston> ralsina: its all you
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<ralsina> thanks cjohnston
<ralsina> Hi, my name is Roberto, I work in Ubuntu One at Canonical, and my goal here today is to help you learn about Ubuntu One,
<ralsina> and share some of the reasons why we at the Ubuntu One team are really excited about what we have to offer you now, and our
<ralsina> plans for the future.
<ralsina> So, what's ubuntu one?
<ralsina> Here's our standard definition, taken form the webpage:
<ralsina> "The personal cloud that brings your digital life together"
<ralsina> That's not really a bad definition, assuming you know what a "personal cloud" is, and that you have a "digital life" ;-)
<ralsina> I think of Ubuntu One as my own chunk of Internet.
<ralsina> It's as if I took a piece of Internet and put it into my computer.
<ralsina> That way, I can do things like taking a file, save it inside Ubuntu One, and voilÃ¡, it's on the Internet! I can then do things with that file, like sharing it with other people.
<ralsina> If I have more than one computer connected to the Internet, then of course my own piece of the Internet that's Ubuntu One is also there, so when I put a file into it, I get it on all my computers.
<ralsina> And if I have a cell phone that has an internet connection, like an iPhone or one with Android, why, my chunk of the Internet is there too.
<ralsina> (Sadly I don't yet, I got a symbian phone before I joined the company ;-)
<ralsina> If you have a windows computer? You can get Ubuntu One there, too.
<ralsina> And if you don't have the Ubuntu One application installed, you can still use it online via our webpage: http://one.ubuntu.com
<ralsina> What I just described is our file syncing service.
<ralsina> But that's not all Ubuntu One provides, there are also ways to put your contacts, your bookmarks, your music, your notes, in that "personal cloud".
<ralsina> Later on, we will see how to do many of those things.
<ralsina> So now, let's see how you can use Ubuntu One, too.
<ralsina> I will be using for all examples a fresh install of Maverick Meerkat. If you have a different version, things may be slightly different, but you can probably figure it out with no problems.
<ralsina> Note: feel free to ask anything at any time, I am happy to stop and answer, don't be shy!
<ralsina> So, if you are using Ubuntu, you should have what's called the "me" menu near the top right
<ralsina> Sorry about the delay, lost connection for a second
<ralsina> As I said, you have the "me" menu, and in it, there is an Ubuntu One item. If you click on it
<ralsina> Of course, questions are to be asked in #ubuntu-classroom-chat , not here :-)
<ralsina> This is my first time doing this on IRC, so expect me to stumble on things  ;-)
<ralsina> Well, I have no idea why the name was chosen, I was not around at the time :-)
<ralsina> I think it sounds nice, though!
<ralsina> If you choose Ubuntu One in the me menu, you will see this window:
<ralsina> http://img5.imagebanana.com/img/fzs8k4re/CreateUbuntuOneaccount_002.png
<ralsina> With that, you can create your own Ubuntu One account.
<ralsina> Anyone can have one, and you get 2GB of storage.
<ralsina> If that is not enough, you can later buy extra storage
<ralsina> If you already have an account, you can just sign in, using the big button at the bottom.
<ralsina> Once you login you will see this, the preferences for Ubuntu One:
<ralsina> http://img5.imagebanana.com/img/w1vctj8f/UbuntuOnePreferences_003.png
<ralsina> Of course with your name on it, instead of mine.
<ralsina> Once you sign in, you can start using it.
<ralsina> For the simplest service, file sync, you just put whatever you want uploaded into the "Ubuntu One" folder in your home
<ralsina> geekoshopper asked " can we expect a Ubuntu One to be integrated into Kubuntu desktop anytime?"
<ralsina> Well... did I mention my email address is ralsina@kde.org?
<ralsina> ;-)
<ralsina> However, don't expect it very soon.
<ralsina> Currently we are working on cleaning up the lower layers to make them less platform-dependent.
<ralsina> Once that's done, I will be working on my own time on a Qt-based client, that could be improved into a KDE client later on.
<ralsina> mpounta asked "why it still says "disconnected" even if we are connected to the service?"
<ralsina> mpounta: well, it was not connected ;-)
<ralsina> MrChrisDruif asked "Why are there only paid upgrade plan? Dropbox has an upgrade plan with social media and friend invites etc too a max of 8GB.."
<ralsina> MrChrisDruif: well, currently they are just not there. We may do something similar on the future, or not. Not really my area, I'm afraid.
<ralsina> So, if you put files into your "Ubuntu One" folder, they will be replicated on the storage you have online, and in any other computers where you are running Ubuntu One.
<ralsina> If this is the first time you use this computer, you have to go to the Devices tab and "Connect" this computer
<ralsina> Once you have some files in "Ubuntu One" folder, if you open it in Nautilus, you will get something in the right-button menu
<ralsina> A "Ubuntu One" sub-menu, with options like "Publish" and others.
<ralsina> For example, I clicked "Publish" on an image I have in my Ubuntu One. http://ubuntuone.com/p/a6b/
<ralsina> You get the link by right-click -> Ubuntu One -> Copy Web Link
<ralsina> As you can see, Ubuntu One is a very easy way to share things with your friens.
<ralsina> friends*
<ralsina> Just keep in mind that anyone can see those files just by having the URL, so don't use it for private stuff!
<ralsina> You can later stop publishing the file by using the "Stop Publishing" option.
<ralsina> You can also "Share" specific folders with other Ubuntu One users.
<ralsina> That way, for example, you can share your family photos with other family members. These are private, and only the users you select will see them.
<ralsina> For using Ubuntu One with notes, you use the Tomboy application.
<ralsina> For contacts, there an evolution plugin.
<ralsina> And for bookmarks, there is a Firefox extension.
<ralsina> Ubuntu One also has a Music Store
<ralsina> MrChrisDruif asked: Isn't syncing music the same as syncing files, but only specified to music?
<ralsina> No, it's not the same.
<ralsina> You could, of course, just put MP3 files in your Ubuntu One folder
<ralsina> But ubuntu one also supports streaming your music to mobile devices.
<ralsina> So you can listen to your music without having to sync it to the device.
<ralsina> I missed a question by Ddorda: "will the Ubuntu One server become open sourced in the future?"
<ralsina> Ddorda: there are two answers to that question
<ralsina> One answer is "I don't know"
<ralsina> The other is that there's nothing preventing the implementation of a free server, but currently Canonical is not doing it.
<ralsina> Back to music: you can stream any music you have, not just the songs you buy from the Ubuntu One Music Store, BTW
<ralsina> more about the server: the protocol is open, and there's an open source implementation of the protocol at http://launchpad.net/ubuntuone-storage-protocol
<ralsina> Ok, so, back to Ubuntu One
<ralsina> I would like to share some of the plans we have
<ralsina> We are currently working on creating reasonable APIs so 3rd parties can use them to develop interesting applications that take advantage of Ubuntu One services.
<ralsina> Just think about what that could be used for.
<ralsina> And if you come up with an interesting use, please tell me about it :-)
<ralsina> For the next version, we will have a completely new control panel, which is much more capable than the current one.
<ralsina> And there are lots of new services coming I can't mention ;-)
<ralsina> We are releasing a whole new Windows client, that' s a complete rewrite.
<ralsina> Question by danyR: "  photo syncing between shotwell, your own cloud and mobile devices, isn't that right?"
<ralsina> Yes, that is planned.
<ralsina> It' s not done yet, but is scheduled for Natty Narwhal.
<ralsina> Also, there is a lot of integration with the new Unity shell, that should provide a great user experience.
<ralsina> We are trying to make Ubuntu One a seamless part of the Ubuntu desktop.
<ralsina> MrChrisDruif: QUESTION: You mentioned something about music syncing/streaming, how would we go about using that? Is it also over the Internet or only at our home network? Is there a limit to how much music can be synced/streamed?
<ralsina> How much music you can sync depends only on how much storage you have available.
<ralsina> And I have seen a 2TB storage plan (really ;-)
<ralsina> The streaming is currently only supported for mobile devices, and it works over wifi or 3G
<ralsina> But I have seen at least one hack to make it work on a desktop.
<ralsina> Of course strwaming music to a mobile device can be expensive, depending on your data plan.
<ralsina> danyR: QUESTION: how about an OSX port?
<ralsina> danyR: not scheduled, but if I can make my Qt client... well, it's half way there. Probably many OSX users would hate using a non-customized portable UI, but it can be done.
<ralsina> danyR: make that TWO hacks to stream on the desktop ;-)
<ClassBot> There are 10 minutes remaining in the current session.
<ralsina> MrChrisDruif: QUESTION: Would it be possible to sync an entire Ubuntu account (the one you log in) with Ubuntu One? =D
<ralsina> MrChrisDruif: well, I am going to try to do something like that as an experiment (that' s ehy I have 80GB of storage right now ;-)
<ralsina> But I expect it' s impractical.
<ralsina> There is a project called oneconf that syncs your apps configuration over Ubuntu One
<ralsina> danyR: QUESTION: what's the current status of oneconf? ubiquity integration not planned for natty, is it?
<ralsina> I am not sure on the schedule for oneconf
<ralsina> So, using oneconf and the ability to share selected folders and files, you can get *almost* to sharing your whole account
<ralsina> A quick check tells me it would take 2 months to upload my current home folder, so keep that in mind when you choose what to sync ;-)
<ralsina> And as aquarius said on -chat, sharing the settings is not a trivial task
<ClassBot> There are 5 minutes remaining in the current session.
<ralsina> You can share the config files, sure, but then when you have the same app running at the same time on two devices, you are going to get conflicts.
<ralsina> Ok, ask questions or we wrap :-)
<ralsina> Feel free to contact me here for questions in the future, I am here most of the day at #ubuntuone
<ralsina> I think that' s all then :-)
<ralsina> it was great to have this conversation with you people, have a nice day!
<ralsina> danyR: QUESTION: where do you see Ubuntu One in 1 year? where, for what, could it be used?
<ralsina> let' s see if I can answer that in 2 minutes :-)
<ralsina> danyR: I expect the local storage will become the place where you put stuff that' s not important, or too large to move over the air.
<ralsina> I also expect many apps will use Ubuntu One implicitly
<ralsina> in the sense that you will not even know it' sthere, but data will just be available  for you everywhere.
<ralsina> And I don' t think I can explain much more over IRC in one minute :-)
* 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 User Day - Current Session: Finding Help in Ubuntu - Instructors: starcraftman
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<cjohnston> Thank you ralsina! Up next is starcraftman!
<starcraftman> Hello folks :) No big introduction this time cjohnston?
<starcraftman> Well no matter, hi everyone I'm starcraft.man you can find more about me on my wiki page > https://wiki.ubuntu.com/starcraft.man. In short I'm a computer science major, part of the beginners team as well as a few others. Done a little bit of everything. Today's topic will be focussing on support and finding help.
<starcraftman> I've got my speech pre-written so I'll be moving considerably quickly after this, please follow allong. This lecture is interactive in so far as I'd like everyone to follow the sites I go to. Please reserve questions for the end. Write them in a text editor like gedit so you don't forget. :)
<starcraftman> I will be copy/pasting from now so it will go a little quick,  and now on with the session.
<starcraftman> Section 0 - Introduction
<starcraftman> I'll be covering an important topic today. What to do when things go wrong. It happens to everyone and dealing with it correctly can save a lot of trouble.
<starcraftman> An overview of the material to be covered today is available on the wiki https://wiki.ubuntu.com/UserDays/01232010/FindingHelp
<starcraftman> Take a moment and look over it while I continue with the introduction. At the end you'll notice a links section. I'll be mentioning these as I go, they are listed for convenience.
<starcraftman> Please keep questions to #ubuntu-classroom-chat as with other sessions. I'd prefer if they were reserved for the end. You're free to ask them during and hopefully someone else can respond. I don't want to be stopping at every question I've a lot of stuff to mention, I'm also pretty sure I've covered most things people will question by end.
<starcraftman> I'll try to pace these out not too fast.
<starcraftman> If your question remains unanswered by end, I'll take it then from the queue. Please make sure you keep them  prefaced with Question so people can see them.
<starcraftman> Things go wrong. Especially when you can least afford it.
<starcraftman> The same way gravity unfortunately is still there when you wake up in the morning even if you were dreaming of flying.
<starcraftman> One minute you are typing away merrily on your word processor then.....
<starcraftman> [Insert program crash here with some profanity about lost work]
<starcraftman> Maybe you just finished installing some updates and wham!
<starcraftman> Some unknown error appears on screen and you don't know what to do.
<starcraftman> The first rule of getting help is DON'T PANIC. Incidentally, this is also written in big bold letters on the back of a certain book for Hitchhiker's trekking the galaxy.
<starcraftman> I'd say it's a very good first rule.
<starcraftman> The focus of this session will dealing with such problems like the aforementioned in a simple and effective manner. By the end, you should be able to gather simple information and on any problem and find help from the most appropriate resource.
<starcraftman> Section I - Preparing for Help
<starcraftman> The title sounds a bit silly doesn't it?
<starcraftman> You'd be surprised how just a few steps make all the difference finding good help.
<starcraftman> Mostly it will help you narrow the focus of your search. If you reach out to someone else on forums or in person, it's easier to bring them up to speed.
<starcraftman> The average user skips this step. Usually this is followed by an attempt to use bad or limited information to fix the problem.  The result is getting flustered. At this point they usually reach out to someone else, say on a forum or by email to a friend. This results in more annoyance as they answer many questions they didn't consider at first to give the expert necessary information.
<starcraftman> In the end, users can get very angry/frustrated.
<starcraftman> Posting on a forum in a bad mood âMy video is broken, FIX IT!â is not a good way to get help.
<starcraftman> Consider (as some may know) that the forums are staffed, moderated and questions answered by volunteers not being paid. None of above like seeing rants posted.
<starcraftman> If you speak like that to your tech friend, well, I don't think he'll be your friend after giving you the fix.
<starcraftman> More to the point, a lot of your time got wasted. You got upset. You also didn't resolve the problem given the time invested.
<starcraftman> This leads to rule 2 âTry to spend time solving a problem yourself before you ask other people for help. If you follow this common courtesy, then it will not be an imposition when you ask for help.â That's from community wiki.
<starcraftman> Section 1a â Analysis
<starcraftman> When something goes wrong, the first thing that's important to do is think what just happened? What was I doing? What crashed? What did I see?
<starcraftman> Get a piece of paper and a pen and immediately write the answers to those questions down. Write in plain language all the details, you may not think it's important but the person who helps you might disagree.
<starcraftman> Say for example evolution mail client just crashed, and there's a window that popped up stating so with an error and asking you to file a report. Take down the error, note what you were doing.
<starcraftman> If the error is a graphical one (like the error window popping up) you might want to take a screenshot of this.
<starcraftman> Screenshots are just a way of taking an image of the screen, works on Linux just like Windows. Push print screen on the keyboard. Doing so will open up a screenshot application (on any Ubuntu variant), from there save the image to your Desktop.
<starcraftman> (you can try to printscreen now if you like)
<starcraftman> We'll see what to do with this image later.
<starcraftman> Another helpful thing to do in advance of getting help is knowing your hardware (this can especially help with networking/graphics problems). An easy way to get a complete listing of your hardware is to use the following simple command in any terminal (open from menus Applications > Accessories >Terminal) and using the command:
<starcraftman> sudo lshw > ~/Desktop/hardware.txt
<starcraftman> This command creates a file called hardware.txt that you can open and browse on your desktop. It lists all components of your PC, CPU, RAM, Graphics card, Network interfaces, etc... There are a few commands that produce more precise output (like just listing PCI cards) but this covers everything with one shot.
<starcraftman> The similar commands are lspci, lsusb, lsbpcmia, all listing what the command is named.
<starcraftman> Very useful.
<starcraftman> After jotting down this information and taking a screenshot we can proceed to play detective. Ask yourself what went wrong?
<starcraftman> Did the internet stop working for instance? That would be a networking issue.
<starcraftman> IT detective work involves narrowing things down through categories, you start at the top and work your way down specifying at each new level until the problem is clear.
<starcraftman> You might not have enough experience to solve it completely, but getting a start with what you know can go a long way.
<starcraftman> It's hard to say how much effort you should put in before moving on. Usually it becomes clear when you can no longer write or deduce anything else.
<starcraftman> Section 2 - Power Searching Google
<starcraftman> So the first stop is a search engine. I'll use Google for this example, any engine should work.
<starcraftman> The reason to search is another rule- If you're having a problem, 99.9% of the time someone else has had the same one and posted its solution.
<starcraftman> At this point, if everyone can go to www.google.com that'd be great.
<starcraftman> Or your local version . I recommend google.ca :)
<starcraftman> Power searching is when you do more than simply type key words into Google. By default, each word is searched successively. For example, do the following three searches seperately in Google and see the difference:
<starcraftman> DC Batman Robin Crusader
<starcraftman> âDC Batman Robin Crusaderâ
<starcraftman> DC OR Batman OR Robin OR Crusader
<starcraftman> The first time (first search with no quotes) Google searches for DC and finds all pages with references to it, then cross-references with all pages with Batman. The overlap becomes the new base and then further narrowed by overlap with Robin and Crusader. The search operation descends one word at a time, so the first word is most important and more general usually.
<starcraftman> When searching in Google âDC Batman Robin Crusaderâ you get 0 results (actually 1, an old pastebin of my speach), very different from before. In this instance, Google searched for the string (a computer science term referring to the quoted line) as a whole, the exact sequence of words in the order inside the quotes is simply never used (it is incoherent as a sentence after all). The last one returns well over a million
<starcraftman> results.
<starcraftman> Now time to get to the meat of this. Everyone go to Google homepage and click âAdvancedâ on the right.
<starcraftman> Here's the advanced search page, a lot of people don't know about it. It is very handy.
<starcraftman> Immediately I'd like you to note the box at the top highlighted in blue stating âUse the form...â, here you will see the actual search string used when you enable all these advanced tricks. Look up every time you try something else.
<starcraftman> This means that this is the actual search you could use alternatively in the standard Google Search box, you'll see what I mean as I go.
<starcraftman> First two lines cover what I've already explained.
<starcraftman> The third is the Boolean OR search. This means that rather than only take the overlap (or intersection) between DC and Batman, a search for DC OR Batman would include all results from the individual searches for DC and all results from Batman. Rather than narrow down this really widens a search with every new result, use carefully.
<starcraftman> "Don't show these pages" does exactly what it says, put keywords here and all pages with them will be subtracted from the search. Excellent at excluding specific things.
<starcraftman> "Search within site or domain" is another useful one. Your entire search is then confined to the site listed. You can also limit by domain, so .edu limits it to educational websites indexed by Google on the internet.
<starcraftman> Take a moment and play around with these modifiers to search, take note of the top line that shows how the modifiers are used. You can combine many, like a site search, all these words and language.
<starcraftman> (just in case folks need, direct link > http://www.google.ca/advanced_search?hl=en)
<starcraftman> "Filetype" does as it says and limits your search to an extension, say .pdf or .txt. Any extension is valid (though limited in the drop down, on a text search you specify what you want).
<starcraftman> Language and results are self explanatory.
<starcraftman> Click on "Date, usage rights, numeric range, and more..." here you'll find even more advanced though less commonly used modifiers.
<starcraftman> These are mostly obvious, you can check pages by date, search with numeric ranges (like price), confine it to a geographic region, search based on sites usage rights (click the link for more explanation on that, its outside my scope).
<starcraftman> Page specific tools are interesting, first one lets you specify a page and google will find something similar. Second lets you identify pages that link to page x.
<starcraftman> One thing not here is wildcard modifier for search.
<starcraftman> * is the wildcard. Say I knew part of a word, say.... nvidia but I only knew it started with nvid. Searching nvid* produces nvidia as top result. It isn't always most useful given there might be words that complete the wildcard that you maybe don't want included.
<starcraftman> Careful with wildcards, they can be quite loose depending on how much of the word you put and googles ranking algorithm.
<starcraftman> I don't have time to go into all of them. I will warn, don't be tempted to use too many. The more you employ the less results will appear. Often just one or two of these modifiers makes the difference.
<starcraftman> Say you have a video problem, you want to check whether other people have had trouble with it. It's an nvidia 8800GT. You know Ubuntu Forums usually has people posting about such things. You fill "ubuntuforums.org" in Site Search box, "nvidia 8800 GT" in all these words then search. Voila.
<starcraftman> I don't have time to cover all the nuance of power searching. I will leave you with a good site for those interested. http://www.googleguide.com/ . See the section start now that best applies to you.
<starcraftman> Another page to note is Ubuntu Search at http://search.ubuntu.com/
<starcraftman> As it says on its homepage, by default it only searches Ubuntu related sites like the Wikis and Forums.
<starcraftman> Though it doesn't have an advanced option per se, I'm pretty sure it supports most of the above function. You just have to do it manually via text modifiers.
<starcraftman> lil pause here again, so people can catch up.
<starcraftman> off we go again then....
<starcraftman> Section 3 - System Documentation and Wiki
<starcraftman> For this section we will cover Ubuntu's official documentation.
<starcraftman> System Docs are the documentation that comes with any standard Ubuntu installation, these are accessible locally even without a net connection.
<starcraftman> On the main panel, notice the blue question mark. Please click it. If you don't have it, see System > Help and Support (KDE users open up K Menu and search for help, first option).
<starcraftman> Note: If your not on Ubuntu at this moment, you won't of course.
<starcraftman> Here you will find the documentation promised. It's a gem overlooked often by people in need of help. Feel free to click around.
<starcraftman> On the main page at the right you'll see some common questions. At the left is most of the main sections covered like "New to Ubuntu?", go ahead and click it, new options appear, pick what you like. You can always go back to beginning with the Home button (the house) on the Toolbar at the top.
<starcraftman> The documentation contains a lot of answers to common questions and introductory material you can read to understand Ubuntu.
<starcraftman> Do a test search and scroll to the bottom. You'll see repeat this search online, click it. Presto, you're back at search.ubuntu.com, nifty. I only just found that one.
<starcraftman> Feel free to take a while and explore a bit.
<starcraftman> Go back to homepage pls (push home button as mentioned on the toolbar).
<starcraftman> I'd like to note at the home page you can find the Free Support link, directing you to a lot of materials I'll talk about.
<starcraftman> A new project to mention quick is the manual project. It's a pdf that serves as a beginners tutorial, does offer explanations of many common things. While not a diagnostic tool per se it can be searched by contents and text search, see http://ubuntu-manual.org/ for more details.
<starcraftman> Next is the Wikis, we have two.
<starcraftman> The help wiki you'll be most interested in is at- https://help.ubuntu.com/ . The other site is https://wiki.ubuntu.com/ . This second site I tell you to prevent confusion, it is primarily for organization of teams. Help.ubuntu.com as the name implies stores all the help documents. Use the first one, not the second.
<starcraftman> People often don't understand, these are official sites. They aren't like a wikia, a spin off by fans.
<starcraftman> So take a moment and load up https://help.ubuntu.com/
<starcraftman> Here you'll see listed the versions of Ubuntu still in support (i.e. 10.10, 10.04, these are links to their documentation). Clicking any of the versions will take you to an online version of the system pages, useful if you need it on the internet for reference.
<starcraftman> (if your not on Ubuntu at this moment, you can now browse system docs)
<starcraftman> Some people prefer the system docs in their browser, it's got a different feel. The content is to my knowledge exactly the same though.
<starcraftman> At the bottom you'll see a link on upgrade notes, useful for upgrades.
<starcraftman> More interesting is the community link, please click it https://help.ubuntu.com/community/ < to be clear.
<starcraftman> This is the main wiki area it is maintained entirely by the community (folks like me) in an effort to document the software of Ubuntu and problems that arise. Browse all the information on the main page.
<starcraftman> The bulk of documentation is in English, it is however translated into other languages and available.
<starcraftman> You can of course probably use google translate if you need.
<starcraftman> See the "Getting Started with Ubuntu" section. Here is some beginner stuff you can read, there are also three subsequent sections underneath with useful links to stuff beginners need like Installation help and learning more information about their system.
<starcraftman> This is all good reading material even if you don't have an immediate problem.
<starcraftman> Next, have a look at the "Finding Your Way with Ubuntu" section.
<starcraftman> Say hello to Signpost.
<starcraftman> Its aim is simple, to start with the general and try and narrow down to the right information.
<starcraftman> Click "get some Help", and click around some. It's fairly easy. Different sections have different focus, some on help, filing bugs, some for programmers. See what you need.
<starcraftman> Now lastly, search (top right). Say for example I'm having a video problem with my nvidia card. It won't display my maximum resolution. Do a quick search here for "video nvidia" and see what pops up. Or maybe I just want to learn a good way to backup my system... search for "backup system". Shameless plug,  top result is one of my pages. Good reading.
<starcraftman> Search will present you with relevant pages, as long as you know what you're looking for. If you do the preparation at the beginning this shouldn't be a problem.
<starcraftman> The community wiki is my preferred resource for a wide variety of problems. It's up to date and usually covers problems/software in a timely fashion.
<starcraftman> Another little pause, ahead of my schedule I think. Have a little look around the wiki :).
<starcraftman> ok, that's good. You'll have time to explore more later, logs of this are available. On we go to more sections!
<starcraftman> Section 4 â Forums
<starcraftman> Next, www.ubuntuforums.org
<starcraftman> An excellent site, when in doubt posting here is reasonably certain to get you a good answer. There's an art to posting though, as well as a wrong way to do it.
<starcraftman> While I'm explaining, feel free to sign up, click Register at left.
<starcraftman> Forums are openID enabled so if you know what that is, you can use it.
<starcraftman> First let's look at the structure. The most relevant section is Absolute Beginners Talk. It's come to be a catch all for new people and just problems in general, it gets the most eyeballs. If you post here with reasonable amount of information problem is usually resolved in one or two posts.
<starcraftman> The next section is the Main Support Categories, it offers more specialized help for those with... more exotic problems. Advanced server configurations or some more obscure problems. It's less used by beginners and is less frequented by support people. I'd encourage you to stick with ABT unless you've posted there and not gotten a reply in a reasonable time.
<starcraftman> The remainder of the site is aimed less at support than discussion/development. You can peruse it at your own leisure.
<starcraftman> Time to discuss posting etiquette on the forums, what to do/not do.
<starcraftman> We have a full list of things you have to agree to at register I believe, this is just a rundown of pet peeves and things that really shouldn't happen.
<starcraftman> Don't TYPE IN CAPS OR with LOTS of exclamations!!!!! CAPS usually infer yelling and exclamations excessively used are annoying.
<starcraftman> Don't curse or insult other members offering help. If you wouldn't say it to someone standing next to you, it generally shouldn't be posted.
<starcraftman> Don't demand help in the title/topic like "Fix this or I'm leaving Ubuntu". We aren't prone to offering better help when threatened. This is an unfortunate practice by people who get frustrated, it also gets attention quickly. It is incredibly rude and doesn't make things easier.
<starcraftman> Don't post in the ABT, wait a minute then repost the same thread in different sections. This is annoying. Post in one section (I recommend ABT) and wait for response. It may take 10 minutes or 20, or more, no more than a few hours usually. If so, you can bump your forum post.
<starcraftman> A bump of course is just you replying to the post and pushing it back to the top of cue of threads so it is noticed.
<starcraftman> Now a few pointers to actual posting, you can click New Reply somewhere (doesn't matter where) to follow along (just don't submit please).
<starcraftman> To be clear, Do NOT push submit on the post, this is just so you see the advanced features to posting.
<starcraftman> Incidentally, in case it wasn't clear, you need to be signed in to post.
<starcraftman> Do make your post title pertinent to your problem. If you don't have any internet on the machine then "I don't have internet" is better than "problem needs fixing". You don't need to convey too much information, just the general category of problem. Including the version of Ubuntu might also be good.
<starcraftman> To the left of title you'll find prefix, please select your version of Ubuntu. When it's solved, edit your first post and change the prefix to Solved.
<starcraftman> The solved tag is useful, it tells people searching the archives your problem was resolved. So they can rely on the proposed fix.
<starcraftman> This is nice, also goes back to one of the rules.
<starcraftman> I'd like to make a note here- to the right of the title is "Check if Already Posted". Please click this after writing in a title it will quickly search all previous posts for related information. Experiment with different titles. Often your question has already been answered. Don't be afraid to detour and read some of these pages, you can always return to new post and submit it.
<starcraftman> Just another way of preventing double posts, we get a lot of similar questions.
<starcraftman> Goes back to the 99.9% of all problems have happened before :).
<starcraftman> In your first post, try to put as much information as you can. Now is the time to consult that page we wrote earlier. Explain what you were doing, what went wrong, and what you have since learned (maybe from wiki). Nothing's too small, at the same time, don't write pages.
<starcraftman> Take a note of the GUI at top of the forum reply, there is # button.
<starcraftman> This is for the code tag.
<starcraftman> people will often use it responding, if you want to post the hardware.txt file output use these tags. It stops the page overflowing.
<starcraftman> Puts an inline scrollbar instead. Handy.
<starcraftman> Screenshots can be hosted at sites like http://www.imgur.com or as attachments to the post (scroll down on new post page, click Manage Attachments). These are very useful.
<starcraftman> Images hosted on imgur you just copy the forum link and paste in the body of reply. The attachments way automates this. No preference to me, attachments do better integrate with site.
<starcraftman> When you're happy with your post, submit it. Someone should get back to you with instructions in a timely and friendly fashion.
<starcraftman> Some people ask how do I know the instructions will help? Or to trust the person giving? Well, there isn't a rule per se.
<starcraftman> I for instance have an almost 3000 post count, does that imply a user should trust me? I guess. Though when I started posting I only had a post count of 1, my knowledge has improved since but my advice was still usually helpful based on what I knew.
<starcraftman> The rule I'd say is, does it sound right and well explained? A person who knows their stuff should be able to convey relevant information and convince you it's the right thing to do.
<starcraftman> A few closing comments on the forums.
<starcraftman> It's a helpful resource, it harnesses the collective experience of thousands of geeks like me. Do remember we all volunteer for no pay.
<starcraftman> Also, a few helpful links you might enjoy are- http://ubuntuforums.org/showthread.php?t=1052065
<starcraftman> A free beginners guide PDF to getting started.
<starcraftman> http://ubuntuforums.org/showthread.php?t=801404
<starcraftman> A general launch point to many good forum guides written by people who know their stuff.
<starcraftman> Peruse them on your own. These links are good for general learning. Like the wiki.
<starcraftman> Section 4.5 - IRC (Real  quick)
<starcraftman> nhandler is covering this later. I only want to point out that IRC can be used for support. Channels such as #ubuntu, #kubuntu and #ubuntu-beginners are all good stops. A good run down of channels and getting help is available here- https://help.ubuntu.com/community/InternetRelayChat
<starcraftman> don't click the #links, that will open IRC client to somewhere else).
<starcraftman> The web page lists the channels, what they focus and how to fix her up. maco will give more details.
<starcraftman> oops, maco -> nhandler hehe
<starcraftman> Anyway, that's that, on to the next stop.
<starcraftman> Section 5 â Launchpad
<starcraftman> I'm going to try and make this brief, I don't want to cover charlie-tca's topic (see agenda for time), he's devoting a whole hour to launchpad.
<starcraftman> Launchpad is however the place to go when all of the above doesn't get you an answer. You have two choices.
<starcraftman> First is the answers section, see here- https://answers.launchpad.net/
<starcraftman> Launchpad Answers is basically a section designed to let the people working on the projects answer your question.
<starcraftman> Please note, you need to be signed up to use this site. If you want, you can sign up now in preparation for later with charlie-tca. A nice plus, any launchpad account is automatically an opened, can be used on other sites supporting such login.
<starcraftman> Say I have a problem with music playing in rhythmbox, so esoteric that none of the above helped.
<starcraftman> (by above, I mean the other resources)
<starcraftman> Go to answers home, click choose one project and type in rhythmbox. This takes you right to the project answer section. See if your problem is listed. If not, you can file a question here in much the same way as you would a bug (bug filing is last resort).
<starcraftman> Click ask a new question and fill it out. Someone should get back to you in a reasonable time. (don't file a question at this time...)
<starcraftman> People are very active in the Ubuntu project answering the Answers section, you might consider posting there more generally before in a specific project like rhythmbox.
<starcraftman> Next is a quick bug filing run down. Click bugs section at the top of rhythmbox. At the right, on top of ask a question is now Report a Bug.
<starcraftman> Click this only if you want to file a bug, please don't file them without being sure it's a bug and having searched existing bugs. Devs get a lot of duplicates that don't help.
<starcraftman> There's a structure to filling reports, ddecator will cover this. It's important to put more not less info, as specific as you can so devs can reproduce bugs, test and fix.
<starcraftman> Launchpad is a good service, though I'm more of a doc person so I guess I'm biased to recommend system then wiki docs.
<starcraftman> That's it on LP, please stay tuned later for more.
<starcraftman> Section 6 â AskUbuntu.com
<starcraftman> So now a new interesting site that I haven't covered previously. AskUbuntu. Please go to the following url: http://askubuntu.com/questions . It's a Stack Overflow type site that some may be familiar with.
<starcraftman> Basically, you can post questions on the site and tag them with certain keywords. Other users then look through the unanswered section and write answers. Answers are voted up or down based on other users thoughts and you can validate that the users answer is the best or not helpful at all.
<starcraftman> To start using you can sign up if you want in top right (login). It isn't strictly required.
<starcraftman> Use the Ask Question > button in the header to make a question and then wait a while until it gets an answer.
<starcraftman> You'll also see a Tags section, where you can search based on sorted tags to find questions already asked.
<starcraftman> Unanswered section like name implies sorts and lists questions that are still open and waiting an answer. Lastly, there is Users sections. Here you can see the history of a person's answers on the site, maybe you want to know if they have a good history of suggestions. You can also see their shiny badges I suppose.
<starcraftman> The Site isn't directly run by Ubuntu, but many of it's top contributors are long standing members of the community.
<starcraftman> That's about it, poke around and don't be shy to ask questions.
<starcraftman> Section 7 â Closing
<starcraftman> When confronted by a problem, stop and think. Don't panic.
<starcraftman> Write down all pertinent information that you know.
<starcraftman> Then use the right resource. I usually start with the system or wiki documentation. Or a Google search.
<starcraftman> http://search.ubuntu.com is fast becoming a favourite of mine to get quick answers as it indexes most of the good resources.
<starcraftman> If looking on your own fails to turn up help, I'd next suggest the forums or IRC. Search them carefully and if you can't find relevant info ask in ABT for help with all the information you know.
<starcraftman> Next if that doesn't work, see Launchpad answers/bug system as relevant.
<starcraftman> There's no hard fast rule, it's more of an experience thing finding good answers. The more you do it the easier it becomes. It's not too intimidating now I hope.
<starcraftman> Do please consider where the information comes from before doing anything, if you do a Google search and you find a lone blog post detailing an answer with no comments or any affiliation with Ubuntu that's been abandoned by the poster, you should hesitate.
<starcraftman> Where the information comes from is important.
<starcraftman> Just like quoting wikipedia ain't gonna cut it on a term paper.
<starcraftman> I know it's a lot of information to absorb, I hope you've found it helpful.
<starcraftman> I have extra links I may not have mentioned on my outline as listed at the beginning. Click and browse them at your leisure.
<starcraftman> I guess we can open questions, to do so orderly please follow the question format.
<ClassBot> There are 10 minutes remaining in the current session.
<starcraftman>  /Begin_Asking_Questions
<ClassBot> There are 5 minutes remaining in the current session.
* 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 User Day - Current Session: How to fix a broken machine - Instructors: popey
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<cjohnston> up next is popey...
<cjohnston> popey needs a couple minutes, so we will start shortly
<popey> Hello
<popey> == Introduction ==
<popey> Hello, I am Alan Pope. I'm a member of my LoCo Team in the UK where we make a little podcast <http://podcast.ubuntu-uk.org/>. I'm also on the Ubuntu Community Council, LoCo Council and EMEA Membership Board.
<popey> I try to give people support in #ubuntu and #ubuntu-uk and on http://askubuntu.com/ when I get time.
<popey> This session is called "How to fix a broken machine".
<popey> The target audience for this session is 'People who may at some point experience a broken Ubuntu machine' - which lets face it is potentially everyone :)
<popey> The goal of the session is to empower people to fix their own computer when something goes wrong.
<popey> What do I mean by "goes wrong" and "broken"?
<popey> The types of issues I am thinking of are the 'potential show-stoppers' which could be described using phrases like:-
<popey> "When I turn my computer on I get..."
<popey> "... no desktop or logon screen!"
<popey> "... a black screen!"
<popey> "... some crazy text I don't understand!"
<popey> Has this ever happened to you?
<popey> (It has to me, on more occasions than I can remember!)
<popey> == What I will cover ==
<popey> * An overview of the boot process
<popey> * What goes wrong
<popey> * Toolbox contents
<popey> * Diagnosing issues
<popey> * Solving some problems that occur
<popey> I'm happy to take questions any time :D
<popey> == What I can't cover ==
<popey> * Installations of Ubuntu using WUBI (Windows on Ubuntu Installer)
<popey>  - Whilst many bits are similar between a 'bare metal' install of Ubuntu and one done inside Windows, I've not had enough experience of it to speak about it confidently
<popey> == WARNING! ==
<popey> Despite this being a 'user day' I will be using the command line!
<popey> The reason for this is that when there are show-stopping bugs which prevent you getting a GUI up and running, the command line is the best way to fix the issue.
<popey> Note: I do not consider 'reinstall Ubuntu' as a fix, it's a work-around.
<popey> Ok, so lets start..
<popey> = An overview of the boot process =
<popey> (simplified)
<popey> (massively)
<popey> So what actually happens on a standard installation of Ubuntu on a pretty normal Intel/AMD based PC?
<popey> (the reason I say Intel/AMD based PC is because things are a little different on ARM, Phones, Macs etc)
<popey> Right after you power on, a bunch of checks are done, hardware is looked for and eventually the BIOS (chip on the motherboard) does some hardware checks called POST (Power On Self Test)
<popey> If those pass (and your BIOS is configured correctly) then the BIOS will then go looking for a device to boot from.
<popey> <http://www.howstuffworks.com/pc3.htm> describes that process in a little more detail.
<popey>  
<popey> Under normal circumstances you can boot from:-
<popey> - An internal hard disk (be that of a spinning variety or a new fangled SSD (Solid State Drive)
<popey> - An external device attached via USB
<popey> - Some kind of optical device (like a CD or DVD)
<popey> - A network server - often called PXE (Pre-boot eXecution Environment)
<popey> - Some other magic from the future that hasn't been invented yet.
<popey>  
<popey> Lets assume that it's booting from a local hard disk which happens to contain Ubuntu.
<popey>  
<popey> The BIOS will look for an MBR (Master Boot Record) which is located at the start of the disk. We call this 'Stage 1'
<popey> The MBR is pretty small and contains enough program code to find, load and execute the next part of the boot process.
<popey> The program used on Ubuntu is called GRUB (Grand Unified Bootloader), and we call this 'Stage 2'.
<popey> Optionally at this point we may get a menu displayed by GRUB. If no menu appears then it can be triggered by pressing and holding down the [SHIFT] key as GRUB loads.
<popey> (the menu is configured based on files in /boot/grub/ - specifically /boot/grub/grub.cfg)
<popey> (older versions of GRUB in previous releases of Ubuntu used a different file)
<popey> The menu contains a list of operating systems to boot from. If one is selected from the menu then it will continue the boot process..
<popey> The next step is to load the operating system selected in GRUB, this is usually a two-stage operation.
<popey> (well, technically it's a many many stage operation, but I'm simplifying remember) :)
<popey> First a small Linux Kernel is loaded which is called an 'Initial RAMdisk' (although you may see it called 'initrd' or 'initramfs'.
<popey> Secondly the actual Linux Kernel which will be used by your desktop/laptop is loaded. The Kernel has drivers for many things, and will go through its initialisation process loading whatever drivers are necessary.
<popey> Some are built into the Kernel image when it's compiled by the developers.
<popey> Some are 'modules' which the Kernel can load in and run after it's started running.
<popey> (the kernel usually figures out what modules to load, but sometimes it needs a little help)
<popey> Once the Kernel is up and running it hands over to a program called 'init' (short for Initialisation). On Ubuntu 'init' is provided by a package called 'Upstart'.
<popey> init/upstart then takes care of loading all the subsequent programs required to get the desktop up and running.
<popey> (which you might see listed in places like /etc/rc2.d/ )
<popey> At some point during that last process GDM (GNOME Display Manager) will load. This will present the logon screen (or not if you chose to skip the logon screen).
<popey> (KDE and XFCE use other display managers like KDM)
<popey> Once you have logged in your desktop starts.
<popey>  
<popey> So thats BIOS -> MBR -> Stage 1 -> Stage 2 (GRUB) -> Initial RAMdisk -> Kernel -> init (Upstart) -> GDM -> Desktop
<popey> (roughly speaking)
<popey> As I said, massively simplified. If you'd like to know more about the boot process I'd recommend reading this page (which is quite technical, but interesting):-
<popey> http://www.ibm.com/developerworks/linux/library/l-linuxboot/
<popey>  
<popey> You can find out more about GRUB at:-
<popey> http://en.wikipedia.org/wiki/GNU_GRUB
<popey>  
<popey> You can find out more about Upstart at:-
<popey> http://upstart.ubuntu.com/
<popey>  
<popey> Any questions about that boot process?
<popey>  
<popey> = What goes wrong? =
<popey> So now you know that the boot process consists of a bunch of parts linked together, lets see where it can all fall apart!
<popey>  
<popey> == Hardware Failure ==
<popey> Commonly forgotten about when diagnosing issues with Ubuntu is that it's possible for hardware to fail. Some ways in which hardware can fail and what the result could be:-
<popey> * Failing RAM
<popey>  - Unfortunately this can cause all kinds of issues which are often hard to pinpoint
<popey>  - Machine may not boot at all, it may boot to the BIOS and no further, or it may get part way through booting and then lock-up, shutdown or reboot.
<popey>  
<popey> * Failing Disk
<popey>  - When a disk is failing it can also look like files are corrupted, so can look like a piece of software has gone wrong
<popey>  - Machine may not boot at all beyond the BIOS, or it may get part way through and (as with RAM issues) fail in sporadic or spectacular ways
<popey>  
<popey> * Failing CPU
<popey>  - In my experience least likely, but can happen. More likely is failing to cool the CPU properly, so this could mean a failed heatsink/fan or broken down thermal paste between the CPU and heatsink.
<popey>  - Usually this results in a failure to boot at all, beeps during the POST or random crashes
<popey>  
<popey> * Failing GPU (Video Card)
<popey>  - If completely failed then this can cause a machine to not boot, but beep in a cryptic but documented way when the video card is tested during boot up.
<popey>  - This often manifests itself as a blank screen or more commonly as colourful screen corruption, which may last all the way from the BIOS screen through to GDM.
<popey>  
<popey> Ok, so that's a few ways in which hardware can fail, lets move on to see other ways we can fail.
<popey>  
<popey> = BIOS =
<popey> * Can't get past the BIOS boot screen
<popey> * BIOS boots off wrong device
<popey>  
<popey> == GRUB ==
<popey> * Can't boot past stage 1 or 2, but get a blank screen, or perhaps the GRUB menu, but can't get past it.
<popey>  
<popey> == initramdisk ==
<popey> * Get dropped to an (initramfs) prompt
<popey>  
<popey> All of which makes a user into a sad puppy :(
<popey>  
<popey> == Kernel ==
<popey> * Kernel panic on boot
<popey> * Kernel cannot find root file system
<popey> * Graphics driver no loading
<popey>  
<popey> ..and so on. So there's a large and diverse number of ways in which the system can fail to boot. Lets move on to look at some tools we can use to diagnose these issues.
<popey>  
<popey> == Toolbox Contents ==
<popey> Here's some things that are useful to have when diagnosing issues!
<popey> * Ubuntu Live CD
<popey>  - Essential because it contains the following great diagnostic utilities
<popey>   - Memtest, GRUB, GParted, a web browser in which you can go and find answers to all your questions :D -> see http://askubuntu.com/
<popey>  
<popey> * Ubuntu Live USB Key
<popey>  - Create using USB creator, UNetbootin, or by installing onto USB from CDROM (or other USB stick)
<popey>  - Useful for when you have netbook or other machine which has no optical drive
<popey>  - You can install from CD onto USB stick which means you can boot from it and add additional tools / utilities to the stick.
<popey> I personally carry round a 32GB usb stick which has Ubuntu installed on it, and from there can diagnose issues with a hard disk based install. Very handy!
<popey> * Ethernet Cable
<popey>  - For when wireless messes up :(
<popey> * USB Hard disk
<popey>  - Useful for backing up the system
<popey> * A backup of your existing system! <- most essential!
<popey> * A backup of any passwords / encryption keys which may have been used to install the system
<popey>  
<popey> == Diagnosing Issues ==
<popey> So given we now know the steps of the boot process we can identify potentially where issues can occur. First off I'd start by asking some questions:-
<popey> * What has changed since the system worked?
<popey> often the answer from the user is "nothing" and "I never touched it"
<popey> (until you shine a light in their face and threaten them)
<popey> So this could include:-
<popey>  - Hardware added / taken away / moved ?
<popey> e.g. adding a new USB device on my desktop caused it not to boot!
<popey> (the USB device was an Android phone) :(
<popey>  - Software updates, drivers added, new packages installed, packages removed?
<popey> e.g. installing the latest and greatest applications you saw on omgubuntu! :D
<popey>  
<popey> * What has been done differently today than on other days?
<popey> Maybe today the user didn't plug in their external screen, but usually they do..
<popey> Any little change can potenially cause an issue.
<popey>  
<popey> The final question:-
<popey> * Do I have a backup of all my data and passwords/keys?
<popey> Because it's entirely possible that the system is irreversibly broken, and if that's the case then new hardware or a reinstall may be the _only_ option.
<popey> But I'd like to hope we can fix most things without a reinstall.
<popey>  
<popey> == Solving Problems That Occur ==
<popey>  
<popey> Ok, so it's impossible in the next 30 minutes for me to go through every single possible scenario of what might go wrong :D
<popey> But I can pick out a couple that are quite common
<popey> And I can explain how to get your environment setup so you can diagnose these issues
<popey>  
<popey> The main thing that's useful to do when you have a completely unbootable system, is to boot to another install and inspect the contents of the broken system
<popey> That can be done in at least two ways:-
<popey>  
<popey> 1. Pull the disk out of the broken machine and put it in another machine as a slave disk
<popey> (this is actually impossible in some systems like the Asus Eee 900 where the SSD 'disk' is soldered onto the motherboard)
<popey> (this is also unpleasant to do on many laptops because you have a bazillion screws to undo and little ribbon cables that tear easily)
<popey> So that's why I often advocate option 2..
<popey> 2. Boot from an Ubuntu Live CD / USB stick.
<popey> (hence me saying you should always carry one) :D
<popey>  
<popey> Now, booting from a Live CD/USB stick is great, and can let you inspect the contents of the hard disk of the broken machine
<popey> But you often need to do more than look.
<popey>  
<popey> In the same way that a Doctor might start by giving a patient a non-invasive X-Ray or MRI scan
<popey> Sometimes you need to slice people open in order to figure out what's wrong
<popey> Note: I do not advocate slicing people open randomly :)
<popey>  
<popey> So the diagnostic tool I'm going to talk about is using a Live CD/USB with a program called "chroot"
<popey> The main use for chroot here is to attach to / login to, an existing install of Ubuntu and then look, and optionally make changes where needed.
<popey>  
<popey> This is a slightly complex process which involves a lot of commands on the command line:-
<popey> Here's what I do:-
<popey> 1. Boot from a Live CD/USB
<popey> 2. Use "sudo fdisk -l" to identify which device my local hard disk is
<popey> http://paste.ubuntu.com/559909/ <- that is the result of me running that command on my PC
<popey> As you can see I have 3 disks on this computer.
<popey>  /dev/sda is a 500GB disk
<popey>  /dev/sdb is a 250GB disk
<popey>  /dev/sdg is a 32GB USB stick
<popey> Now looking closer at /dev/sda we can see multiple partitions:-
<popey> /dev/sda1   *           1       24832   199463008+   7  HPFS/NTFS
<popey> ^^ that one contains Windows XP
<popey> So I am not interested in that for this session :)
<popey> /dev/sda2           32251       60802   229338113    5  Extended
<popey> ^^ this is an extended partition, it contains the next three partitions.
<popey> (note: there is a limit of 4 primary partitions on disks, so we tend to have lots of extra partitions under an Extended one, so we can have more than 4)
<popey> /dev/sda5           32251       59639   220001280   83  Linux
<popey> thats a biggie!
<popey> That's my root partition, which contains everything on my pc.
<popey> Some people separate / and /home as separate partitions, I haven't on this PC.
<popey> /dev/sda6           59640       60802     9335808   82  Linux swap / Solaris
<popey> that's my swap space.
<popey> Ok, so assuming that /dev/sda5 is my root partition and it's in some way broken.
<popey> Here's what we move on to in step 3.
<popey> 3. Open a terminal
<popey> Now this may be scary for some, but it's really the best way to diagnose these issues
<popey> 4. Issue the following commands:-
<popey> (assuming /dev/sda5 is indeed the broken root partition)
<popey> Now, remember at this point we're booted into a Live USB/CD environment.
<popey> We need to make some directories under which we will "mount" the broken installation.
<popey> mkdir ~/target
<popey> mkdir ~/target/dev
<popey> mkdir ~/target/sys
<popey> mkdir ~/target/proc
<popey> ~ means "my home directory", so all of those will be in the home directory of the Live environment user
<popey> (the above are going to be used to 'mount up' the broken install into)
<popey> Now we mount up:-
<popey> sudo mount /dev/sda5 ~/target
<popey> (the above mounts up the hard disk into onto the target directory, you can see your files in there)
<popey> So you could open nautilus on the Live CD/USB and navigate to the home directory, and under 'target/' you'll see your files (hopefully)
<popey> (the next three lines mount up some special folders that may be needed by the diagnostic tools)
<popey> sudo mount -o bind /dev ~/target/dev
<popey> sudo mount -o bind /proc ~/target/proc
<popey> sudo mount -o bind /sys ~/target/sys
<popey> (At this point we have the local install mounted up in a folder)
<popey> Now we "chroot" into it..
<popey> 5. 'chroot' into the install with the following command:-
<popey> chroot ~/target
<popey> actually, sorry.
<popey> sudo chroot ~/target
<popey> (at this point we'll get a root prompt inside the 'broken' system and can start poking around looking for problems).
<popey>  
<popey> This is the single most useful diagnostics system (in my opinion) for troubleshooting a broken system.
<popey> Now we're running low on time, so I'll go through an example of a specific issue that can be fixed once we have the sytem in this state.
<ClassBot> There are 10 minutes remaining in the current session.
<popey>  
<popey> === Fixing broken GRUB ===
<popey> If GRUB has become broken we can at this point check the configuration of GRUB by looking in ~/target/boot/grub/grub.cfg
<popey> Here is my grub.cfg http://paste.ubuntu.com/559911/
<popey> Note at the top:- "DO NOT EDIT THIS FILE"
<popey> However it is 'interesting' to look at
<popey> So fixing all grub issues is beyond the time we have here, but, now we have the system mounted up and chrooted we can perform additional steps which can help the diagnosis or indeed resolve the issue)
<popey> so for example at this point I would head over to the following pages:-
<popey> https://help.ubuntu.com/community/GrubHowto
<popey> (or if windows had rubbed out my grub install) :-
<popey> https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows
<popey>  
<popey> The massive stumbling block many people have is a chicken-and-egg problem that goes like this:-
<popey> 1. My system wont boot, grub is broken
<popey> 2. To fix grub, boot your system and run these commands..
<popey> 3. Goto 1.
<popey>  
<ClassBot> There are 5 minutes remaining in the current session.
<popey> By using the chroot method above, we can circumvent the "my system wont boot" and get logged into the system, bypassing the broken grub / kernel / video issue that's preventing bootup in the first place
<popey>  
<popey> I'll very quickly mention another issue that this can help fix..
<popey>  
<popey> === Fixing a half-finished upgrade/update ===
<popey> If the system powered down or crashed during system update, sometimes this can render the system unusable until the updates are 'finished'. Some commands which can help here:-
<popey> (assuming you're already chrooted in)
<popey> dpkg --configure -a
<popey> (will continue processing outstanding updates)
<popey> and..
<popey> apt-get dist-upgrade
<popey> (which will be useful if some updates need to be installed)
<popey> Note: Both of those commands, I did not use sudo.
<popey> The reason for that is because when you "chroot" you "become root" on the system. this is of course dangerous, so be careful.
<popey>  
<popey> Hmm, I'm getting to the end of my slot, and we don't really have any time left for questions, sorry about that.
<popey> I'm hoping to make a video about this which I'll put up online at http://ucasts.tv/
<popey> feel free to ping me on irc if you have questions later :)
<popey> Apparently the next session is blank for some reason. Free period!
<popey> thanks to everyone for watching me wibble on, and thanks to the classroom team!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html
<popey> thanks ClassBot !
* 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 ||
<robertf> .
<LeGambitteur> hi there
<doctormo> hi LeGambitteur
<sebsebseb> LeGambitteur: doctormo hi
<LeGambitteur> so you'll be the next presenter doctormo
<sebsebseb> LeGambitteur: no Cheri703 will be
<LeGambitteur> ah yes gmt time, sorry :p
<Cheri703> Hi Everyone
<sebsebseb> Cheri703: Hi
* 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 User Day - Current Session: Tips and tricks for multi-booters - Instructors: Cheri703
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<Cheri703> Welcome to "Tips and Tricks for Multi-Booters"
<Cheri703> Iâm Cheri703, I have been using Ubuntu for a few years now. I started with a dual-boot machine, once I was more confident, I went to Ubuntu only, and recently set up a secondary computer as a Windows/Ubuntu machine. I help with the Ubuntu Beginners Team, am a ReLoCo lead for in the Ohio LoCo, and hang out in the Ubuntu Women irc room.
<Cheri703> As an outline, first I'm going to give references/resources for setting up a dual-boot, second I will discuss a partitioning method that works WONDERS for simplifying the day to day use of a multi-boot machine, third, I will explain how to set up a 1 button OS Swap (reboot into the alternate OS).
<Cheri703> If you have questions, follow the ClassBot format: QUESTION: <question>
<Cheri703> Where <question> is your actual question. If you do not begin the line with QUESTION:, ClassBot will not recognize it, and your question will most likely not get answered. Though I'll be keeping an eye on #ubuntu-classroom-chat
<Cheri703> And away we go!
<Cheri703> Setting up a dual-boot
<Cheri703> Iâm not going to go into detail on the actual steps of setting this up, but you can check out these links to get more information.
<Cheri703> (though if there are questions, and I run too quickly, I can answer them)
<Cheri703> Windows: https://help.Ubuntu.com/community/WindowsDualBootHowTo
<Cheri703> Mac: https://help.Ubuntu.com/community/MacBookPro   https://help.Ubuntu.com/community/YabootConfigurationForMacintoshPowerPCsDualBoot
<Cheri703> If you run into problems or have questions, consult the forums ( http://www.Ubuntuforums.org ) or come visit the Ubuntu Beginners IRC room #Ubuntu-beginners
<Cheri703> When setting your initial partitions, you CAN just install Windows on your whole Hard Drive (HDD) because the Ubuntu installer can adjust partitions, BUT it makes it easier if you have a general idea of your desired partition sizes right off the bat, and create them accordingly. This avoids the possibility of losing/corrupting data during the partition adjustments.
<Cheri703> If you decide to alter an existing installation, make sure you backup ALL important information and files. External HDD, Ubuntu One, or other online backup options are good considerations.
<Cheri703> This brings us to our next topic:
<Cheri703> Cheri703's Patented Partitioning Program!!
<Cheri703> Not really. This is just a way of partitioning that I've found gives me the most flexibility and access to my data, across multiple OSs on one computer or many.
<Cheri703> The basic version: One partition (or HDD) per operating system, and one partition JUST for storage (music, files, etc).
<Cheri703> Using Symlinks in Ubuntu, all of your usual Documents/Pictures/Downloads/Etc folders (located in your home folder) will actually be saving on your Storage drive, thus enabling access from the alternate Operating System.
<Cheri703> In Windows, you'll just have to name the other partition D: or what have you, and point to the appropriately named folders/files.
<Cheri703> (Further reading about symlinks: https://secure.wikimedia.org/wikipedia/en/wiki/Symlink )
<Cheri703> This way, I can access all files without worrying about duplicates, file paths, or which OS can read which file systems.
<Cheri703> If you are using Windows/Ubuntu, be sure you make your Storage drive NTFS so you can access it from Windows! (Further reading on file systems: https://secure.wikimedia.org/wikipedia/en/wiki/File_systems )
<Cheri703> Symlinks are not like shortcuts in Windows
<Cheri703> They are a "hard link"
<Cheri703> more useful in that if you navigate to /home/user/Documents, even within the open dialog from a program, you'll be accessing the contents of /media/Storage/Documents (or however you've named it)
<Cheri703> Once you've partitioned, the next step is to set the storage partition to automount at boot.
<Cheri703> If you've created an NTFS partition for use with Windows, follow the directions in the first post of this thread from UbuntuForums: http://Ubuntuforums.org/showthread.php?t=785263 (this worked for me!)
<Cheri703> If you are dual-booting multiple linux variants, and your Storage drive is ext3 (or extsomethingelse) use the directions here: https://help.Ubuntu.com/community/AutomaticallyMountPartitions
<Cheri703> Now we're ready for the joys of Symlinking!
<Cheri703> Setting Up Symlinks:
<Cheri703> This is a multi-step process, but not especially difficult.
<Cheri703> 1. Boot into Ubuntu
<Cheri703> 2. Open Home Folder
<Cheri703> 3. Choose folder (Documents, Pictures, Downloads, Whichever)
<Cheri703> 4. Cut/paste (Move) folder to Storage Drive
<Cheri703> 5. Right click the folder, choose "Make Link"
<Cheri703> This creates a "Link to Documents" icon
<Cheri703> 6. Cut/paste (Move) icon to Home folder
<Cheri703> *Move "Link to Documents" icon to home folder
<Cheri703> 7. Rename as Documents
<Cheri703> Congratulations! You now have a Symlink! Repeat this process for any other folders you'd like to access from your alternate OS. Naming the Symlinks to match the original folder names will allow the âPlacesâ bookmarks to work, adding to the convenience factor.
<Cheri703> Now, I can already assume that a few of you will be asking, "Why not just mount /home on a different partition?"
<Cheri703> That CAN be useful. I found that I had more issues with it. Also, when using multiple linux variants, and even different flavors of Ubuntu, you don't necessarily want to mix your .app folders in /home.
<Cheri703> If you have a Kubuntu .mozilla folder and an Ubuntu .mozilla folder, they might have vastly different settings. This can lead to conflicts and issues. Having only benign data lumped together makes it much easier to avoid screwing things up! I mess up random obscure things easily enough, I don't need to make it more likely to happen!
<Cheri703> One other benefit that I use HEAVILY is the fact that if you need to reinstall your OS (any of them) you can simply copy relevant system/configuration files (and in Ubuntu your entire home folder to save your program settings) to the Storage drive, Reinstall on the OS drive, and copy back over as needed.
<Cheri703> Using this method, I have gone from blank OS drive to fully functioning (and reconfigured) Ubuntu install in under 45 minutes (and my computers are fairly slow). This includes updates and program installation, and everything. THAT IS WAAAAAAY faster than I have EVER installed Windows.
<Cheri703> Finally we come to the OS change method.
<Cheri703> A bit of backstory: when I decided to set up a hand-me-down computer as a dual-boot (Thanks Dad!), I idly wondered if it was possible to have it set up as a headless secondary server. For those unfamiliar with the term, headless implies "without monitor/keyboard/mouse."
<Cheri703> The main difficulty I had when previously setting up dual-boot machines was catching the GRUB menu in time to choose my OS. When trying to use the computer via SSH or VNC, there would be no access to GRUB. After much googling, I found a magical command built into GRUB: grub-reboot.
<Cheri703> (Further information about SSH: https://help.Ubuntu.com/community/SSH  Further information about VNC: https://help.Ubuntu.com/community/VNC I use tightVNC in Windows)
<Cheri703> grub-reboot X is the format used, where X is the POSITION in the GRUB menu of the OS you want to choose.
<Cheri703> Just to check, does anyone have any questions about what I've covered so far?
<Cheri703> One important thing to remember is that the numbering starts with 0 (this threw me off when I was initially attempting this). For my system, I need grub-reboot 6. This command ONLY boots into the selected OS once, then goes back to the default selection.
<gpc> mhall119> QUESTION: How difficult is it to mix security/access control when using NTFS as your Storage partition?
<Cheri703> I have not run into any issues in my own use of it, depending on your specific use case, it may vary.
<Cheri703> The reason I use NTFS on my secondary drive in my server is for backup purposes
<Cheri703> If my computer dies (It is old and has fits), I can pull that HDD and plug it into any other computer and access my data.
<gpc> <decumanus> QUESTION: My windows grub entry is _last_ - kernel number above it  tends to increase - is it possible to use grub-reboot last entry?
<Cheri703> Other than keeping track of the number I'm not sure. Perhaps clearing old kernel versions from your list on a regular basis? Once I'm done, I will check to see if there is any info about that available.
<Cheri703> Any further questions? If not, I'll continue
<Cheri703> To set the default selection, open the terminal, type "sudo gedit /boot/grub/grub.conf"
<Cheri703> Change the default line to "default=0" if you want Ubuntu (first selection) to be your default.
<Cheri703> You may also use startupmanager It is a GUI for changing your GRUB settings (I have used it several times)
<Cheri703> To use the grub-reboot method, there are a few options: you can open terminal and type "sudo grub-reboot 6" or you can make a script and add a launcher to your panel (this is nice if you reboot often). My script is as follows:
<Cheri703> #!/bin/bash
<Cheri703> gksu grub-reboot X
<Cheri703> gksu reboot
<Cheri703> Also available here: http://paste.Ubuntu.com/559801/
<Cheri703> X is replaced by the number
<gpc> <russjr08> QUESTION: Doesn't grub-reboot automatically reboot? or do you have to have the reboot command?
<Cheri703> No, because it is just setting the condition
<Cheri703> you are telling it "Grub, next time you reboot, use selection 6"
<gpc> <wolfpack> QUESTION: Does grub-reboot is same as system-reboot ?
<Cheri703> No, it is a command within GRUB.
<Cheri703> you will still need to reboot separately from running grub-reboot
<Cheri703> Any further questions?
<Cheri703> Oh, you must run grub-reboot as sudo
<Cheri703> (forgot to note that :) )
<Cheri703> This script/launcher is very handy when sitting at the computer, or when connecting via SSH or VNC. This is what enables headless use. I've found it incredibly useful to have VNC set up in both Ubuntu and Windows, so I can access it with the same IP address, no matter which OS is loaded.
<Cheri703> As previously stated, grub-reboot only changes OS once, so simply rebooting from Windows brings you right back to Ubuntu.
<Cheri703> (or any other alternate OS)
<gpc> <bircow_> I have one question about NTFS (if I can). NTFS has ACL permissions - multiple users/groups can have particual access. How to achive the same with extN if there's only owner, group, other?
<Cheri703> You should be able to add the users to a new group, and (I may be wrong) perhaps give group one access also to group two (if you are wanting group one to access a folder that others can access as well)
<Cheri703> Any further questions?
<Cheri703> Well, there you have it, Cheri703's Patented Partitioning Program and The Amazing Headless Dual-Boot!
<Cheri703> bircow_: I was provided with this link as well: https://help.ubuntu.com/community/FilePermissions#ACLs
<Cheri703> That may help you
<gpc> <wolfpack> QUESTION : Can we remove some of the kernel entries from grub?
<Cheri703> wolfpack: if you uninstall the kernel entries using synaptic OR sudo apt-get autoremove I believe grub should update at your next reboot, if you want it to happen sooner, you can run update-grub
<Cheri703> We have about 10 minutes before the next session, so questions are welcome :)
<Cheri703> If none, take an intermission :)
<ClassBot> There are 10 minutes remaining in the current session.
<doctormo> This next session will be for Inkscape graphics, and because it's a visual topic.
<doctormo> We're going to stream a video live, with sound.
<Cheri703> I am told that the 10.10 version of startupmanager has a selection for number of entries on your grub menu (sorry to interrupt doctormo)
<doctormo> please go to this link http://www.livestream.com/technicallyaclassroom?t=809264 to listen in and see what I'm teaching
<ClassBot> There are 5 minutes remaining in the current session.
* 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 User Day - Current Session: Inkscape Introduction - Instructors: doctormo
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<nigelb> Folks, doctormo is doing a live session at http://www.livestream.com/technicallyaclassroom?t=809264
<gpc> doctormo> http://openclipart.org
<gpc> <doctormo> http://www.wikimedia.org/
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
<doctormo> Thanks everyone for watching the live cast, suggestions and research into better video solutions are most welcome.
* 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 User Day - Current Session: Command Line Email Clients for Ubuntu - Instructors: _marx_
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<Pendulum> Okay, it looks like _marx_ hasn't made it back from a work thing he got called out to so I'm going to do the session on Accessibility now and he'll do his session at 20:00 UTC when mine was originally scheduled
<Pendulum> unfortunately, I don't have access to the bot so please bare with me when it comes to questions as I have to try to catch them all myself
* 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 User Day - Current Session: Accessibility apps - Instructors: Pendulum
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<Pendulum> Just a quick intro, I'm Penelope Stowe and I'm the co-leader of the Ubuntu Accessibility team. My co-leader is Luke Yelavich (or TheMuso on IRC)
<Pendulum> I focus on the outreach and documentation side of the team, while he runs the development side.
<Pendulum> This session isn't a how-to guide and won't go into a huge amount of detail into any one program.
<Pendulum> Instead, it should give you an overview of what's availible for accessibility tools in Ubuntu.
<Pendulum> I'll also give you some resources for where you can get help and find more information.
<Pendulum> This session will focus on GNOME-based accessibility features. GNOME has used at-spi as it's accessibility toolkit. Right now it is switching to Dbus/at-spi2.
<Pendulum> I am also focusing on programs that can be found in the Ubuntu Software Center in Maverick.
<Pendulum> This means there are programs that may have worked in older versions of Ubuntu, which aren't currently there or that are in PPAs and will possibly be in the software center in the future.
<Pendulum> I'll also talk a little bit about a couple derivatives of Ubuntu which focus on accessibility features.
<Pendulum> I do want to note that this information is for Maverick (Ubuntu 10.10) and earlier. Due to the switch to Unity, the accessibility framework starting with 11.04 is changing, but I have no idea what may or may not change yet in how accessibility programs and features are accessed.
<Pendulum> Before I talk about specific programs, I want to talk about the Assistive Technologies menu, which can be found in System->Preferences -> Assistive Technology.
<Pendulum> This menu is where you can select your preferred accessibility programs and enable assistive technologies.
<Pendulum> You can use this menu to specify things such as how long to accept as a keypress, how to prevent accidental double clicking, and how quickly to respond to key presses.
<Pendulum> It's also useful for turning off and on sticky keys or specifying keystrokes to stand in for things you'd normally do with a mouse.
<Pendulum> This is also the menu you use to specify which programs you want for an alternate keyboard or as a screen reader.
<Pendulum> I also want to mention the accessible install process.
<Pendulum> When you install Ubuntu can an accessible install, this allows for you to choose between several different 'accessibility profiles' (such as blind or motor impaired) so you can have the tools to install without needing to be non-disabled.
<Pendulum>  Unfortunately, this process doesn't always work.
<Pendulum> In Lucid, the accessible installer was reached through a specific set of keystrokes
<Pendulum> in Maverick it didn't work at all initially. It is hopefully already fixed for Natty
<Pendulum> If you need an accessible install and want to run Maverick, I would suggest installing Lucid and upgrading.
<Pendulum> You can find instructions on doing an accessible install at: http://www.theopensourcerer.com/2010/08/13/going-headless/ (along with some humour)
<Pendulum> Does anyone have any questions about the Assisstive Technologies Menu or the accessible install?
<Pendulum> The first set of programs I'm going to talk  about are the text-to-speech programs.
<ClassBot> Texou asked: so today to install accessible Ubuntu, is there a manual?
<Pendulum> the post I linked to for http://www.theopensourcerer.com/2010/08/13/going-headless/ has a pretty good description of the install process and how to do it on Lucid
<Pendulum> https://help.ubuntu.com/community/Accessibility/doc/StartGuide also has information
<Pendulum> Any other questions?
<Pendulum> Moving on
<Pendulum> The most popular text-to-speech program is Orca, although it isn't just a screen reader, but has other capabilities as well
<Pendulum> Orca includes a screen reader, magnification capabilities, and braille capabilities, so it is more than text-to-speech, however most people when you say Orca think of it as a screen reader.
<Pendulum> Orca was developed by the Accessibility department at Sun Microsystems, however, with the acquisition of Sun by Oracle, it has moved to community-development only.
<Pendulum> Orca can work with programs that include the at-spi toolkit including the GNOME desktop, Firefox, OpenOffice, and many others.
<ClassBot> habeouscorpus asked: Does Orca do speech to text?
<Pendulum> No it does not. As far as I know Orca has no plans to do speech to text (I'll cover the limited options for speech to text later)
<Pendulum> More information about Orca can be found at http://live.gnome.org/Orca
<Pendulum> And, yes, it is named after the animal in the tradition of screen readers being named after aquatic animals. (The most well known is JAWS for Windows)
<Pendulum> Are there any other questions about Orca?
<Pendulum> Another text-to-speech program is eSpeak. eSpeak is command line based.
<Pendulum> It supports quite a few different languages
<Pendulum> There are several different versions of eSpeak including one specific to emacs.
<Pendulum> More information can be found at http://espeak.sourceforge.net/
<Pendulum> These are the two main text-to-speech/screen reader options in the Software Center
<Pendulum> Are there any questions about espeak or other questions about text-to-speech in Ubuntu?
<Pendulum> Moving on from text-to-speech, I'm going to very quickly cover magnification software
<Pendulum> The two bits of magnification software commonly found in Ubuntu are gnome-mag and the magnification part of Orca
<Pendulum> And that's about all I have there :P
<Pendulum> Next I want to talk about alternate keyboards.
<Pendulum> oh, before I move on AlanBell has mentioned in -classroom-chat that Compiz zoom is also pretty good for screen magnification
<Pendulum> anyway, alternate keyboards  are programs which can be used to replace or augment a traditional keyboard. They usually directly interface with the mouse however the mouse may be controlled.
<Pendulum> The built-in alternate keyboard for Ubuntu is onBoard.
<Pendulum> It was developed as a Google Summer of Code project several years ago and is a basic on screen keyboard.
<Pendulum> It includes everything except the function keys from a regular keyboard
<Pendulum> You click on the key or a sequence of keys and it inputs directly into whatever program you're working on
<Pendulum> Not only useful as assistive technology, it's rather useful for people using Ubuntu on a tablet
<Pendulum> (in fact, I find onBoard tedious to use with a mouse, but would probably be fine with it as a tablet)
<Pendulum> The other well known option for alternate keyboard capabilities is Dasher
<Pendulum> Which, for those of you who know me, I promise not to wax poetically about for the next 20 minutes ;-)
<Pendulum> Dasher, rather than having a keyboard set-up, is mouse controlled by hovering the mouse over the letters on the screen
<Pendulum> It also has predicitve text capabilities, which can be quite useful
<Pendulum> If you run Dasher from the Applications menu in Ubuntu, it prints the characters in its own text editor and you can copy and paste into other programs
<Pendulum> From the command line you can run " dasher -a direct " which allows direct input into other programs
<Pendulum> that said, direct input can be buggy and with GNOME's move to Dbus/at-spi2 this functionality will become slightly more complex. I'm not quite sure how it will work with Unity (or if it will work with Unity) yet
<Pendulum> There are also Windows and MacOS X versions of Dasher.
<Pendulum> For more information (including video and a way to try without downloading) you can go to http://www.inference.phy.cam.ac.uk/dasher/
<Pendulum> Are there any questions about alternate keyboards?
<Pendulum> Moving on...
<Pendulum> There are two programs in Ubuntu that help with alternate mouse controls
<Pendulum> MouseTrap allows headtracking using a webcam to control your mouse
<Pendulum> MouseTweaks works with the Assistive Technologies menu to give the ability to allow the mouse to "click" even if the mouse user can't actually make the motion that allows a mouse to click normally
<Pendulum> These should then work with whatever programs the user uses within the computer to control it (such as Dasher)
<Pendulum> And now the topic that everyone asks about (and is one of the things that got me involved with the accessibility team): Voice Recognition software
<Pendulum> The short answer is that there are hacks and there are programs that sort of work, but there aren't great results for voice recognition in Ubuntu
<Pendulum> The only voice recognition software in the Software Center is Julius (and it's not listed in the assistive technology section so you have to search for it and know it's there)
<Pendulum> (yes, I know I still need to file a bug about that ;) )
<Pendulum> Julius was originally developed in Japanese and is being ported to English
<Pendulum> Unfortunately, as it's not finished software, the documentation is lacking
<Pendulum> I've spent some time trying to figure out how to make it work in the past with no success, although I know others who've had slightly more success
<Pendulum> The other thing which has worked for some Ubuntu users is to run Dragon Natural Speaking under Wine
<Pendulum> I have been hearing good things about Simon-Listens which can be found in a PPA, however, it is really only meant to be voice control for the computer, not speech-to-text.
<Pendulum> Are there any questions about voice recognition?
<Pendulum> < hajour> is there not something from julius from microsoft ?
<Pendulum> I honestly don't know. I know that a lot of the open source work on voice recognition has in some way involved proprietary voice engines and libraries, but I don't know about Julius specifically
<Pendulum> Are there any other questions about voice recognition?
<Pendulum> Okay, those are the major groups of accessibility programs and what's availible in Ubuntu
<Pendulum> Now I'm going to talk about some of the accessibility-specific Ubuntu derivatives (or are related to accessibility)
<Pendulum> the biggest of these at the moment is Vinux, which is aimed and blind and visually impaired users.
<Pendulum> You can get more information at http://vinux.org.uk/
<Pendulum> Another one that's been discussed in the GNOME community quite a bit Guadalinux- a11y edition
<Pendulum> This is a Spanish-language derivative and the a11y edition was supposed to have its first release in November 2010, however, I can't find any information on whether it actually released or not (and I can't read Spanish to really look at the Guadalinux site to find it)
<Pendulum> Finally, we have Qimo4kids, which mhall119 developed partially as a way to create something that would be easy for kids with developmental disabilities to use
<Pendulum> Before I give the list of ways to get help with accessibility, I'd like to talk a little bit about how the future of accessibility development for Ubuntu is looking
<Pendulum> Right now Luke and several other people at Canonical are working to get the accessibility framework for Unity written and in
<ClassBot> There are 10 minutes remaining in the current session.
<Pendulum> There are also new projects being worked on such as SpeechControl, a community developed project that aims to provide a screen reader, and hopefully also voice control for Ubuntu
<Pendulum> Are there any questions about the derivatives or the future of accessibility?
<Pendulum> Okay, I'm going to end with where you can go to get help on accessibility related issues in Ubuntu
<Pendulum> https://help.ubuntu.com/community/Accessibility has the official documentation
<Pendulum> http://wiki.ubuntu.com/Accessibility is the wiki pages, these are slowly being updated
<Pendulum> The Accessibility section of Ubuntu Forums
<Pendulum> #ubuntu-accessibility here on freenode
<Pendulum> ubuntu-accessiblity@lists.ubuntu.com (to subscribe go to https://lists.ubuntu.com/mailman/listinfo/Ubuntu-accessibility )
<Pendulum> the ubuntu accessibility team is http://wiki.ubuntu.com/Accessibility/Team and now http://ubuntuaccessibility.wordpress.com/
<Pendulum> The Gnome A11y team is also often useful: gnome-accessibility-list@gnome.org & http://projects.gnome.org/accessibility/
<Pendulum> Does anyone have any final questions?
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> habeouscorpus asked: Are there any known bugs or incompatibilities with Orca?
<Pendulum> the biggest known bug recently has been the installer bug
<Pendulum> I have talked to people who have, however, found it fixed in the early teasting of Natty so hopefully it is fixed
<Pendulum> otherwise you can find the bugs by search for Orca on Launchpad
<Pendulum> Looks like we're out of time. If you have any other questions feel free to ask in #ubuntu-accessibility or on the mailing list
<Pendulum> Thanks everyone for coming to my session!
<pleia2> Thanks Pendulum!
* 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 User Day - Current Session: Using IRC - Instructors: nhandler
<nhandler> Hello everyone. My name is Nathan Handler. I am a member of the Ubuntu IRC Council and freenode staff, and I am here to talk about using IRC.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<nhandler> If you have any questions during the session, please ask them in #ubuntu-classroom-chat (prefix them with 'QUESTION:') and I will answer them as soon as possible.
<nhandler> IRC stands for Internet Relay Chat. It is a convenient way for many people to chat in real-time online. It is also how everyone here today is participating in the Ubuntu User Day event.
<nhandler> In the Ubuntu community, IRC serves several key purposes.
<nhandler> First, it is one of the main methods for users to receive support.
<nhandler> If you have questions about using Ubuntu, one of the hundreds of people in #ubuntu will probably be able to help you (or point you in the right direction).
<nhandler> Many teams in the Ubuntu community also have their own IRC channels. These channels make it easy for members of the team to collaborate and organize their activities.
<nhandler> A list of Ubuntu IRC channels and their purposes is available on the wiki: https://wiki.ubuntu.com/IRC/ChannelList/ . You can join an IRC channel by entering: /join #channel in your client.
<nhandler> Currently, the closest thing to an IRC client that Ubuntu ships with is empathy. Empathy has many issues with IRC, so I would recommend using the freenode webchat (http://webchat.freenode.net/) if you are hesitant to install a new IRC client (https://help.ubuntu.com/community/InternetRelayChat#IRC%20Clients).
<nhandler> One of the first things you should do if you are planning on regularly using IRC is register your nick. Registering your nick ensures that nobody else can steal it, and allows other people to verify that you are really who you say you are (rather than someone impersonating you).
<nhandler> freenode recommends that you setup your nick in this fashion: http://freenode.net/faq.shtml#nicksetup
<nhandler> When you join an IRC channel, be sure to closely read the channel's topic by using the /topic command. This is where you will be able to learn about what the channel is used for and what rules you need to follow.
<nhandler> For example, in most Ubuntu channels, you are expected to observe the Code of Conduct (http://www.ubuntu.com/community/conduct) and the IRC Guidelines (http://wiki.ubuntu.com/IRC/Guidelines)
<nhandler> Failure to abide by the rules in a channel can result in you getting banned from being there.
<nhandler> Channels are managed by people called operators. You can view a list of operators for a particular channel by entering: /msg ChanServ ACCESS #channel LIST
<nhandler> People with the +o flag are operators. Information about what the other flags mean is available by entering: /msg ChanServ HELP FLAGS
<nhandler> Are there any questions so far?
<ClassBot> mhall119 asked: Who gets to have +o on Ubuntu channels?
<nhandler> That is a good question
<nhandler> There are different types of Ubuntu IRC Channels
<nhandler> There are channels that we refer to as "Core Channels" (https://wiki.ubuntu.com/IRC/IrcTeam/Scope). These channels are managed by the IRC Team
<nhandler> For the core channels, the IRC Council will occassionally put out a call for more operators when they feel it is needed
<nhandler> I'm trying to find a link to the wiki page explaining that process
<nhandler> For non core channels (i.e. team channels), they will have their own process. Some channels, such as #ubuntu-classroom, grant OP access to all Ubuntu Members.
<nhandler> https://wiki.ubuntu.com/IRC/IrcTeam/OperatorRequirements explains the process for the core channels
<ClassBot> akshatj asked: What is half-ops?
<nhandler> freenode does not support half-ops. Instead, it uses flags (/msg ChanServ HELP FLAGS) to allow you to control what level of access certain people have in a channel.
<nhandler> Any more questions?
<nhandler> One topic I would like to mention is channel creation
<nhandler> Lots of good information about setting up a channel on freenode can be found here: http://blog.freenode.net/?p=78
<nhandler> If you want to create a channel in the Ubuntu namespace (i.e. #ubuntu-*), you should notify the IRC Council. This is mainly to make sure we are aware of what channels are in the namespace and to prevent abuse.
<nhandler> For channels created outside of the Ubuntu namespace, you will most likely want to prefix the name with 2 #s to comply with freenode channel naming policy ( http://freenode.net/policy.shtml#channelnaming ). Only groups with a group registration form on file ( http://freenode.net/group_registration.shtml ) should have single # channels
<nhandler> Another source of frequent confusion on IRC has to do with channel and user modes.
<nhandler> I don't want to go into much detail about modes during this session, but I do want to note that lots of useful explanations are available at: http://freenode.net/using_the_network.shtml
<nhandler> Another useful document is the freenode faq (http://freenode.net/faq.shtml). This page tries to answer many of the common questions that users tend to have.
<nhandler> Any questions?
<nhandler> I'd also like to briefly mention some of the bots that we utilize in Ubuntu.
<nhandler> In the Ubuntu channels, you will often find ubottu or one of the ubot clones. These bots (among other things) serve as factoid bots. They make it easy to send users information about certain important topics.
<nhandler> !ubuntu
<nhandler> ubot2: !ubuntu
<nhandler> Hmmm...Well, I'm not sure why ubot2 is choosing to ignore me right now, but the usual response to something like that would be:
<nhandler> Ubuntu is a complete Linux-based operating system, freely available with both community and professional support. It is developed by a large community and we invite you to participate too! - Also see http://www.ubuntu.com
<nhandler> ubuntulog serves as a log bot. It is the bot that causes logs to show up on irclogs.ubuntu.com. Most of the main Ubuntu channels have logs there (including this one)
<nhandler> Ah, that would be the reason (I forgot we were +m)
<nhandler> !ubuntu
<ubot2> Ubuntu is a complete Linux-based operating system, freely available with both community and professional support. It is developed by a large community and we invite you to participate too! - Also see http://www.ubuntu.com
<nhandler> :)
<nhandler> freenode also provides some bots. There is NickServ for managing your account, chanserv for managing channels, memoserv for sending messages to users who might be offline, and alis for searching for channels
<nhandler> All freenode bots support the 'help' command, so feel free to use that to get information on their usage
<nhandler> Another common question new users tend to ask concerns cloaks
<nhandler> Ubuntu only gives out 2 types of cloaks. There are ubuntu/member cloaks for official Ubuntu Members and ubuntu/bot cloaks for bots. Information on the requirements and process for getting these cloaks is available on the wiki: https://wiki.ubuntu.com/IRC/Cloaks
<nhandler> freenode also offers 2 types of cloaks. They offer unaffiliated cloaks for free (and unaffiliated bot cloaks) as well as special PDPC cloaks for users who donate. Information on the freenode cloaks is available here: http://freenode.net/faq.shtml#cloaks
<nhandler> Cloaks are a useful method to show your affiliation with a project. If you are interested in hiding your IP address for security purposes, you should consider TOR: http://blog.freenode.net/2010/01/connecting-to-freenode-using-tor-sasl/
<nhandler> Any questions?
<ClassBot> LeGambitteur asked: are we allowed to use bots others then official ones ?
<nhandler> The general rule for bots on freenode is that you should not have them join any channel without permission from the people who manage the channel. You also do not want it to be PMing random users (which might be considered spam)
<nhandler> You are more than welcome to run a bot in your own IRC channel
<ClassBot> charlie-tca asked: does memoserv work in the #ubuntu named channels?
<nhandler> You interact with MemoServ via PM. That means that it does not matter what channel you or another user is in.
<nhandler> You can prevent yourself from receiving messages from MemoServ with: /msg NickServ HELP SET NOMEMO
<nhandler> You can also use the following command to cause you to receive all memos as emails: /msg NickServ HELP SET EMAILMEMOS
<nhandler> Any more questions?
<ClassBot> sebsebseb asked: When does memoserv tend to get used?
<nhandler> I tend to use MemoServ if I need to notify an offline user about something non-urgent (as users who do not get email notifications about them sometimes miss reading them). MemoServ is also useful as it tells you when the user has read your memo
<nhandler> Well, if you are interested in lesser-known features, I have 2 more you might enjoy
<nhandler> Many users use a /notify feature in their IRC client to get notified when certain people come online
<nhandler> freenode has a special 'MONITOR' command that allows the server to notify you about these users (rather than having your client query the server)
<nhandler> A script to add MONITOR support to irssi is available at http://www.stack.nl/~jilles/irc/monitor.pl.txt
<nhandler> (Information about the command will soon be available on the freenode faq)
<ClassBot> sebsebseb asked: What's that command again for finding out when an account was registered on the network?
<nhandler> You can use /msg NickServ INFO NICK to figure out when a nick was registered. That command is also useful for seeing when the nick was last identified to
 * nhandler notes that the question above is mentioned at: http://freenode.net/faq.shtml#inuse as well
<ClassBot> There are 10 minutes remaining in the current session.
<nhandler> Another not-well-known feature has to do with CAPAB IDENTIFY-MSG. This is a useful feature for knowing that a user is actually identified.
<nhandler> You can change your nick to almost anything that you want. For instance, there is nothing stopping you from changing your nick to sabdfl right now. However, CAPAB IDENTIFY-MSG will make it clear to other people that you are not identified, and therefore, it is not safe to assume that you are really Mark Shuttleworth
<ClassBot> palhmbs asked: which client do you find most useful?
<nhandler> I run irssi inside of screen. It is a CLI-based IRC client, but it allows me to access my IRC client from any computer I can run ssh on. When I don't have access to ssh, I use the freenode webchat at webchat.freenode.net
<ClassBot> sebsebseb asked: Do you recommend using nick protection?  Maybe you should provide the command for those that don't know how.
<nhandler> That really depends. For most users here, you will not have to worry about people using your nick while unidentified. If you ever experience that, you can use /msg nickserv help release to reclaim your nick (You will probably have to run the command twice)
<nhandler> The feature that sebsebseb is referring to will force users to change their nick if they do not identify within 30 seconds: /msg nickserv help set enforce
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> LeGambitteur asked: where can we find useful commands list ?
<nhandler> There are several places to learn about commands. You can PM any of the freenode bots 'HELP' to see all of their commands, you can look through the freenode website (especially the faq and the using the network guide), you can send the HELP command to the server (/quote HELP), or you can look at many of the IRC guides online (although not all of them will apply)
<nhandler> You can also always ask questions in #freenode
<nhandler> Alright. We are about out of time. Thanks for attending.
<nhandler> Feel free to PM me at any time with additional questions (or ask in #freenode).
<nhandler> Remember to fill out the survey for UUD
<nhandler> http://tinyurl.com/UUDSurveyJan11
* 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 User Day - Current Session: Command Line Email Clients for Ubuntu - Instructors: _marx_
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> Unfortunately _marx_ got called in to work earlier today and hasn't made it back
<pleia2> so we're just going to leave this as a free session, go ahead and stretch your legs :)
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
<pleia2> Quick reminder before the next session begins, we have a survey that we'd love for you to fill out at the end of the day to help us improve UUD next time: http://tinyurl.com/UUDSurveyJan11
<pleia2> it's short :)
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Desktop Environments: Gnome, KDE, XFCE - Instructors: maco, pleia2
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> Hi everyone! Welcome to the session on Desktop Environments.
<pleia2> Quick introductions, I'm Elizabeth Krumbach, a member of the Ubuntu Community Council and I've been using Xubuntu since my first *buntu install and have been using XFCE since 2003. My day job is as Debian Sysadmin.
<maco> I'm Mackenzie Morgan, and I'm a MOTU & member of the Americas Regional Membership Board.  I used Ubuntu from 2006-2008 and Kubuntu 2009 to now.  I am an as-of-this-past-Monday member of the real world instead of being a student anymore :P
<pleia2> OK, to start out, I will quickly explain what a Desktop Environment is.
<pleia2> A Desktop Environment is the full interface, including Window Manager, panels, menus, engines, tools and applications which are put or built to work together.
<pleia2> By default, when you install Ubuntu you will get "Gnome" as your Desktop Environment. Other options for a Desktop Environment include KDE and XFCE.
<pleia2> I will note, as it can be confusing, but a "Window Manager" is not a "Desktop Environment", it's only a part of it. At the core, a Window Manager simply handles the behavior of the windows on your screen.
<pleia2> To add complexity, we've also been hearing a lot about "Unity" and "Gnome Shell" - a "Shell" in the graphical sense is more than a Window Manager and less than a Desktop Environment. If you want to learn more about Unity, jcastro is doing a session at 03:00 UTC.
<pleia2> As far as Window Managers go, Gnome uses Metacity, KDE uses KWin, and XFCE uses XFwm. A common example of when you may replace a Window Manager is when you use Compiz Fusion, the window manager which gives you "The Cube" and other effects in the Gnome or KDE Desktop Environments.
<pleia2> So, why would you want to switch from Gnome, the default in Ubuntu, to a different Desktop Environment?
<pleia2> One popular reason is simply preference. Give another one a try! You may like you find out how customizable the panels are in XFCE, or the flashy widgets are in KDE.
<pleia2> Another is speed/performance. Some let you slim down your environment by loading up fewer things by default, some are faster (usually by sacrificing eye candy), some work with lighter window managers which may run better on your system.
<pleia2> Any questions so far?
<pleia2> < Interficio> So what what desktop enviroment would you suggest if your running the ubuntu netbook edition?
<pleia2> the ubuntu netbook edition comes with a version of gnome adapted for the netbook
<maco> That's what's now known as Unity
<pleia2> personally I didn't like it a whole lot and just use regular gnome on my netbook, it's really about personal preference
<maco> Kubuntu Netbook on the other hand uses Plasma Netbook, an interface upstream KDE created for netbooks
<maco> So, the default DEs in the various Ubuntu releases are:   GNOME in Ubuntu, KDE in Kubuntu, Xfce in Xubuntu, and...well LXDE in Lubuntu but...Lyz are you going to talk about that? Lubuntu isn't official yet, as far as I know.
<pleia2> No, we're skipping LXDE this time around
<maco> You can install any of them from a CD specifically containing that version, or you can install another of them right along with your current version by simply installing the *-desktop metapackage
<maco> 	It'll pull in everything that's normally included on the CD for that version and add an entry to the options on your login screen so you can pick between them
<maco> It won't replace the existing one, just add to it.  (And by the way, metapackages are just dummy packages that pull in lots of others as dependencies so you can get full sets.)
<maco> Each has its own default set of applications. If you get more than one of them, you'll end up with lots of applications installed
<maco> Many of those will do the same thing
<maco> You'll also notice that each has its own default theme and wallpaper and all that goodness. Ubuntu's historically been the brown one, but now it's eggplant/aubergine/purple. Kubuntu's the blue one. And Xubuntu's that funny colour that comes between blue and grey
<ClassBot> taves asked: while running Kubuntu i noticed there were different in sytax ie. instead of gksudo it was kdesudo are all the commands different for each environment
<pleia2> not all of them, but as the DEs feel the need they will create and adapt the code to work better within their environment
<maco> The graphical applications are different, so in that case you're invoking different graphical applications for requesting credentials. You can use gksudo on Kubuntu if you install it. No harm in using "gksudo kate" for example. Normal command line stuff (mv, irssi, cp) is the same though
<ClassBot> digbydog asked: you mentioned 'upstream' which some other people have used today. Could you explain it's meaning?
<pleia2> "upstream" just means the project above the one you're using
<maco> Code flows from upstream to downstream (like water in a river)
<pleia2> right, so there is a gnome project, and ubuntu takes gnome from that, so gnome is upstream from ubuntu
<maco> Upstream writes it, downstream (in this case Ubuntu) packages it and maybe patches it a bit too
<ClassBot> nhandler asked: Should I worry if apt says it is going to remove ubuntu-desktop (or another meta package)?
<maco> It's not the scary "oh god my entire desktop is going away" thing it sounds like, BUT it could make upgrades go less smoothly
<pleia2> when it says that, it means you're removing one of the packages that is the ubuntu-desktop meta package pulls in
<ClassBot> taves asked: so instead of running dual boot Kubuntu and Ubuntu i can install the KDE environment on my *buntu
<maco> Exactly
<pleia2> Ok, that's all the questions for now so we'll move on, now, each of these comes with different software and looks different, we'll now explain a bit about them and how they differ
<maco> Ubuntu, being GNOME-based, has a top and bottom panel. Bottom lists your windows and workspaces. Top has menus to get to apps and configure stuff and also your clock and all
<maco> The top panel is also where you find the broadcast UI for using Twitter / Identi.ca
<maco> Kubuntu uses the KDE4 Plasma-Desktop interface on the desktop mode and Plasma-Netbook for netbooks. Starting with 10.10 (Maverick), these are on a single iso
<maco> Which interface you see on first login is determined by your screen resolution
<maco> You can change between them in System Settings -> Workspace if you have a preference. I actually use Plasma Netbook on my 22" screen at work
<maco> Plasma-Desktop has a fairly normal menu for launching applications (but with a search box) in the bottom left corner
<maco> Plasma-Netbook has the menu embedded in the desktop
<maco> Ubuntu's defaut set of applications includes Empathy for IM, Firefox for web, Tomboy for notes, Evolution for mail/cal/address, and some other stuff
<maco> In Kubuntu these are corresponded to by Kopete, Arora, hmm for notes I think that's mixed into the next bit which is Kontact
<maco> One thing Kubuntu has that you don't see in Ubuntu so much is that you can have lots of widgets. They can be rotated or resizes or even overlapped. One of these is on the Plasma-Desktop by default to contain all your files and such on the desktop to a small area instead of scattering everywhere
<maco> In Plasma-Netbook you get a page called Page One that can scroll to fit *even more* widgets on your itty bitty screen
<maco> Any questions?
<maco> <shadeslayer> maco: s/arora/rekonq :P     <-- he's right. the Kubuntu team went through many arguments about default browser
<ClassBot> taves asked: using the KDE4 on ubuntu does it keep all my programs and commands? or do i have 2 im's such as empathy and kopete?
<maco> Yes, you'd have both
<maco> I used Pidgin with Kubuntu for a long while
<ClassBot> sebsebseb asked: Is this one of the last one of these kind of sessions for User Days or Open Week? Since soon things will be mainly about Unity and Gnome Shell when comes to Ubuntu.
<pleia2> Unity and Gnome Shell are just for Gnome :)
<maco> You can pry Plasma out of Kubuntu's cold dead hands :P
<pleia2> KDE and XFCE will still go on as they are, so next time we can do the same session
<pleia2> (with Gnome section expanded to talk about Unity, etc)
<pleia2> So, Xfce and Xubuntu!
<pleia2> Some examples of how Xubuntu with Xfce differs from Ubuntu: it doesn't come with Open Office, instead it comes with lighter-weight "abiword" for word processing and "gnumeric" for spreadsheets.
<pleia2> It does use gdm for the graphical login, and several other gnome things, but even those are discussed each release to see if they are still the best viable option for Xubuntu
<pleia2> The default Xubuntu in Lucid looks like this: http://people.ubuntu.com/~lyz/xfce/xubuntu04.png (maverick didn't change much - but watch out for some exciting changes in natty!)
<pleia2> As mentioned above, Xubuntu uses the XFwm by default for the window manager. It uses Thunar for a basic file manager, as sorta seen here: http://people.ubuntu.com/~lyz/xfce/xubuntu06.png (it's pretty basic though)
<pleia2> The Xfce panels (at the top and bottom in the screenshot) have their own items you can add, but you can also use gnome panel items.
<pleia2> For some more screenshots of the installation and default configuration of Xubuntu you can see: http://people.ubuntu.com/~lyz/xfce/ (these were taken from Lucid, but give you a good idea)
<pleia2> Most of what you'll find app-wise is that Xubuntu takes apps from other DEs, you can even run the gnome and kde services in the background so things launch more quickly even on Xfce
<pleia2> For more, check out http://xubuntu.org/ and http://www.xfce.org/
<pleia2> That pretty much wraps up our prepared presentation, questions?
<ClassBot> shadeslayer asked: How about metioning edubuntu as well? :D they have this cool new feature where you can launch a edubuntu session on the web
<maco> Edubuntu is sort of a hybrid of Ubuntu and Kubuntu for educational purposes
<maco> It's a GNOME desktop with the KDE Education suite added on, and yes, the thing where you can play with it online to try it out is SO COOL
<pleia2> and there is also qimo4kids.com - another educational suite which uses XFCE
<ClassBot> taves asked: so gnome is avail for other *nixs aswell not just ubuntu
<maco> Yep
<pleia2> right
<maco> Ubuntu's is slightly modified, though...for example the notification system started in Ubuntu (though some other distros offer it in their repos now)
<ClassBot> taves asked: whats  canonical?
<maco> Canonical is the company that funds Ubuntu development
<maco> see http://canonical.com
<pleia2> they also control the trademarks
<maco> If you have any questions about Unity, GNOME, and the relationship thereof, hold them for jcastro's session at 0300 UTC please
<maco> Sorry, make that "questions or opinions"
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Command Line Basics - Instructors: imbrandon
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Command Line Q&A - Instructors: pleia2, paultag
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> ok, unfortunately our scheduled instructor is a no-show, but this is a popular session so paultag and I will fill in with a more generic command line Q&A
<pleia2> When we use the command line we are using a shell. In this context a shell is the most basic way a user can interact with a computer's operating system
<pleia2> A shell is a piece of software. A unix type system can have many different shells installed.
<pleia2> by default, Ubuntu uses "bash" for the shell that the user sees (and "dash" for /bin/sh - the shell that the system uses)
<pleia2> For this session we don't need to be concerned with the differences between dash and bash, but be aware that they exist
<pleia2> now we won't have a set agenda, so we're just going to open the floor to questions, so open up a terminal and as away!
<pleia2> s/as/ask
<paultag> anyone? bueller? bueller?
<pleia2> ok, well while we wait for questions I can run through some of the basics I first learned
<paultag> There :)
<ClassBot> paultag asked: Why do we use that scary black terminal thing? What use is it?
<pleia2> Well, the easy answer is that you typically don't have to, these days with Ubuntu there are ways to do many of your common system tasks via the graphical interface
<ClassBot> obengdako asked: without screen and byobu would there be a nicer way of multitasking in shells not including using & and disown
<paultag> Humm, what an interesting question
<pleia2> but it helps when you want to learn more about how your system works, have to do some complicated changes (maybe due to a hardware problem, graphics not working?) or if you need to do debugging (program crashing? launch it from a terminal instead to see if it tells you the problem )
<paultag> the UNIX system was created in the footsteps of the ITS system at MIT. It really was designed to allow processes to stop, pause, and resume without breaking like other systems of the day
<paultag> so you can always stop / start apps, using ctrl + z, fg / ctrl + s / q and so forth
<paultag> but it was designed to be "under" your bash shell, screen and byobu really are unique because they let you buffer bash through that
<paultag> and it lets you really isolate processes in a way that it was not really designed to do, so the short answer is no. If you want to detach, quit, and login elsewhere on the same system, you'll need something like screen
<paultag> or know how to redirect stuff in /proc/ to your shell, but that's not basic!
<ClassBot> vigs asked: could you list a few commands of intermediate level (not too simple like cd etc.) which can be used to easily do tasks that people regularly do ?
<pleia2> this is a good question, and lets us get into the basics a little
<pleia2> so for those of you who never opened a terminal before (or feel hopelessly lost when you do) the "cd etc" in this question include:
<pleia2> ls
<pleia2> when you open a terminal and type "ls" it gives you a directory listing of all your files, by default when you open a terminal this will be in your home directory
<pleia2> to change directories you use "cd" so to go into folder foo/ you "cd foo"
<pleia2> to manipulate files you have commands like move "mv" and copy "cp"
<paultag> (rename is just a move;)
<pleia2> to edit a file you can use the command line editor "nano" so: nano filename
<pleia2> (no need to include .txt in the filename)
<pleia2> now, intermediate commands
<pleia2> there are LOTS of them!
<ClassBot> Ddorda asked: even though you said we should be concerned about it, you mentioned dash, and i know there are more few kinds of shells. can you explain the differences?
<pleia2> paultag: hold up :)
<paultag> Shoot, sorry :)
<pleia2> "history" is a good one, it gives you the full history of commands you've typed
<pleia2> "df" tells you how much space you have in different partitions (try "df -h" for human readable)
<paultag> don't forget stuff like `netstat' and `lsof'
<paultag> those can help you see active connections to files or external sockets :)
<pleia2> "lsmod" is super helpful when debugging hardware problems - it's "ls" (list) plus "mod" which means modules
<pleia2> so it "lists modules" that you have loaded
<pleia2> modules are like drivers in windows
<pleia2> you can also manipulate permissions of files on the command line, using commands like "chmod" "chown" and "chgrp"
<pleia2> a quick google search for "linux commands" will find lots more :)
<paultag> `clicompanion' rocks for this, as well
<paultag> and it was written by a member of the beginners team, so it's aimed for new users!
<pleia2> paultag: ppa?
<paultag> Yeah, I'll grab the repo ID
<paultag> http://okiebuntu.homelinux.com/okwiki/clicompanion <-- that's the howto :)
<paultag> pleia2: mind if I move on to Ddorda's question?
<pleia2> paultag: please do
<pleia2> The author of the Bash Cookbook speaks at the Philadelphia LUG I used to run, he did a presentation on bash vs dash a couple years ago, his slides are here: http://princessleia.com/plug/2008-JP_bash_vs_dash.pdf
<paultag> Each shell has a different feature set -- just like KDE / Fluxbox / GNOME / Unity have their strong points and weak points, so do the shells. Each has a slightly different dialect of the same language
<paultag> shells like zsh have a cult following
<paultag> csh trys to be like C, so scripting will be easier to those with C background ( but it ends up just being confusing )
<paultag> 99% of the time bash does what you need it to do -- but there are those "1%-ers"
<ClassBot> gpc asked: Why isn't the .txt needed?
<paultag> the full filename on the computer includes ".txt" -- unless of course it does not on the machine ;) -- so to edit a file "foo.txt" you need to use `nano foo.txt', and not `nano foo'
<pleia2> +if
<paultag> because to the GNU userland / filesystem / kernel foo.txt is a totally different file then foo, or FOO.txt
<paultag> when in doubt, use tab
<pleia2> Linux doesn't tend to be as strict about extensions as a system like Windows is, so while Windows may complain that a file has no ".txt" on it, it's pretty common in linux
<paultag> +1
<paultag> we use magic numbers at the head of the file
 * pleia2 hasn't used .txt in years :)
<paultag> that's why you see "#!--->" at the top of a script
<paultag> pleia2: me neither ;)
<paultag> 22:25 < mhall119> for more command line fun, run "file foo" and it'll tell you what kind of file "foo" is.
<paultag> Yeah, this. That uses the magic number of a file to "ID" it
<pleia2> great tip :)
<ClassBot> mhall119 asked: Where can I find helpful instructions on how to use all these commands?
<paultag> manual pages!
<pleia2> most commands have "man" pages, so if you wnt to learn more about ls: man ls
<paultag> +1 pleia2 :)
<pleia2> some also have info pages
<pleia2> info ls
<paultag> manual pages are also great for looking at files, as well
<pleia2> and most also have a --help, so: ls --help
<paultag> +1
<ClassBot> txomon asked: the X enviromenth is executed in a shell, how can it execute more than a windows? doesn't it suspend it?
<paultag> Interesting question, txomon
<paultag> tritium: the trick here is using subprocesses
<paultag> so, when you start X, it uses raw library calls to the video subsystem ( through a networked interface ) to draw your windows
<paultag> X it's self is just a server, much like apache2
<paultag> and just like any server, when you connect with a client ( like a web browser for apache ), it handles each client on it's own
<paultag> in that way, when you start an X application, it connects ( like a browser ) to it, and "talks" back and forth
<paultag> and so each process is isolated and talking over a socket :)
<ClassBot> mhall119 asked: Oh No! "ls --help" is too long and scrolls out of view, how can I display it a page at a time?
<pleia2> you can pipe the output to a command "less" or "more"
<pleia2> ls --help | less
<pleia2> that confines it to your terminal, you just hit the space bar to page down, esc to exit
<ClassBot> Ddorda asked: recently i saw someone climbing up in the shell prompt! was it magic?
<pleia2> if you hit the up arrow, you can get to the last command you typed
<pleia2> *super* helpful!
<pleia2> if you hit the up arrow more, it scrolls through your history one line at a time
<ClassBot> txomon asked: When I press cntl+alt+<functionkey> I switch to another shell, is there any difference between that and executing a shell in X enviroment?
<paultag> Not one bit. You won't be able to start X apps by default ( you'll need to start an X server session and export it ), but you have the exact same shell as an X shell
<paultag> but on TTY1, you can run something like `export DISPLAY=":0.0"' to use X apps
<paultag> but no, same commands, same system
<pleia2> 14:35:40 < Ddorda> for ex. if you get a super long answer to "ls", he didn't use |more, but scrolled up
<pleia2> clarification from previous question
<pleia2> most terminals allow you to to hold down shift and hit the "page up" key to read the terminal buffer
<ClassBot> mhall119 asked: what if I want to re-run a command I ran like 50 commands back, I remember the start of it, but not the parameters, do I have to hit 'up' 50 times?
<pleia2> no, there are a couple ways to tackle this
<pleia2> you can search through the history, so if you know your command starts with "ls" you can: history | grep ls
<paultag> !command is usually the most common way ( if it was the last command you ran with that binary )
<paultag> or grepping history, too :)
<pleia2> you'll see a number next to the list it returns, so in mine I see:
<pleia2>   499  info ls
<pleia2> to run that again, I just: !499
<pleia2> there are also fancy ways to search bash history, but they aren't consistant between shells
<pleia2> 14:39:09 < mhall119> paultag: pleia2: with bash, you can also hit ctrl+r and start typing the beginning of the command
<pleia2> 14:39:15 < mhall119> it'll search ~/.bash_history
<pleia2> ^^ a good example :)
<paultag> +1 there
<ClassBot> UndiFineD asked: I always forget how I executed a command in the past, how can i eassily retrieve that ? , I think it was something like: !command
<paultag> 22:39 < UndiFineD> paultag: is it !command:p to show the command before execution ?
<paultag> UndiFineD: yes, thanks :)
<ClassBot> txomon asked: When I want to run a X app, I must start a shell, but if I close it, the app closes. Is there any way to let it work without that shell?
<paultag> Oh yes, this is a good one
<paultag> the trick is when you close a TTY it's like "hanging up" the side of your TTY
<paultag> so, there's a fun binary called "nohup", which takes the SIGHUP call and trashes it
<paultag> so, to run nm-applet in a x terminal and close it, try running it likeL
<paultag> `nohup nm-applet &'
<paultag> it will log output for you as well :)
<paultag> it's really handy and fun to use
<paultag> that or alt+f2
<paultag> then the system'll take care of forking it and pushing it to the background
<ClassBot> vigs asked: When I do a ctrl+r search, it takes me to the last time i used the command. Suppose I want to browse through all the uses of that command, is there a way to do that with Ctrl+r ?
<paultag> I don't think so :(
<paultag> try patching bash! ;)
<paultag> usually tabing would work, but I've not tried it
<paultag> nope, tabbing fails. I have no idea
<ClassBot> LeGambitteur asked: is the command history limited ? If so how to increase it ?
<pleia2> oh
<pleia2> 14:46:54 < mhall119> pleia2: hit ctrl-r again while it's searching and it'll step through anything that matches the current search
<pleia2> there we go :)
<pleia2> the command history is 500 by default
<paultag> 22:46 < mhall119> pleia2: hit ctrl-r again while it's searching and it'll step through anything that matches the current search
<pleia2> to increase it you'll need to edit your .bashrc to add:
<paultag> Oh shoot. Sorry for the double post :)
<pleia2> export HISTSIZE=1000
<pleia2> ^^ makes it 1000 rather than 500
<ClassBot> obengdako asked: nohup is it equivalent to command + & + disown &
<paultag> Wooo, I love this question
<paultag> YES! and it's actually slightly more "clean" since bash is not even sending a HUP signal
<paultag> BUT, that's a "bashism"
<paultag> it's not present as a binary in the system, or some sort of global flag, so know that that command will only work for bash
<paultag> I'm not sure about dash, but the shell I wrote did not have disown, so I had to use nohup ( and it works globally )
<paultag> so if you are writing for others, use nohup. If you're just playing around, disown is great
<paultag> obengdako: is that good?
<paultag> or were you looking for something else?
<ClassBot> UndiFineD asked: how to log compilation into one file ?
<ClassBot> UndiFineD asked: how to log compilation into one file ? >1&2 or something
<ClassBot> There are 10 minutes remaining in the current session.
<paultag> usually it's 2>&1
<paultag> and that takes stderr and pipes it to stdout, so that you can dump both together
<paultag> it's handy for logging errors as well as messages from the application in question
<paultag> foo > bar # will push stdout into a file
<paultag> I'm not totally clear on the question, pleia2 ?
<pleia2> that's good :)
<paultag> cool :)
<ClassBot> There are 5 minutes remaining in the current session.
<paultag> 5 minutes, take your best shot, guys!
<ClassBot> txomon asked: Is there any good guide to learn to use shell?
<paultag> tons. The best way is to use it to do casual stuff ( browsing the filesystem, renaming files, and so forth ), but again, the `clicompanion' app is fantastic for this
<paultag> it can help teach the basics. Once you have that, a bash scripting guide actually helps day-to-day bash a lot
<paultag> and keep in mind that once you're past the basics, you're learning the shell and not the GNU/Linux userland so much :)
<pleia2> http://tldp.org/LDP/abs/html/ is great (don't be scared off by "advanced"
<paultag> (stuff like disown)
<paultag> +1 pleia2
<paultag> I learned from that page, and I love it
<paultag> 22:58 < _marx_> learning the bash shell oreilly book
<paultag> not bad either, a great book for sure
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Asking questions on Launchpad and Reporting bugs on Launchpad - Instructors: charlie-tca
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<charlie-tca> I'm Charlie Kravetz, known as charlie-tca on irc and the mailing lists. I am Xubuntu Quality Assurance Lead, a member of ubuntu-bugsquad, bug-control, and a bugsquad mentor.
<charlie-tca> I test the latest development images, and am using Xubuntu Natty Narwhal on my daily machine. This gives me considerable experience in testing, filing bugs, and helping others with bugs.
<charlie-tca> I am also one the bug triagers that checks the bug reports to make sure there is enough information for the developer to begin working to resolve your issues.
<charlie-tca> I am going to talk about Asking Questions on Launchpad and Filing Bugs on Launchpad.
<charlie-tca> Please keep questions to #ubuntu-classroom-chat. Please make sure you keep them prefaced with "QUESTION: " so people can see them. If I am going to answer you question during my session, I will skip over it or save it for later. Please don't feel ignored.
<charlie-tca> Launchpad is a collaboration and hosting platform for software projects.
<charlie-tca> It brings communities together by making it easy to share code, bug reports, translations and ideas across projects.
<charlie-tca> Before you can ask a question or report a bug, you must sign up for Launchpad.
<charlie-tca> Signing up for Launchpad is easy. If you have never registered in launchpad, there is an excellent help guide to get you started at https://help.launchpad.net/YourAccount
<charlie-tca> In my experience, this is a very well written guide to registering and getting started with Launchpad. Why do you want to register?
<charlie-tca> It gives you easy access to all the great things offered by Launchpad! One of those great Launchpad offerings is called Launchpad Answers.
<charlie-tca> While mailing lists, web forums, and IRC are great places to find help with free software they do have a couple of shortcomings:
<charlie-tca> (a) There's no way to track the progress of a question and
<charlie-tca> (b) knowledge about the software is spread across different places.
<charlie-tca> An alternative solution to that is Launchpad Answers. Launchpad Answers is a place that keeps track of questions, the comments on those questions, and the answers to those questions.
<charlie-tca> It notifies volunteer support contacts of new questions, builds a searchable knowledge base of good answers, and allows people to ask questions and offer support in different languages.
<charlie-tca> Using Launchpad Answers is easy, just visit the Answers page at https://answers.launchpad.net/ubuntu.
<charlie-tca> heh, yes, it does seem strange to go to something called "answers" to ask a question.
<charlie-tca> If you are not logged into launchpad, you will be asked to login before you can ask a question. Since you already registered, just click the login link at the top and sign in.
<charlie-tca> Now, if you are not in a hurry, it is a good idea to browse the link called "All FAQs". This is a listing of the "Frequently Asked Questions".
<charlie-tca> Many times, I find there are questions and answers in the FAQ that have been bothering me, but were not important enough for me to ask.
<charlie-tca> Don't get lost in the FAQs, though. Your own question is important. You can always come back to this and browse through the list.
<charlie-tca> You do not need to look to see if your question is already asked, since one of the great features in Launchpad is that it will look for your question.
<charlie-tca> You will also see on the right side, a link called "My questions". After you have asked a question, you can click this link to see the questions you have asked, and any comments or answers.
<charlie-tca> This makes it easier to find your own questions later, instead of trying to remember what the question was, or the link to it that you forgot to write down.
<charlie-tca> You only need the one link to find it later, the same link you used and bookmarked to ask the question - https://answers.launchpad.net/ubuntu
<charlie-tca> You will also see a list called "Answer contacts for Ubuntu". These are some of the people who have volunteered to answer questions.
<charlie-tca> They are notified by automatic email of questions asked, and will do their best to answer questions they know the answer to.
<charlie-tca> Now, click on the "Ask a Question" link in the right top of the page. Next, type good summary to your question, making sure that the question is entered clearly.
<charlie-tca> "Please help me!" or "I need help" is not a good question. A good summary tells what your problem is, in as few words as you can use.
<charlie-tca> A good summary would be "How to replace a hard drive without losing the boot loader" or "How do I back-up my data on my hard drive to my cd drive?"
<charlie-tca> Of course, a summary that is more than one or two lines is much too long to be useful. Put that extra information in the description instead.
<charlie-tca> Click on next, and Launchpad will now search for existing questions that look similar. Don't you just hate those places that ask you to search before you ask?
<charlie-tca> Launchpad Answers took care of that for you. If it finds anything that loos like your question, it will show you them.
<charlie-tca> If Launchpad doesn't find any similar questions, or those it finds are unhelpful to you, you can write a more detailed description of your problem and submit your question.
<charlie-tca> Once you've added your question, Launchpad emails anyone who's volunteered to be an answer contact for your language.
<charlie-tca> They can then ask you for more information or offer an answer. Launchpad will then email you whenever your question changes, such as when someone suggests an answer.
<charlie-tca> If someone does ask for more information, please be polite in answering. Not everyone is as well versed in your language as you, and may not understand the way the question was worded.
<charlie-tca> When adding information, it is usually good to add it as a comment, rather than expand the original description. Many of us do not realize the description was modified, and miss the added material.
<charlie-tca> When adding information, it is usually good to add it as a comment, rather than expand the original description. Many of us do not realize the description was modified, and miss the added material.
<charlie-tca> <txomon> QUESTION: Is there any type of connection between the forum and the IRC channel? a question might be answered in the chat, and no one would be able to see it later--
<charlie-tca> No, to the best of my knowledge, there is no connection. The log files would have to be transcribed to the format used in the forums
<charlie-tca> and, yes, we do answer the answer quite often sometimes on IRC.
<charlie-tca> the good news is... Most of us realize that there is no "search" for the question and will answer it each time.
<charlie-tca> Thats about it for LP answers. Are there any other questions?
<charlie-tca> Okay, so lets move on to bug reporting now. Ubuntu, as you may already know, uses Launchpad for reporting bugs.
<charlie-tca> Launchpad is a very good bug tracker. We'll be covering how to make your bug report more complete and therefore more likely to get fixed!
<charlie-tca> Very often we see bug reports with incomplete information, which means more time is spent getting the actual information. If you give proper information, its easy for us triagers to confirm the bug so the developers can look into it.
<ClassBot> txomon asked: Years ago, I submited a bug and I had no response (wifi hw problem), I tried with the latest driver months ago, and replyed the 1st bug I created... Is there any way to make it be reviewed?
<charlie-tca> That is a great question! and right on time, too. Thanks, txomon
<charlie-tca> As bug triagers, we do attempt to get the bugs reported ready for the developers to step up and work them. We use the status of the bug to let us know what is happening
<charlie-tca> when we ask questions.
<charlie-tca> The triager asked you for more information. You supplied some of it, but never responded to his second request for trying the mainline kernel.
<charlie-tca> Since he did not have all the information, he never completed getting the bug ready.
<charlie-tca> Also, I see you moved status to confirmed. Let's examine the bug status down the road a bit.
<charlie-tca> Even though you can report bugs directly to Launchpad, we suggest that you don't you do that.
<charlie-tca> In fact, most of the time, the appropriate information is never really attached or given when you report directly.
<charlie-tca> When you are ready to file a bug report, and need some help with it, please see https://help.ubuntu.com/community/ReportingBugs
<charlie-tca> If an application crashes, and you're using a version of Ubuntu which is actively under development, Apport will start automatically, raising an appropriate bug report for you to complete in Launchpad. This provides developers with rich debugging information that will make it easier to fix the problem.
<charlie-tca> For more information about apport, see https://wiki.ubuntu.com/Apport
<charlie-tca> Most of the time, to file your bug report that is not a crash, you will use a small command line program called "ubuntu-bug". Don't let the words "command line" scare you, please. It is not going to be all typing without the graphics.
<charlie-tca> Let's say that nautilus is giving you trouble. To report a bug about nautilus, you simply hit Alt+F2, and type "ubuntu-bug nautilus" without those quotes, and click on "Run".
<charlie-tca> The format is "ubuntu-bug <package-name>", making it important that you try to have the package correct.
<charlie-tca> Many times, the package will be the application that just gave you the problems. You can click on Help -> About  to get the name.
<charlie-tca> To know more about finding the right package, please see https://wiki.ubuntu.com/Bugs/FindRightPackage
<charlie-tca> To file a bug against a program that is currently running, go to System > Administration > System Monitor, and find the ID of the process.
<charlie-tca> Then type the process ID instead of the <package-name> into the Alt+F2 window.
<charlie-tca> Having done that, wait. It is gathering the information about the application that is needed for your bug report. You should get a window titled "Apport".
<charlie-tca> When all the information is gathered, you will see a question "Send problem report to the developers?" Please click on "Send Report".
<charlie-tca> This opens a window in your web browser or firefox. You will be asked questions now. You may have to type in a summary. Please make this as short but descriptive as possible.
<charlie-tca> This is the bug report title, so "crashed" is not a good summary. "Crashed when I opened 1000 files" is good. "Frozen for 10 minutes when I opened 1000 files at once" is better.
<charlie-tca> You will also be given a list of similar bugs to compare your bug to. If it doesn't match any, or is a bug report about the audio, linux, or graphics, please check "file a new report".
<charlie-tca> You are also give a large window called description or "Further Information".
<charlie-tca> "I don't know, I was away when this crash happens" is an accurate description, but not helpful.
<charlie-tca> When you submit a bug report, it's important to specify three things:
<charlie-tca> (1) What you expected to happen
<charlie-tca> (2) What actually happened
<charlie-tca> (3) The minimal series of steps necessary to make it happen, where step 1 is "I clicked on ???".
<charlie-tca> I personally look at over 1000 bugs a month. I don't know all the programs, and I don't use most of them.
<charlie-tca> I like to add when asking a reporter to do this, "please tell me how to do this if I have never used this program or application".
<charlie-tca> If I have a good step by step procedure, I will do everything I can to reproduce the issue, so we can tell the developer what they need to fix the issue.
<charlie-tca> Fill in the description field with as much information as you can, including the release of Ubuntu you are using.
<charlie-tca> It is better to have too much information in the description than not enough.
<charlie-tca> <txomon> QUESTION: the url you previously submited the HowTo report a bug, Is good for reporting a bug from the packages, but it doesn't say anything about kernel (just to submit a new one) Is there any other that refers to this specific?
<charlie-tca> Thanks for asking!
<charlie-tca> we try to confuse the reporter with the kernel bugs. There is no package labeled "kernel".
<charlie-tca> In Ubuntu, the kernel, which is what everything else requires to work, is called "linux"
<charlie-tca> Therefore, any bug against the kernel, gets the package     linux     asigned to it.
<charlie-tca> txomon: Does that answer the question?
<charlie-tca> <UndiFineD> QUESTION: I get APPORT maximum errors reported
<charlie-tca> Another very good question!
<charlie-tca> This is harder to answer. It usually happens when you get too many crashes without reporting the bugs.
<charlie-tca> sometimes, it means whatever is crashing is crashing over and over.
<charlie-tca> There are two ways to fix this one. The quick and easy one is to remove the .crash reports from /var/crash
<charlie-tca> Unfortunately, that doesn't help us get anything fixed.
<charlie-tca> instead, open your terminal, go to /var/crash, and use
<charlie-tca> ubuntu-bug -c <location of apport file> to file the bug
<charlie-tca> In Nautilus, you can also double-click the file to file the report.
<charlie-tca> and that happens to be the same command you can use to file a bug if your system is offline when it crashes
<ClassBot> There are 10 minutes remaining in the current session.
<charlie-tca> Only describe a single problem per bug report so that each can be followed up on in detail. If you experience several issues file separate reports.
<charlie-tca> Add supporting attachments to explain or help others reproduce your bug. This might include a screenshot or video capture of the problem or a sample document that triggers the fault.
<charlie-tca> To add an attachment to the bug use the "Include an attachment" section of the bug form.
<charlie-tca> Additional attachments, if necessary, can be added after the bug is reported via "Add a comment/attachment" at the bottom of the page, after the report is filed.
<charlie-tca> If for some reason you cannot file a bug through the Apport tool you can file one via Launchpad. When doing so please ensure that you have determined which package it should be filed against.
<charlie-tca> Please read the "Finding the right package" link, https://wiki.ubuntu.com/Bugs/FindRightPackage.
<charlie-tca> To report a bug when you don't know the package name https://bugs.launchpad.net/ubuntu/+filebug/?no-redirect - please use this as the last instance. If you need help with filing a bug, do drop by at #ubuntu-bugs. We'd be happy to help.
<charlie-tca> You should be aware, if you do file the bug directly, we are going to ask you a lot of questions, and have you attach several files to the bug report in most cases.
<charlie-tca> Please subscribe to the bug you file. Any changes or added comments will then be sent to you by email. This keeps you informed of the need for more information or even when the bug gets fixed.
<charlie-tca> If a request for more information goes without a response for 60 days, most of the time, the bug will expire, and the developers will not look at it again.
<charlie-tca> Okay, let's hit status quickly
<ClassBot> There are 5 minutes remaining in the current session.
<charlie-tca> Most bugs will start out in "New" status. It remains there until the triager gets to it, or someone else experiences the bug.
<charlie-tca> The triager will change the status to confirmed if all the information is complete.
<charlie-tca> Please do not set your own bugs to confirmed. It tends to confuse us and we don't come back to them.
<charlie-tca> If you added information to the bug, please set it back to New. That triggers us to look more
<charlie-tca> We will move the bug to triaged to tell the developer we think it is complete.
<charlie-tca> If you need further help with filing a bug, or have questions about the bug you filed, please ask in #ubuntu-bugs, and we will do our best to help you.
<charlie-tca> Any other questions?
#ubuntu-classroom 2011-01-30
<charlie-tca> Thank you all for attending today's sessions. I hope you find them as interesting and helpful as we enjoy doing them.
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Switching from Windows - Instructors: cprofitt
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<cprofitt> hello all
<cprofitt> We are going to discuss - Switching to Ubuntu
<cprofitt> There are really two 'ways' of doing this...
<cprofitt> 1)  Leave your former OS and use only Ubuntu
<cprofitt> 2) gradually changing from your other OS to Ubuntu
<cprofitt> I am going to make the assumption that most would want to take option 2 as the first one can be fairly frightening
<cprofitt> in both cases the first step would be to back up your data... your data can not be re-installed like an OS can
<cprofitt> so make sure you have that backed up.
<cprofitt> if you are running Windows 7 you can actually backup your data and your OS (in case you want to go back)
<cprofitt> in other cases you can simple copy your data files over to an external storage device; hard drive or usb memory stick
<cprofitt> any question yet at this point?
<cprofitt> ok... moving on
<cprofitt> once you have your backup complete you will want to decide -- full Linux, dual environment or virtual environment
<cprofitt> both of the later two allow you to use both operating systems
<cprofitt> a virtual environment will allow you to use both at the same time
<cprofitt> this is the method many of us choose when we have applications that can not be replaced that run only in Windows
<cprofitt> I want to stress that such applications are rare for home users, but they do exist... or in some cases you may prefer a Windows application to its alternatives
<cprofitt> the only applications that can not run in a virtual environment are most Windows games (they require 3d acceleration) and some multimedia applications that also make use of direct3D functionality like Movie Maker
<cprofitt> good examples of software that can be used inside a virtual environment are Active Directory management tools, VMWare Management tools, tax software and numerous others
<cprofitt> If you need applications that require hardware 3d acceleration you will want a dual boot solution and not a virtual solution
<cprofitt> A one hour block is too small to go in to the complete details
<cprofitt> but here is a link to a set of instructions for dual booting
<cprofitt> https://help.ubuntu.com/community/WindowsDualBoot
<cprofitt> you can also ask for assistance in #ubuntu-beginners
<cprofitt> here is another wiki page about dual booting
<cprofitt> https://wiki.ubuntu.com/DualBootMigration
<cprofitt> the one recommendation I do have is that if you have Windows 7 or Vista that you should use the built-in partition editor (Windows) to resize your Windows partition
<cprofitt> there is a lower chance of an issue
<cprofitt> The best write up I have seen for using Windows to resize your partition is here
<cprofitt> http://www.howtogeek.com/howto/windows-vista/resize-a-partition-for-free-in-windows-vista/
<cprofitt> Another option is to use that does not require a repartion is using Wubi
<cprofitt> instructions for this can be found here
<cprofitt> https://wiki.ubuntu.com/WubiGuide
<cprofitt> Wubi actually loads inside of Windows and takes care of installing Ubuntu
<cprofitt> for virtualization you have two options
<cprofitt> run Ubuntu as a guest on Windows
<cprofitt> or run Windows as a guest on Ubuntu
<cprofitt> personally, as a Microsoft Systems Administrator by day, I prefer to run Windows as my guest
<cprofitt> Ubuntu takes less memory and I feel much more secure being able to control my firewall with Linux than the other way around
<cprofitt> in both cases I would recommend using VirtualBox
<cprofitt> Mostly because VirtualBox is cross platform
<cprofitt> http://www.virtualbox.org/
<cprofitt> regardless of how you choose to take that first step... your next step will be trying to be 'productive' in your new OS environment
<cprofitt> one of the sites that helped me evaluate 'alternative' applications was Linux App Finder
<cprofitt> http://linuxappfinder.com/alternatives
<cprofitt> if you were using FOSS apps on Windows you will likely be able to just install the same applications on Ubuntu, but if you were in the jail cell with the proprietary apps you will find the site very useful
<cprofitt> the site has multiple applications for each proprietary application and when you click on the app you are presented with a page that gives you a description, a rating (if it has been rated), a link to the app's website and if the application is in the repositories
<cprofitt> repositories...
<cprofitt> wondering what they are?
<cprofitt> repositories are what inspired Apple to build the 'app store'
<cprofitt> repositories contain multiple applications that are able to be installed on your computer without fear of getting a trojan or malware
<cprofitt> In Ubuntu in is called the Ubuntu SOftware Center
<cprofitt> which is also a great place to just browse for applications
<cprofitt> maybe even find some great ones that you would not have known about
<cprofitt> the best part... no expense to try them
<cprofitt> palhmbs> QUESTION: Is it better to start with an older Ubuntu version if my machine is low spec?
<cprofitt> palhmbs: I would say no. If you machine is too low spec to run the full Ubuntu I would try a up-to-date version of one of the low spec alternatives
<cprofitt> lubuntu, xubuntu or even use the alternative installer and carefully choose the components you want
<cprofitt> if your version is too far back it will not be official supported...
<cprofitt> updates, etc...
<cprofitt> LTS versions, on the desktop, are supported for two years
<cprofitt> it will all depend on what you want to do and how 'low' your computer specs really are
<cprofitt> if you have a low spec machine and want to learn a lot about Ubuntu I would recommend the alternate installer
<cprofitt> once you have installed Ubuntu you will certainly run in to issues...
<cprofitt> do not let those bumps get you down... all OSes have bumps
<cprofitt> in fact problems with Ubuntu are what made me discover the best part about Ubuntu
<cprofitt> the community... and the depth of support and the willingness of that community to help me
<cprofitt> there was never any RTFM or insults about how foolish my questions were
<cprofitt> the support also does not cost you $300 per incident like Microsoft suport does
<cprofitt> with Ubuntu you have the following places for support
<cprofitt> http://askubuntu.com/
<cprofitt> http://ubuntuforums.org/
<cprofitt> https://help.ubuntu.com/
<cprofitt> https://help.ubuntu.com/community/
<cprofitt> https://wiki.ubuntu.com/
<cprofitt> AskUbuntu is realtively new, but it has the great feature of having the 'best' answer (voted on by those using AskUbuntu) at the top right underneath the question
<cprofitt> The forums have fantastic tutorials
<cprofitt> http://ubuntuforums.org/forumdisplay.php?f=100
<cprofitt> and a forum area just for beginners who are making the transition like you
<cprofitt> http://ubuntuforums.org/forumdisplay.php?f=326
<cprofitt> if you are a programmer there is an area for you as well
<cprofitt> http://ubuntuforums.org/forumdisplay.php?f=39
<cprofitt> I will not link the rest, but you have areas for Apple users, networking, multimedia, security, server platforms...
<cprofitt> the forums are a truly excellent source of information
<cprofitt> and getting to know your fellow Ubuntu users
<cprofitt> if you want live support you can seek people out on IRC
<cprofitt> just like you might be right now
<cprofitt> You can also see if there is an active Local Community Team in your area
<cprofitt> https://wiki.ubuntu.com/LoCoTeams
<cprofitt> Local teams may even run 'install fests' in your area to assist with the installation of your Ubuntu system
<cprofitt> a great place to find out about activities going on with your LoCo is the LoCo Team Directory
<cprofitt> http://loco.ubuntu.com/
<cprofitt> just select your continent and then your specific loco
<cprofitt> you will then have a list of activities
<cprofitt> you can take a look at my loco for an example
<cprofitt> http://loco.ubuntu.com/teams/ubuntu-newyork
<cprofitt> If there is no active Loco you could also seek out a Linux User Group
<cprofitt> I do want to ensure that you are aware that if you seek help on the forums or in IRC that you may not get instant answers
<cprofitt> in IRC channels many people 'idle' so they can see questions even when they are away
<cprofitt> if you can afford to stay in the channel and wait they will reply when they are 'back' and active in the channel
<cprofitt> for the new Ubuntu user that is unfamiliar this can be a bit 'frustrating' at times...
<cprofitt> but trust me it is much better than going through the automated attendant phone systems you fave with proprietary vendors
<cprofitt> in general you need to plan on making a real committment to learning the new OS, the new apps and getting past some of the learning hurdles
<cprofitt> I promise you it will be worth it in the end
<cprofitt> I have been able to replace every application I used in Windows for personal use
<cprofitt> and only use Windows in a VirtualBox session at work because I manage a 7200 user Microsoft environment
<cprofitt> there have been some questions about system specs...
<cprofitt> I would say that if you were able to run WindwsXP SP 3, Vista or 7
<cprofitt> you will be able to run Ubuntu
<cprofitt> if your machine struggled to run XP SP3 and was stuck on SP2 or prior you will have to look at some of the low sys requirement alternatives
<cprofitt> any questions as we near the hour?
<cprofitt> if not I want to just let you know about Ubuntu One....
<ClassBot> There are 10 minutes remaining in the current session.
<cprofitt> Ubuntu one is built in to Ubuntu and it allows you to synchronize your files to the 'cloud'
<cprofitt> and it can keep them in sync with multiple computers or allow them to be shared with others
<cprofitt> http://www.ubuntu.com/desktop/features#one
<cprofitt> I would like to welcome any potential new Ubuntu users to come and ask the Ubuntu Beginners Team questions as well
<cprofitt> we are in #ubuntu-beginners (for questions) and #ubuntu-beginners-team (get to know us)
<cprofitt> we can also help you when you are ready to 'give back' to the community when you are ready
<cprofitt> oops... double the when you are ready part :-)
<cprofitt> I also, to setup the next session, want to tell you that Ubuntu is not difficult
<cprofitt> each of my children started using Ubuntu at the age of three...
<cprofitt> and each never got frustrated except when our ISP was down and they could not get to the Internet
<cprofitt> they LOVE Ubuntu
<cprofitt> and I think you will as well!!
<ClassBot> There are 5 minutes remaining in the current session.
<cprofitt> One last recommendation -- make sure you attend classroom sessions like this...
<cprofitt> and learn how to use IRC... as it is a great communication tool for getting help and meeting fellow Ubuntu users
<cprofitt> Thanks everyone...
<cprofitt> I hope the session helped you as your progress with transitioning from Windows to Ubuntu.
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Entertaining and educating kids using Ubuntu - Instructors: MichelleQ
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html following the conclusion of the session.
 * MichelleQ steps to mic
<MichelleQ> Hi y'all
<mhall119> hello
<MichelleQ> I'm MichelleQ, and mhall119 happens to be my husband and star assistant.  We're the founders of Qimo, the desktop for kids.  :-)
<MichelleQ> And I'd like to take a few to talk about entertaining kids using linux, and perhaps educating them while we're doing so.
<MichelleQ> There are multiple distributions available for kids, ranging from Edubuntu - which focuses more on classrooms, and Qimo - for young kids, to things like the Miley Cyrus distro, to Fluffy, which is lovely shades of pink.
<MichelleQ> There are lots of options for kids.
<MichelleQ> Let me address the first issue of safety, before we talk about *how* to entertain kids.
<MichelleQ> Safety is the first and foremost requirement of a distro for kids.   Qimo is made to be stand-alone, without internet access, but there are all sorts of options for filtering.
<MichelleQ> Dan's Guardian is perhaps the most well known.   It is a good content filter, but does require a significant amount of tinkering to set it up.
<mhall119> http://dansguardian.org/
<MichelleQ> SquidGuard is similar to Dan's Guardian.
<mhall119> http://www.squidguard.org/
<MichelleQ> OpenDNS filters DNS servers, to keep kids from visiting a website they shouldn't.
<mhall119> both squidguard and dansguardian use an HTTP proxy that filters websites
<MichelleQ> And then we've found KidZui, which, though it is a subscription service, is an exceptionally good internet-browser for children.
<mhall119> OpenDNS has special DNS servers that will block blacklisted pages
<MichelleQ> We have installed KidZui for both of our children.
<mhall119> http://www.kidzui.com/
<MichelleQ> KidZui has worked with us in the past, as well, giving subscriptions to kids who receive Qimo computers from our charity.
<MichelleQ> Edubuntu has a feature called GnomeNanny, which does things like set time limits on the computer.
<MichelleQ> Any questions on the nitty-gritty before I move onto exploding pink ponies?
<mhall119> http://projects.gnome.org/nanny/
<MichelleQ> OK, so, how the heck do we actually entertain kids on Linux?
<MichelleQ> There are, of course, a whole swath of games that are well known, but there are others that deserve recognition.
<MichelleQ> I'm going to start at the top, and work my way down, just to give an overview and age range of games.
<MichelleQ> I'd like to start with gCompris, which I am overly fond of.
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/gcompris
<MichelleQ> It's a suite of games, targeting kids 3 to about 12, and while on the surface looks like it may be very elementary, it scales up with kids quite well.
<MichelleQ> Games range in difficulty from basic, gross-motor, mouse skill games, to the intricacies of electrical engineering.
<MichelleQ> There are multiple layers of games within the gCompris navigation system, and then, there are multiple layers of difficulty in on top of those.
<MichelleQ> The electrical engineering game, for instance, teaches kids about circutry, switches, etc.
<MichelleQ> It's quite astounding to come into a room to find your four year old figuring out how to wire switches, batteries, and light bulbs together to turn the bulbs on.
<mhall119> it's actually built on top of GnuCAP, a circuit analysis library
<mhall119> so all the voltages and everything are correct
<MichelleQ> The second suite, of which I am quite fond, is Child's Play.  It has multiple memory-building games, but it also has a nifty pac-man style game that encourages beginning spellers.
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/childsplay
<MichelleQ> The games are all positive-reinforcement games, meaning that a child can't lose, per se.  It's exceptionally good for the younger set.
<MichelleQ> Tux Paint, I'm sure, we're all familiar with, but did you know that you can add both stamps, and coloring pages, into the program?
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/tuxpaint
<MichelleQ> We've added stamps of our kids' heads, which they find rather amusing.
<MichelleQ> Qimo also comes with Qimo and Ila coloring pages.
<MichelleQ> Tux Type and Tux Math are asteroids-style games.
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/tuxtype and https://wiki.ubuntu.com/Edubuntu/AppGuides/tuxmath
<MichelleQ> Type encourages emerging keyboarding skills, and Math helps build up math skills, from addition and number recognition, to division.
<MichelleQ> There are three very excellent space/exploration applications.
<MichelleQ> Stellarium is a star-observation tool - kids can explore the night sky.
<mhall119> http://www.stellarium.org/
<MichelleQ> they can learn about the planets in the solar system, etc.
<MichelleQ> Stellarium will be replacing KStars in Edubuntu in 11.04
<MichelleQ> Celestia allows children to explore a simulated universe.
<mhall119> BTW, all the games we've talked about so far are in the Ubuntu repositories
<mhall119> http://www.shatters.net/celestia/
<MichelleQ> And Marble is a 3-D geography application.  Allows children to explore Earth, learn about its geography
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/marble
<MichelleQ> Ri-li is a wooden train game, for those of you with kids obsessed, like mine, with all things train.
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/ri-li
<MichelleQ> The purpose of the game is to clear the track for the train to run on, but it is interspersed with quizzes about things like human rights.
<MichelleQ> Laby and KTurtle are both basic programming games.  Laby allows kids to learn rudimentary python, C, or Java, and Kturtle has a self-defined programming language.
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/laby
<MichelleQ> The goal of both is to code a series of instructions for a little character on screen.
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/kturtle
<MichelleQ> Laby has little mazes from which you have to rescue an ant.  KTurtle just allows a child to expore making a character move through programming instructions.
<mhall119> we got our son started on Laby when he was 5, after about 20 minutes explaining the python commands, he finished the first 2 mazes by himself
<MichelleQ> There is also Alice, which is a 3D game designed for girls.  Like Laby, and KTurtle, the purpose is to program in a series of instructions, but in Alice, the goal is to make the figure skater dance.  the intention is to get little girls interested in programming by giving them a character they can relate to.
<MichelleQ> Additionally, there is Scratch, also a rudimentary programming game.  Quite expansive.
<mhall119> http://scratch.mit.edu/
<MichelleQ> Pink Ponies is a tron-esque racing game
<ClassBot> sebsebseb asked: What games would you recommend for a 9 year old, for example?
<MichelleQ> Definitely any of the programming games, Tux Math or Type, and things like Tux Racer, which we'll cover in a few minutes.
<mhall119> also gcompris, which still has enough challenging and entertaining games for a 9 year old
<MichelleQ> Pink Ponies is quite mindless fun, the goal is to keep your pony from crossing the path of another pony.  If you don't, your pony explodes into a ball of glitter.
<MichelleQ> very, very young-girl appealing.
<MichelleQ> KTuberling is a delight.  Think Mr. Potato Head meets the computer.
<mhall119> https://wiki.ubuntu.com/Edubuntu/AppGuides/ktuberling
<MichelleQ> You can configure your potato into all sorts of fashions, place him in different environments, etc.  Little ones love it, because they love to make the potato's face look silly.
<MichelleQ> TuxRacer is really quite fun.  The goal is to race your penguin through a course, and go as fast as you can, collecting as many fish as you can, without flinging your penguin into a ravine.
<mhall119> it can be quite difficult too, and addictive
<MichelleQ> then there is Bouncy The Hungry Rabbit
<MichelleQ> it's a little game that requires problem-solving skills.  The goal is to keep your rabbit happy and fed, by stealing the farmer's crops, without getting caught by the farmer.
<MichelleQ> It's Beatrix Potter meets Linux.
<ClassBot> himuraken asked: Is there a way to time restrict each game?
<mhall119> not each game, no
<mhall119> but there are some session timers out there that will boot the user back to the login screen after a set time
<ClassBot> sebsebseb asked: Ever played Hannah's Horse?  Like Pacman for those that don't know and in the repos :) and aimed at kids.
<MichelleQ> I haven't ever seen Hannah's Horse, but it is definitely one I will look into - sounds right up my daughter's alley
<MichelleQ> Finally, I wanted to mention both SuperTux, and SuperTuxRacer.
<MichelleQ> Think Mario, with penguins.
<mhall119> Mario Kart that is
<mhall119> for SuperTuxRacer
<mhall119> 20:34 < hajour> i would say something about the games .it would be nice if there could be  choose from language you want it.my youngest have trouble with english wile  Netherlands is here native language.
<mhall119> hajour: many of the games are translated, some will use the system's language settings, while others ignore than and provide their own way of switching
<mhall119> some are translated upstream, others use Launchpad
<mhall119> if you find one without support for a language you want, the best thing to do is file a bug against it in Launchpad, and the game's maintainers will forward it on to where it can be fixed
<MichelleQ> I'm runnign way short tonight, so if you have any questions, please don't hesitate to ask
<MichelleQ> There are tons of other entertainment options out there - but these handful are things that we use regularly with our children.
<mhall119> There's a pretty complete list of the games in both Edubuntu and Qimo here: https://wiki.ubuntu.com/Edubuntu/AppGuide
<MichelleQ> And let's be honest, here, we've found ourselves spending a little too much time playing Pink Ponies.
<mhall119> each page has a section for user feedback too, so if you use any of them please leave a little message
<ClassBot> himuraken asked: Qimo is built on Ubuntu. What version of Ubuntu is it currently based on?
<mhall119> Qimo 2.0 is based off Ubuntu 10.04
<mhall119> you can also apt-get install qimo-session in 10.04 or 10.10
<mhall119> we're planning a 3rd release to coincide with Ubuntu 11.04
<MichelleQ> Both Qimo and Edubuntu can be added ontop of an already existing Ubuntu install
<ClassBot> sebsebseb asked: What do you think of Tuxpaint? I love that app especially with the extra stamps.
<MichelleQ> Tuxpaint is brilliant, on so many different levels.
<MichelleQ> It's very, very intuitive for kids to follow, particularly little ones without reading skills.
<mhall119> sebsebseb: while making the installer slideshow for Qimo 2, I asked out son what he liked best about tuxpaint, he said "Everything is fun in tuxpaint"
<mhall119> and that's pretty much the truth
<MichelleQ> We love being able to add in our own coloring pages, too.  The kids love being able to color Qimo into bright red clothing.
<mhall119> tuxpaint probably has the broadest appeal in terms of age, we've seen 2 year olds up to 16 year olds playing with it
<MichelleQ> Heck, we've spent more than a little time playing with it ourselves.
<mhall119> 20:41 < hajour> are there spoken guidings in the games?3 of my 4 children got dyslectic
<mhall119> hajour: I don't think so
<MichelleQ> hajour: not that I'm aware of.
<mhall119> I've been trying to get Orca working so I can test it against some of our games
<mhall119> but alas, I've had no luck with Orca
<MichelleQ> gpc: definitely booth the children out of the house and off the computer.  We stress that it's not a babysitting service.
<mhall119> a lot of what is in gCompris and childsplay doesn't require reading though, ours started using them before they could read
<ClassBot> himuraken asked: One of my children just turned 3, is it likely too advanced for him?
<MichelleQ> himuraken: definitely not.  mhall119's looking for something, can't remember the name of it.  It was a simple mouse-movement game.
<MichelleQ> Gamine.
<MichelleQ> that's it.
<MichelleQ> It responds positively to *any* input.
<mhall119> it's nothing but direct feedback from using the mouse
<MichelleQ> there are very basic games in gCompris, too, that work well for a 3yo.
<mhall119> himuraken: gcompris has a section of games specifically for that age range
<mhall119> it'll teach them how to use the mouse and keyboard properly
<ClassBot> sebsebseb asked: There's a artwork gallery on the Tuxpaint site of  users submitted art work, is any of your kids in there? Probably not.
<MichelleQ> No, not our kids personally.
<MichelleQ> We've actually discussed setting up an artwork gallery for Qimo on the website, though.
<mhall119> sebsebseb: I just found http://www.tuxpaint.org/gallery/
<ClassBot> himuraken asked: Can you give a brief history of the project?
<MichelleQ> A brief history of Qimo?  Sure.  It started off as a simple adjustment to a desktop for my autistic son.
<MichelleQ> And we realized that our daughter loved it, too, and so we shared the adjustment with some friends, and the mhall119 suggested we actually do it right, and make it it's own distribution.
<mhall119> mind you, I had no idea how to make it it's own distro when I suggested that
<MichelleQ> My brother-in-law is a graphics artist who kindly donated his talents for the art.
<MichelleQ> and away we went.
<ClassBot> gpc asked: How old is Qimo?
<MichelleQ> two and a half years now
<mhall119> Qimo 1 was released in February of 2009
<mhall119> and based on Ubuntu 8.10
<MichelleQ> Our son, Quinn, is almost 7.  He was four when we started on this
<ClassBot> sebsebseb asked: Do you know of maybe some older people who are using Tuxmath to learn Maths? I know it can be rather useful and fun for anyone who wants to learn maths.
<MichelleQ> sebsebseb: we've actually been asked similar questions quite often, and we've been discussing formulating something strictly for older adults.
<MichelleQ> When we have gross amounts of freetime, hopefully we'll be able to get around to turning Qimo into a distribution for elderly or dementia patients, to work on cognative skills.
<mhall119> sebsebseb: you may also be interested in Cognitionplay, it's a variant of Childsplay designed for use with the elderly and adults with mental diseases: http://www.schoolsplay.org/
<ClassBot> habeous asked: How far does Tuxmath go in the curriculum? Does it go to algebra?
<ClassBot> There are 10 minutes remaining in the current session.
<MichelleQ> dang it, wrong room
<mhall119>  hajour tuxmath only goes up to multiplication and division
<mhall119> for algebra, check out https://wiki.ubuntu.com/Edubuntu/AppGuides/kalgebra
<MichelleQ> gpc: the easiest thing to do is email me.
<ClassBot> hajour asked: can the games also run on light weight programs like lubuntu
<MichelleQ> hajour: for the most part, yes
<mhall119> yes, the games will run on any desktop environment
<mhall119> we use Xfce for Qimo because it's a good balance between weight and features
<ClassBot> gpc asked: is there a Qimo foundation or some way we can donate funds/hardware ?
<MichelleQ> the easiest thing to do is email me.  since the website is down at the moment, that's the best bet.
<MichelleQ> Once the website is back up, there's a donations page, you're welcome to visit there.
<MichelleQ> The server apparently needs a technical tap.  :-/
<mhall119> but if you have a computer, the best thing you can do is install Qimo or Edubuntu on it yourself and give it to a family or daycare facility that could benefit from it
<MichelleQ> Any other questions before we go?
<MichelleQ> Anyone, anyone?
<ClassBot> sebsebseb asked: Are either of school teachers for example or something like that?  A bit of a different question I know.
<MichelleQ> Are either of us school teachers?
<MichelleQ> No, we're not.  Mike's a programmer by trade.  I'm an at-home mom, though if I were working, I'd be teaching.
<ClassBot> There are 5 minutes remaining in the current session.
<MichelleQ> I've spent most of the past five years concentrating strictly on teaching my own children.
<MichelleQ> Someday I'll be back in a classroom, though.  :-)
<MichelleQ> Any other questions, before classbot boots me?
<mhall119> I know MichelleQ mentioned it earlier, but it's worth repeating: all of this technology is a wonderful tool to help teaching children, but it still requires parental involvement and other activities
<MichelleQ> Absolutely.  Supervision is vitally important, and so is remembering to hit the off button.
<ClassBot> sebsebseb asked: What touch typing software would you recommend?
<mhall119> sebsebseb: https://wiki.ubuntu.com/Edubuntu/AppGuides/ktouch is the only one I'm aware of
<mhall119> we haven't gotten to the touch typing stage yet with our kids
<MichelleQ> Thank you so much, folks.  :-)
<MichelleQ> Feel free to track Mike or I down, should you have any further questions.
<mhall119> remember, you can always go to #edubuntu and #qimo channels to learn more
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Linux Security Myth - Instructors: maco
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<nigelb> Folks, maco will be here in a few minutes :)
<maco> Hi!
<maco> Sorry, I'm at a LinuxChix meetup at a teahouse and lost track of time, but now I'm online, yay
<maco> Anyway, I'm Mackenzie, and I did a thing earlier on GNOME & KDE with pleia2 doing the Xfce side of things.  I'm a MOTU and work for a security company now
<maco> So catching up.... I have slides from when I gave this presentation at Southeast LinuxFest and Ohio LinuxFest which you can follow along with here http://bazaar.launchpad.net/~maco.m/presentations/security/view/head:/OLF2010_security_myth.pdf
<maco> So, the idea for this presentation happened after one of those conversations with my brother where I realise he thinks all bad things on the internet are covered by "virus" and with a friend who didn't know how to tell phishing by looking at a URL
<maco> Some folks hear that "there are no viruses for linux" and assume it's a magic bullet and nothing bad can ever happen.  The first chunk of slides dispells that. There are lots of bad things that can happen!
<maco> So, the actual word for all the bad software that hurts you is malware.
<maco> You can flip through the vocab at your leisure. I'm going to get into the explaining
<maco> So, first off:  there have been viruses for Linux. Wikipedia has a list of about thirty
<maco> These were the ones that made it into the wild that are known.  They won't hurt you if you are using a current system.
<maco> Several hundred more have existed as proof of concept (ie, "we need to patch this, and here's why") but those were not in the wild.
<maco> However existence of past ones should be taken as a hint that more could happen in the future.
<maco> The most recent virus I remember that affected Linux systems was a macro virus for OpenOffice.org and worked cross-platform.  That was maybe 3 years ago
<maco> So, other than viruses, there are trojans.  I think these are what affects people in general more often and what have the best chance of getting you as a Linux user
<maco> The  name trojan comes from trojan horse. "Hi! I'm an awesome game and you should install me!"
<maco> ...and then you're pwned
<maco> A little while back someone posted a "screensaver" in deb form on gnome-look.org
<maco> Some folks installed it.  One got suspicious when no new screensavers were listed in the configuration tool.
<maco> Turns out, it started a script which checked for a script online, downloaded, and ran it.  The person running the webserver could change that script to do whatever they want whenever they want.
<maco> When someone controls a bunch of computers and uses them to do their bidding, that's a botnet.  This deb made a botnet.
<maco> Thankfully it was found quickly and removed from gnome-look.org
<maco> Now, this isn't a "omg gnome-look is evil" -- It's full of user-uploaded stuff.  The important thing to take from this is:  do not use what you do not have reason to trust
<ClassBot> taves asked: whats linuxchix?
<maco> This is off-topic but just in case someone sees the logs and wants to join in: see http://linuxchix.org
<ClassBot> sebsebseb asked: Many people think that Linux distros won't get targeted by a lot of malware unless they gain the kind of market share Mac OS X or Windows have. What do you think about that?
<maco> I'm sure that as it becomes a more lucrative target attempts will increase.  And I also suspect that as we get complacent and gain a false sense of security, our hubris will bite us in the rear
<maco> So, how do you know who to trust?
<maco> (I know this is out of order of slides, oh well. This bit would be around slide 27)
<maco> Packages uploaded to the Ubuntu archives are made by Ubuntu or Debian developers. They sign them cryptographically to prove it's coming from them. Before getting permission to upload packages, trust is established by a long while of sending patches to the other developers to demonstrate knowledge and lack of evil intent. Their application is voted on. So, there is a vetting process
<maco> The packages you download are built on Ubuntu build servers which then sign them. Your package manager on your system checks the signature. If it doesn't match there are a couple reasons
<maco> 1. You need to run "sudo apt-get update" because a new version has been uploaded since you last checked for updates
<maco> 2. The package has been altered or is being pulled from an alternative not-right server (man in the middle attack)
<ClassBot> palhmbs asked: Can you secure your data any better other than using the encrypt personal folder option at install?
<maco> That's fine protection if you just don't want anyone knowing what's there but are ok with them knowing that *something* is there
<maco> There's a field related to encryption called stegonagraphy that's about making it so you can't tell something's there.  Truecrypt lets you have hidden *and* encrypted partitions
<ClassBot> palhmbs asked: If known bugs in the kernel can be fixed then regressed / rolled back and allow expliots with root privileges - do the ubuntu team track these bad and patch the kernel to fix these for just us ubuntu users?
<maco> Yes, the Ubuntu Security Team keeps track of CVEs (I forget what it stands for. V = Vulnerability) and prepares fixes for such regressions. Which are fixed first depends on how bad they are.  A local exploit isn't nearly as worrisome as a remote one, for example
<maco> If you are aware of a security bug, you can report it in Launchpad and mark it to be a security issue. This will make the bug private and viewable only by the security team so that not-nice people can't learn how to break things by poking around there
<ClassBot> palhmbs asked: Is it much safer not to install devel PPAs?
<maco> I'd say it depends who is running the PPA. Is it upstream developers? Well, you trust the code anyway...   Is it an Ubuntu developer?  Well you trust the rest of their packages anyway... Is it a random person on the internet?  Uhhhh.....
<maco> You can find this out by clicking on their name and looking at all the little icons listed on their page.  If they're in ~ubuntu-dev, they're an Ubuntu developer.  If the project is hosted on Launchpad, you can see from their Code page whether they're actually working directly on it
<maco> <rww> CVE = Common Vulnerabilities and Exposures     <--- thank you
<ClassBot> sebsebseb asked: What would your description be of a secure password?
<maco> Long and complicated!  Personally, I take sentences, titles, lines of poetry or lyrics.... things with lots of words.. and either mash the words together (if it's like 3-4 words) or take the first letter of each and throw in some punctuation and ch4ng3 l3tt3r5 ... ok too hard to type that way... change letters to numbers
<maco> It makes them easier to remember
<maco> You can write them down if you want. I know, "but what if someone reads it?"  Look, if someone has already broken into your house and so able to snoop around post-its under your keyboard...you've got bigger problems
<ClassBot> palhmbs asked: Is Tor the best method for securing network & your anonymity online?
<maco> It was really interesting to learn that there are governments using Tor as their sole source of internet protection.  That is, without encryption.  I learned this from someone who ran a Tor node and snooped
<maco> For anonymity, yes, go for it. But still use basic protections like https.  SSL may be somewhat broken, but it's better than nothing and at least makes them have to put in effort
<ClassBot> LeGambitteur asked: What about hacking passwords using cloud ?
<maco> Spinning up many many cloud instances to crack passwords in parallel in a few hours makes things a lot cheaper than buying massive amounts of hardware.  This does change the playing field a bit. IMO, it makes it more important that you don't use 123456 as your password
<maco> Oh, so something new that happened in the DEs a little bit ago (a year or so) is that now you can't run .desktop launchers from inside /home unless they are marked as executable
<maco> This is because it is conceivable that you get a "hot pix!!!!1!!" email with a .desktop file that runs "rm -rf *"  (DO NOT RUN. YOU WILL LOSE ALL DATA) and that would be BAD
<maco> So this way you have to take another step other than "click the thingy in my email that gives me hot pix"
<maco> I really like that in KDE it shows you the command that will be run so you can make an informed decision
<maco> (see slides 30-31)
<ClassBot> sebsebseb asked: Maybe not so much on topic, but how do you think educational establishments can teach computer security better? Since most say about antivirus if anything and that's about it.
<maco> Oh they could do a lot better. I was very disappointed to find that my computer security professor was learning things for the first time as he read the slides (which he got from the previous professor) to the class.
<maco> Like this:  *reading* "huh!"
<ClassBot> palhmbs asked: Does Ubuntu have built in exploits for government dept use - NSA / CIA whatever?
<maco> I work for neither of those agencies, and if I did, I wouldn't be allowed to answer that
<ClassBot> palhmbs asked: Is security excellent on a distro that is only read-only live-cd / dvd based?
<maco> While nothing can persist beyond reboot (unless you get a BIOS virus...), you could still end up with something affecting you just for that run.  But if you intend to attend DEFCON or Black Hat, running from a live cd and not typing in your valuable passwords would be a good plan
<maco> Oh here's something important since everything lives in the web browser now
<maco> Browsers like Firefox are cross platform.  They are a big target.
<maco> Cross-site scripting tends to work regardless of the OS or browser. It's a matter of bad coding on the website. You are still vulnerable.
<maco> If you want to be paranoid, install No Script to at least limit what Javascript can run.  I don't expect you to know what domains to trust. The important thing is that it alerts on cross site scripting attacks
<maco> Cross site scripting is when one site steals data from another, basically
<maco> The other valuable thing NoScript does is alert on click jacking
<maco> That's when there's an invisible button covering a chunk of the page so when you go to click on something good, you click on something bad
<ClassBot> txomon asked: what about firesheep and those?
<maco> Oh good a segue for HTTPS/SSL!
<maco> You've probably hear to look for the lock and everything is good
<maco> The lock means your connection to the site is encrypted.  Firesheep lets anyone on the network manipulate the sites you are on and eavesdrop if you do not use SSL
<maco> Please set your GMail to force SSL in the settings
<maco> Please pester websites which default to insecure. Facebook finally took the hint and is adding SSL
<maco> (Note to self: pester dreamwidth)
<maco> The lock is NOT a magic bullet either though!
<maco> You can have an SSL connection to the wrong site
<maco> If you see http://mybank.com.iamnotevil.hax.info
<maco> You should read all the way to the end
<maco> Maybe that's   http://mybank.com.iamnotevil.hax.info/blahblah.asp
<maco> You should read to the slash before blahblah
<maco> These are not the same as mybank.com  I was surprised to learn a friend did not know this
<ClassBot> There are 10 minutes remaining in the current session.
<maco> If you are at such a site, you could become a phishing victim
<maco> Banks in the US at least now use Extended Validation certificates (EV)
<maco> These validate not just that the domain name & its encryption key go together, but that the domain name and who you think it is go together
<maco> Take a look at http://paypal.com in Firefox
<maco> There's a green bar.  You click, and it tells you what the legal entity is that owns this website and who verified it.  Financial institutions should tend to have these.
<ClassBot> palhmbs asked: In your opinion / experience, which browser do you feel is safest / the most secure?
<maco> One with Javascript turned off? lynx?  I don't know.  On the one hand, Firefox has lots of eyeballs looking at it. On the other, it's a huge target.
<ClassBot> sebsebseb asked: When do you think security updates should be installed into Ubuntu or other distros?  I mean a few weeks not up to date at the moment, and probably still going to be ok right?
<maco> I'd at least check in update manager to see what it says the thing is fixing
<maco> And check Ubuntu's security page
<maco> http://security.ubuntu.com I think
<maco> If it's a remote exploit, I'd install pretty quickly. If not, then a few weeks...if you're not in a financial or governmental institution...meh sure
<ClassBot> taves asked: i have a router do i need a firewall?
<maco> Most consumer routers have firewalls built in.  In the enterprise these are normally separate pieces of hardware.
<maco> Keep in mind you don't really need to configure your firewall (using iptables or ufw) unless you have services running
<maco> Ubuntu has none by default
<maco> <rww> There's also a mailing list for security update announcements: https://lists.ubuntu.com/mailman/listinfo/ubuntu-security-announce
<ClassBot> palhmbs asked: What things can we learn from Sourceforge getting hit and are we likely to see a huge increase in cyber-warfare attacks in the future?
<ClassBot> There are 5 minutes remaining in the current session.
<maco> That you shouldn't use the same password everywhere. Same lesson we learned from Gawker.
<maco> Password managers are your friend
<ClassBot> txomon asked: about linux passwords security... the password is just generated from the passphrase or it is a combination of passphrase and system variables? and how can we protect a system from phisical accesS?
<maco> Your password is your password, period.
<maco> Or do you mean your home dir encryption from ecryptfs? If that, then it's that the key is encrypted using your password
<maco> (Also the case with your ssh & encryption keys)
<ClassBot> taves asked: what is this keyring popping up in ubuntu?
<maco> Keyring stores passwords for you. It is encrypted with a password. By default this is the same as your login password so it is automatically unlocked by you logging in
<maco> If you use autologin, it can't unlock automatically and you have to type it in
<maco> You could change it to empty password and it would not ask, but the passwords would be stored on disk in the clear
<maco> Ok, time's up I think
<jcastro> \o/
<jcastro> Nice job maco!
<maco> Thanks jcastro. Good luck with yours :)
<jcastro> Ok, I'm going to give it another minute or so, since DBO isn't around yet.
<jcastro> In the meantime feel free to familiarize yourself with Unity:
<jcastro> http://unity.ubuntu.com/
<jcastro> and you can see other Unity questions people have been asking us over the past 4 months: http://askubuntu.com/questions/tagged/unity?sort=votes&pagesize=50
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: Unity - Instructors: jcastro, Dbo
<jcastro> I'll give it another minute and then I'll start to take questions, so smoke if you got em!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<jcastro> Hi DBO!
<DBO> howdy
<jcastro> we're just going to give it another minute before we begin
<DBO> awesome
<jcastro> I gave people some links to familiarize themselves with Unity
<jcastro> and a link to the Unity tag
<jcastro> So for this hour we're going to do questions about Unity, and we have Jason Smith (DBO) here to answer your technical questions
<jcastro> then the last hour you can ask me about anything coming up in 11.04 in general
<jcastro> DBO: Ok let's start, introduce yourself!
<DBO> my name is Jason Smith, I am a developer on the Unity project
<DBO> I have worked largely on BAMF and the launcher aspects of unity
<DBO> however I have a good high level view of all parts of the project
<jcastro> What other projects have you worked on?
<DBO> panel, nux (the toolkit behind unity), compiz, mutter when we were using that, and quicklists
<ClassBot> mhall119 asked: can we still use the 2-panel Gnome layout?  I've heard that the global menu changes have broken it
<jcastro> I can field that one
<jcastro> yes, the GNOME 2.x desktop is actually our 2D fallback for 11.04
<jcastro> in GDM there's a "Classic GNOME" session that you can select to get the same desktop you have today
<DBO> to answer the other half of the question
<jcastro> DBO: and I believe we're doing something with detecting wether the driver can support unity or not and making a smart choice about that?
<DBO> I am not aware of any conception break in the global menu for gnome 2.0
<DBO> however if there is one, we will fix it before release
<ClassBot> sebsebseb asked: What is Canonical doing to help other distro's include Unity in their repo's? if anything?
<DBO> i got this one :)
<DBO> we are getting interest from several packagers involved with other distros
<DBO> I know fedora and suse have shown interest recently
<DBO> we communicate with them and help answer packaging questions
<DBO> in a couple cases we have helped them either build unity without upstream patches or helped remove patches altogether
<DBO> next :)
<ClassBot> habeous asked: Is Unity going to completely replace GNOME? OR will they be shipped together?
<DBO> got it
<DBO> Unity is not a replacement of GNOME at all
<DBO> GNOME is collection of applications and frameworks
<DBO> among those things is a window manager and a "shell" (panel)
<DBO> in Ubuntu we have not been defaulting to the GNOME window manager for some time, opting for Compiz instead
<DBO> The only real change here is we will now also be replacing the GNOME Panel
<DBO> everything else remains the same, GTK, EDS, menu framework
<DBO> its all still GNOME :) just a new shell
<ClassBot> sebsebseb asked: Why exactly was it decided to go with Unity for 11.04 desktop as well as netbook, instead of going with Gnome Shell by default?
<jcastro> This one is best answered by this article:
<jcastro> in which Mark is interviewed and explains on why we chose to go with Unity for 11.04: http://arstechnica.com/open-source/news/2010/10/shuttleworth-unity-shell-will-be-default-desktop-in-ubuntu-1104.ars
<ClassBot> mhall119 asked: Is there any sharing going on with the GNOME Shell developers in terms of usability testing?
<DBO> none that I know of but I know both the design team and the DX team look at what GNOME Shell does, both good and bad. We also publish our findings, so I figure they must do the same.
<ClassBot> Sashin asked: What are the plans in regards to Unity post Natty Narwhal?
<jcastro> ooh, good question
<jcastro> tell us something cool DBO
<DBO> Well from a developer standpoint this question is a bit tricky because its hard to tell sometimes when a feature will land, however!
<DBO> Post natty we will see better web integration inside of unity
<DBO> as well as standard design iterations and maintenance tasks
<jcastro> UDS is coming up in May, we'll have a better idea then -- we're not quiet about things we plan at UDS, so I guess stay tuned.
<ClassBot> jmarsden asked: Are there perceived performance issues with Unity compared to "Classic GNOME" -- put another way, is there a minimum hardware recommendation (CPU? RAM? video card?) for using Unity without being annoyed by it seeming slow?
<DBO> the Dell Mini 9 is our target bottom end machine for an optimal performance
<DBO> currently we feel we are hitting that
 * jcastro pops in with a subquestion: Does unity add any hardware requirements on top of normal compiz?
<jcastro> If I was running compiz fine before will I have problems I mean
<DBO> Frame buffer objects are the only additional requirement
<DBO> most video cards made after 1998 or so support this
<DBO> so yeah, if you can run compiz, you should be able to run Unity
<ClassBot> mhall119 asked: I want to get involved with Unity development, but I'm not a C/C++ developer, what are my options?
<DBO> well we have some projects that are in Vala, which might be even more obscure for you
<jcastro> well, we could always use help triaging  bugs
<DBO> oh yeah, that too!
<jcastro> also, by merely building and testing unity you can help report bugs
<jcastro> either by running natty or running a daily build on top of natty
<DBO> some of the best contributors to the project are guys who build trunk, report bugs and get us awesome stack traces
<jcastro> and since now Unity can run in Virtualbox 4.0 that's an easy way to get started
<jcastro> https://wiki.ubuntu.com/Unity/InstallationGuideFromSource
<DBO> those who test our patches... we cant help but love that :)
<jcastro> ^ here are the instructions on how to build unity from source
<jcastro> https://launchpad.net/~unity/+archive/daily
<jcastro> or you can fire up some of those daily builds if you are crazy
<ClassBot> Sashin asked: Will the full screen dash and application menu make an appearance on netbooks again? Will there be any distinguishing between Desktop and Netbook in Unity?
<DBO> the only difference between netbook and desktop unity is the default options
<DBO> otherwise they are the exact same code
<DBO> the full screen dash will be back however (as an option in some form)
<ClassBot> mhall119 asked: follow-up, anything for a Python developer to do?
<DBO> you can make plugins as places using python
<jcastro> https://wiki.ubuntu.org/Unity/Places
<jcastro> places aren't ready yet, expect me to make a bunch of noise about places after Alpha 2
<jcastro> you'll be able to make your own Dash things we call Places
<DBO> it is worth noting the API for places wont change between maverick and natty
<jcastro> there will be tons of places you could make, they'll be similar to things like Firefox search extension things, except system wide and they'll be able to talk to zeitgeist
<jcastro> so you can do "super key" + "batman" and the imdb place would return movies into the dash, etc.
<jcastro> but we'll need people like you to make them!
<ClassBot> sebsebseb asked: Have any of the developers of other distros contributed any Unity code yet? Or is it still mainly Canonical and the Ubuntu Community making it?
<DBO> I dont know if we have had code contributions yet from other distro developers
<jcastro> I don't think so, but I could be wrong
<ClassBot> Omega asked: Are there any plans for a merge between Unity-2D and Unity-3D? What is the relationship between the two?
<DBO> I know a fedora guy found some missing header licenses for us
<DBO> No :) The 2D version is simply a 2D realization of the 3D version
<DBO> its simply designed to be identical to the 3D version minus 3D :)
<jcastro> (You can find the 2d version here: https://launchpad.net/~unity-2d-team/+archive/unity-2d-daily)
<jcastro> it's pretty nice for older laptops, I have this old junky laptop with a crap graphics card and 2d unity runs great on it
<ClassBot> charlie-tca asked: Is there a list of keyboard shortcuts used in Unity?
<DBO> evil answer: currently no
<DBO> less-evil answer: you can look in ccsm
<DBO> better answer: we need to make a wiki page :)
<jcastro> right now the super key invokes the launcher
<jcastro> and you guys are bringing back the super-1, super-2, etc shortcuts right?
<DBO> yes
<jcastro> mhall119: making a wiki page of the shortcut keys would be a good place for a non-C++ programmer to start ... :)
<jcastro> I'll start on a page on Monday I think, this would be quite useful
<ClassBot> Sashin asked: What's happening with the proposed unity people's place?
<DBO> I think Seif Lofty has written the code for this already
<jcastro> http://www.omgubuntu.co.uk/wp-content/uploads/2010/11/unity-ppl.png
<DBO> ideally this will be packaged and placed in Universe repositories
<jcastro> yep, he's been working on that
<ClassBot> mhall119 asked: What's the status of accessibility in Unity?
<jcastro> Pendulum: want to field that one? I am totally in the dark on a11y
<Pendulum> The current status is "it's being worked on"
<Pendulum> They're hoping to get the initial bits of the framework into alpha2, but I'm not sure if it'll happen or not
<jcastro> ok, thanks
<Pendulum> I do believe, however, (and charlie-tca can correct me in chat if I'm wrong about this) that the accessible installer works, but that's about it
<Pendulum> otherwise we need the documentation on keyboard control ;)
<jcastro> DBO: while we wait for more questions can you fill us in on what we can expect in the launcher over the next coming weeks?
<jcastro> Pendulum: I'll get on a wiki page on monday, that shouldn't been too hard to set up
<DBO> Drag and Drop support is the biggest work item coming soom
<DBO> we are also getting some edge scrolling effects, and quite a few stability fixes
<jcastro> drag and drop like applications and stuff into the launcher?
<DBO> correct
<jcastro> how about folders and whatnot? or things like my favorite document I am working on or something?
<DBO> so you could say drag a file onto the launcher and launch an application with that file as an argument
<jcastro> finally. :)
<DBO> Im not sure if we are going to allow storing files on the launcher itself yet
<DBO> I hope so... but I have my doubts :P
<ClassBot> Sashin asked: What's multimonitor support like in unity? Does the top panel extend across both monitors? Is it one virtual desktop per monitor?
<jcastro> I can field this one as I use unity in twinview
<jcastro> right now there are 2 annoying issues, first is the top panel still isn't multimonitor aware, so it streches across
<jcastro> though neil tells me he's working on that
<jcastro> and the second is if one monitor is larger than the other the launcher gets confused, but alex launi (our QA/testing dude for Unity) has a grasp on that one
<jcastro> the multiple workspaces are just like how they used to be pre-unity
<jcastro> that is when I move around both panels switch to a new workspace
<jcastro> maybe someday we'll get independant workspaces per panel (that would be sweet)
<DBO> dream big
<DBO> :P
<jcastro> so what else are you guys going to put in the dash?
<jcastro> I see the search field there but it's not working right now
<jcastro> can you explain a bit how search will work?
<DBO> search is a "live search"
<DBO> so as you type, the results will update
<DBO> there is a really cool cross fade blur animation planed for that, I dont envy the GL programmers job for that...
<jcastro> how many GL programmers on the team?
<DBO> results will be organized in much the same way they are in the maverick version
<DBO> 3 GL gurus, 2 more GL competent
<ClassBot> Sashin asked: Are you going to reduce the Icon to tile ratio to make it like Maverick Unity? ( I think it looks cleaner with more spacing)
<DBO> Nope :)
<jcastro> can you explain what he means?
<DBO> yeah
<jcastro> he means the size of the icons inside the little tile things right?
<DBO> so there are two parts of the tile
<DBO> there is a "tile" and an "icon" part
<DBO> the tile part in maverick is 48x48 and the icon is 32x32
<DBO> in natty the tile is 52x52 and the icon is 48x48
<ClassBot> Omega asked: Will Ubuntu Light still be powered by Unity? Can you tell us a little more about that?
<DBO> Ubuntu Light isn't really part of my pervu, but as far as I know it will remain unity based
<DBO> thats all I really know :/
<jcastro> me either, but  basically Ubuntu Light = Unity + Normal Ubuntu customized for specific hardware
<jcastro> DBO: I hear we support icon sets in the launcher now
<DBO> yeah we more or less follow whatever the selection icon set is
<jcastro> so people can make all sorts of crazy icon sets for the thing right?
<DBO> yeah I guess they could
 * DBO fears the results
<jcastro> (about 10 minutes left for questions folks, keep them coming)
<ClassBot> Omega asked: Some people have been making Unity mockups, have you guys taken a look at those? link: http://www.techdrivein.com/2011/01/4-beautiful-ubuntu-unity-ui.html
<DBO> I can say with 100% certainty the whole team looks at them, sometimes we oggle, sometimes we giggle
<DBO> I love that the community is making mockups
<DBO> you guys come up with some great ideas
<jcastro> those mockups remind me of a question
<jcastro> for 11.04 will we be able to switch to a light theme like Radiance?
<DBO> probably not
<DBO> if not in 11.04, for sure in 11.10
<ClassBot> Sashin asked: Why is the menubar hidden without mouseover?
<ClassBot> There are 10 minutes remaining in the current session.
<jcastro> DBO: your favorite question!
<DBO> I wont lie to you
<DBO> I have absolutely no idea, I dont like it myself
<jcastro> http://askubuntu.com/q/22486/235
<DBO> im not really a designer however
<jcastro> Mark answers that specific question himself ^
<DBO> awesome
<jcastro> now you don't have to. :)
<DBO> whew, close call
<jcastro> We have time for  like 2-3 more questions
<DBO> is there a session with Otto or John Lea?
<jcastro> nope
<DBO> sweet
<ClassBot> Sashin asked: What significant changes will come to the unity interface by final release?
<DBO> The dash will undergo major visual changes (as well as become functional)
<DBO> it currently does not reflect our design goals
<jcastro> And we'll have places
<jcastro> https://wiki.ubuntu.org/Unity/Places/Ideas
<jcastro> here are some ideas for places we have ^
<DBO> the BFB will also have some design changes
<jcastro> what's the bfb?
<DBO> the Big Friendly Button
<jcastro> the button with the ubuntu logo you mean?
<jcastro> what kind of changes?
<DBO> yeah that one :)
<ClassBot> There are 5 minutes remaining in the current session.
<DBO> when the dash is open it will have a visual appearance similar to it being integrated with the launcher
<DBO> its cool looking
<jcastro> i don't suppose you have a teaser screenshot?
<DBO> I do not :)
<jcastro> https://wiki.ubuntu.com/Unity/Places/Ideas  <-- correct URL from before, sorry
<jcastro> ok welll, thanks Jason for joining us
<jcastro> we'll take a short break
<DBO> sure :)
<jcastro> and then you guys can Q+A me on the rest of 11.04 for another hour
<jcastro> cheers!
<jcastro>  Bitesize Bugs you can help with: http://goo.gl/i1WA1 and http://goo.gl/tiheb
<jcastro> ^^ For those of you who want to dive in and help with Unity!
<jcastro> ok, taking a quick break to go to the bathroom, chill out for a few, mingle amonst yourselves, and then we'll begin!
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Ubuntu User Day - Current Session: What's cooking in Ubuntu - Instructors: jcastro
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<jcastro> ok
<jcastro> we'll run this one unmoderated and less formal
<jcastro> so we can go deeper into discussions and Q+A without worrying about the bot
<jcastro> I'm Jorge Castro and I'll be your host!
<jcastro> So for this session basically I'd like to answer your questions about what's going on around Ubuntu for 11.04
<jcastro> so we can really have this session be whatever you guys want to ask questions about
<jcastro> wether it's new features coming in 11.04
<jcastro> or specific questions about the distro in general
<Sashin> So, what are the plans in regard to the software centre changes, have we seen them all (ratings and reviews) or is there more to come? (interface changes, new icon, features etc)
<mhall119> is there any chance of the server-side of Ubuntu One being opened?
<jcastro> ok so let's start off with the software center
<jcastro> In case you didn't know, they uploaded a new USC this week that let's people rate and review software
<jcastro> you can rate things from 1-5 stars, and leave comments
<jcastro> I asked mvo (one of the developers) if this was going to be backported to 10.10
<jcastro> and he tells me that they're still looking at doing that, depending on how complicated it is to backport what they need
<jcastro> as far as the look and feel and icon and all that, 24 March is the userinterface and beta freeze
<jcastro> so I expect any changes would have to land by then. I am not sure what the design team is cooking up for USC though
<jcastro> (I wonder if the yellow color for the comments is on purpose for example)
<jcastro> mhall119: No change in that policy as far as I know
<mhall119> is there an Ubuntu One webservice API?
<jcastro> you're in luck
<mhall119> or any way to integrate webapps with a user's U1 data
<jcastro> "soon" is what they tell me
<mhall119> yay!
 * jcastro searches for a sec
<jcastro> can't find anything
<jcastro> but last I heard there will be a full API and SDK and all that jazz
<mhall119> it's okay, I know where to find you for updates
<mhall119> I also know where to find U1 devs
<jcastro> so another thing coming for 11.04 will be the 2.6.38 kernel
<jcastro> which is starting to land in natty itself right now
<jcastro> this does include the "200 line magic patch" thing everyone was talking about
<Habeouscorpus> wow, that alone makes it worth the upgrade
<jcastro> there are also 2 new programs in the default install
<jcastro> the first one is the switch from openoffice.org to LibreOffice
<jcastro> which has already been uploaded this past week
<jcastro> and the second is that Banshee is now the default music player
<jcastro> (feel free to jump in with any questions at any time)
<Habeouscorpus> does libre office still support all that open office does?
<jcastro> yep
<jcastro> and more
<Sashin> Anything else apart from unity planned as a part of the Ayatana initiative landing in Natty?
<jcastro> in fact libreoffice derives from "go-ooo", which was a patchset of improvements to openoffice
<gpc> What does the future hold for the "classic desktop" in Ubuntu?
<jcastro> so for ubuntu users it's just a continuation of improvements from the past
<jcastro> Sashin: good question
<jcastro> suport for the global menu in Firefox and Thunderbird will land
<jcastro> as far as the classic desktop
<jcastro> I suspect it won't be going anywhere for a while
<sebsebseb> Why is Banshee default?
<Pendulum> so it should still be an option when Unity 2D starts to really be pushed (which I'm under the impression will happen in O-cycle)
<jcastro> Sashin: as far as the rest of ayatana, this cycle is mostly maintenance, so instead of improvements to them we'll see more work being done on apps, etc.
<Sashin> Any planned changed to the installer ubiquity?
<gpc> jcastro: I would hope until at least 12.04
<Sashin> ah I see
<jcastro> Banshee by default mostly because of it's healthy improvement upstream
<sebsebseb> yeah Unity 2D probably the default fallback option for 11.10?
<jcastro> I have more detail on why Banshee here: http://askubuntu.com/questions/10911/why-is-banshee-becoming-the-default/10963#10963
<jcastro> Sashin: on the installer front mostly all bug fixing
<jcastro> 10.10 was the big one featurewise for the installer
<jcastro> in 10.10 they made it so it installed in the background while you answered the questions
<jcastro> which really makes for a fast install
<jcastro> I suspect our decision to use Unity 2D in the future as a fallback will depend on how long GNOME 2.x is maintained upstream
<jcastro> but as with anything, we make those decisions at UDS, and it's much to early to determine something like that
<jcastro> especially when Unity 2D isn't finished yet, and GNOME 2.x is very mature code that's been rocking for us for going on 6 years.
<Sashin> Isn't unity going to be a shell over gnome 3?
<jcastro> yes
<sebsebseb> Maybe the encrypted home should be in an advanced option or something?  I remember people in #ubuntu with issues after re installs or whatever it was, because they had used encryption
<jcastro> yeah, that'd be a nice wishlist bug
<sebsebseb> was that at me?
<jcastro> yes
<sebsebseb> ok :)
<jcastro> on the server side there are some cool improvements
<jcastro> this release will mark the debut of cobbler in ubuntu
<sebsebseb> What's cobbler?
<jcastro> cobbler is a deployment server from the guys at Red Hat
<jcastro> basically you have a server
<jcastro> and you tell it "I want ubuntu desktop 10.10, server 10.04, and these other isos"
<jcastro> it then imports them
<jcastro> and then you just start net booting machines and installing it
<jcastro> it's like an out of the box PXE installer with management features
<jcastro> http://www.ubuntu-user.com/Online/Blogs/Amber-Graner-You-in-Ubuntu/Chuck-Short-Discusses-Cobbler-On-Ubuntu
<jcastro> http://zulcss.wordpress.com/2011/01/19/using-cobbler-on-ubuntu/
<gpc> ohh, that sounds nice
<sebsebseb> oh ok so cobbler for more than one distro?  So they can be installed eaiser on a server?
<jcastro> https://fedorahosted.org/cobbler/
<jcastro> basically, most sysadmins set up their own kickstart server anyway
<jcastro> this one just comes out of the box
<jcastro> something else in the tasksel, like we do for LAMP, DNS, etc.
<jcastro> you just check the box and voila!
<jcastro> hmm, let's see what else
<LeGambitteur> what about the web browser ? will Minefield be ready ?
<jcastro> yep, it'll be firefox 4
<jcastro> which is already in natty
<jcastro> (with the global menu as I said earlier)
<jcastro> oh, here's one
<jcastro> we finally fixed the resizing of windows
<jcastro> so instead of that stupid 1 pixel target, you'll be able to basically grab any part of the "shadow" around a window to resize it
<jcastro> and on top of that there will be a little grippie on the bottom right corner of every window
<jcastro> (it's about time we fixed that bug, it was horrible)
<sebsebseb> Unity 2D probably by default for well versions of Ubuntu after 11.04 right?  Gnome 2 is on the verge of dieing after all.  Also I think I read that for Ubuntu to do Gnome 3,  would need to do the whole thing so no Gnome 2 fall back option. Which is planned for 11.10?
<jcastro> like I said before it's much to early to tell
<jcastro> at this point in the cycle all we're thinking about is 11.04
<jcastro> it's not until UDS where we start to think about 11.10
<jcastro> so, ask me in May. :)
<Pendulum> sebsebseb: if you have a strong opinion either way, you might want to consider attending UDS either in person or remotely :)
<Sashin> Gnome shell will still be in the repos?
<jcastro> we had to move gnome shell to a PPA
<jcastro> for a number of reasons
<sebsebseb> Pendulum: I did attend some sessions for not the last UDS, but the one before, remotely
<jcastro> https://lists.ubuntu.com/archives/ubuntu-desktop/2011-January/002740.html
<jcastro> here's the full summary
<jcastro> but basically, since we're using GNOME 2.x as the fallback
<jcastro> we can't ship parts of GNOME 3 on the disc
<jcastro> so we're moving -shell and other parts onto a PPA
<sebsebseb> jcastro: yeah bingo, that's the one I read
<jcastro> that will let anyone work on -shell for ubuntu, since they don't have to have permissions to do that in the archive
<sebsebseb> yep and the PPA can be updated after the 11.04 release as well and all that
<jcastro> and this way too they don't have to worry about freezes, etc. in the distro
<jcastro> so they'll be able to keep putting in fresh snapshots in the PPA while the rest of the distro freezes
<Sashin> makes sense
<jcastro> if we kept it in the archive by the time we released it would be old
<jcastro> anyone is more than welcome to join that team
<jcastro> it has ricotz and some of the other people who have been running gnome 3 ppa's
<jcastro> https://launchpad.net/~gnome3-team
<sebsebseb> yes it will be interesting to see how distros deal with Gnome 3 :)
<Sashin> ohh, I have that installed but it doesn't have the new interface...
<jcastro> it's just the way that the archive is organized it makes more sense to kick fast moving projects out of the distro and then bring it back in
<Sashin> still has the old gnome 3.
<jcastro> right
<sebsebseb> I think the way Ubuntu are doing it for 11.04 makes sense though,  even though I wasn't that sure when I first read it was going to a ppa
<jcastro> we have feature freeze coming up in about a month
<jcastro> if -shell was in the archive then effectively whatever -shell was in the archive at that time would be what we would release
<jcastro> this way you can just run natty + the ppa and run the freshest shell
<jcastro> hmm, lets see, what else
<Sashin> Is there any more desktop integration with internet planned?
<sebsebseb> jcastro: yeah and maybe a bit easier then doing it the current Gnome 3 site way, but at the moment, I haven't tried either,  for the later Gnome Shell's
<jcastro> oh, dunno if you guys saw but network manager is now a proper indicator
<Sashin> (like gwibber ubuntu one, etc)
<jcastro> so no more old icons in the "tray"
<Sashin> that'll make things alot smoother.
<jcastro> oh, let me see if ken's around for gwibber
<gpc> cyphermox has been working hard on n-m
<stefano-palazzo_> This may be a bit technical. Will this 200-line kernel patch business be disabled by default on the server?
<days_of_ruin> Must you change your name constantly?
<jcastro> stefano-palazzo_: we don't ship the patch, we ship what's in 2.6.38, which iirc has whatever linus approved
<jcastro> I don't expect it will suck on servers
<gpc> !nickspam > akash
<ubot2> akash, please see my private message
<Sashin> it would be cool if we could right click a picture and upload it to flickr or tinypic or something...
<jcastro> ken tells me that the improvements for gwibber this cycle are error handling and stability, and not much else.
<ikt> a lot of people think the changes to the desktop are massive, and that a lot of people will have to re-learn how to use the desktop, are there any plans for tutorials or guides or something similar built into ubuntu?
<Omega> This was from a while ago, but is still important, Ubuntu used to ship go-ooo, so the switch to Libreoffice is not that radical.
<jcastro> sure
<gpc> abhijain: please stop that
<sebsebseb> ikt: I guess the offical support pages for Ubuntu will get re done for 11.04 or parts of them
<jcastro> that's part of the reason we have things like feature and UI freeze, to give teams a chance to update documentation
<sebsebseb> Lubuntu still won't be an offical  one in 11.04?
<jcastro> I'm not sure what the lubuntu progress is lately
<jcastro> maybe asking on their project mailing list
<ikt> but I mean going further than standard documentation, like the possibility of having video guides or at worst maybe a youtube channel showing some of the newer features etc (can you tell I'm not a fan of reading :X)
<sebsebseb> Why isn't it offical already? I have tried it a few times, its quite good really as an Ubuntu based distro.
<jcastro> I don't know why it's not official
<jcastro> yeah, I'm sure people will make plenty of videos, etc.
<jcastro> I'll be making some myself
<ikt> :>
<ikt> on youtube or ?
<sebsebseb> ikt: yeah reading can be quite time consuming, but reading is a good way to find out things :)
<jcastro> yeah, we always post videos on the ubuntu developer channel
<jcastro> http://www.youtube.com/user/ubuntudevelopers
<sebsebseb> videos and audiocasts may be more fun though
<ikt> yeah :D
<Omega> If videos are made, do not forget to transcribe them.
<sebsebseb> Yeah and Jono has his ustream for people who want to ask questions about Ubuntu and such
<Pendulum> Omega: +1
<jcastro> right
<ikt> sebsebseb, yeah I read a lot, but honestly I just prefer watching videos and seeing how things are done
<sebsebseb> http://www.ustream.tv/channel/at-home-with-jono-bacon
<jcastro> 15 minutes left, what other questions?
<sebsebseb> ikt: he likes showing Unity at the moment it seems, for example
<gpc> What is your favorite food?
<Sashin> Any work being done on empathy or evolution?
<gpc> :-P
<jcastro> tacos
<gpc> haha
<stefano-palazzo_> How do you see Unity being used in large scale deployments, big companies and that?
<jcastro> evo and empathy we depend on upstream to do that work
<jcastro> we just ship it, though we keep in contact with the guys @ collabora for improvements to empathy, etc.
<jcastro> stefano-palazzo_: I don't suspect most large companies would deploy a non-LTS release
<jcastro> however when the next LTS is ready for them then Unity will have gone through a bunch of iteration
<jcastro> by then it will be pretty metal
<jcastro> anything else?
<jcastro> no one's asked about btrfs yet!
<sebsebseb> uhmm sure
<sebsebseb> ,but
<sebsebseb> that won't be 11.04 by default I guess
<Sashin> What are its advantages over ext4?
<sebsebseb> maybe 11.10 though or at least as an option?
<sebsebseb> Sashin: snapshots
<sebsebseb> so can restore the system to an earlier state or something, if a problem, but I don't know much about btrfs right now at all
<jcastro> it's in 11.04 now as an option
<stefano-palazzo_> What are the limitations of an install on btrfs going to be on release day?
<gpc> how stable is it?
<jcastro> but it'll take some time for things like being able to snapshot back after an apt-get install, etc.
<sebsebseb> jcastro: oh yeah it was in 10.10 as an option as well if I remember correctly
<jcastro> gpc: I won't be using it. :)
<jcastro> sebsebseb: yeah but you couldn't boot into it
<jcastro> you had to make /boot ext2/3/4
<gpc> jcastro: neither will I in that case :)
<sebsebseb> unless a seperate boot partition or whatever
<jcastro> now the support is there in grub2 and the installer
<jcastro> so you'll be able to install it with just pure btrfs if you want
<jcastro> but to me it won't really be useful until it's integrated with dpkg and all that
<sebsebseb> Ext4 will be good enough for many of us, for quite a while yet I guess
<jcastro> imagine being able to say "you know what, I liked 12.04 better than 12.10"
<jcastro> and then just roll back
<ClassBot> There are 10 minutes remaining in the current session.
<gpc> I like the idea of rollback
<sebsebseb> jcastro: well yeah, but the snapshots will take up quite a lot of space or?
<jcastro> but it'll be there if people want to play with it
<gpc> but it has to be absolutely stable and not wipe all my data
<jcastro> not really, that's the best part
<jcastro> snapshots are very cheap
<sebsebseb> gpc: you and others may get more lonely in #ubuntu when btrfs becomes default :D
<jcastro> actually, I found a good video on btrfs, one sec
<sebsebseb> gpc: since most problems, can be fixed by a rollback I guess
<gpc> sebsebseb: I long for the day we can close #ubuntu or maybe just keep it open as a chat channel and not a support channel .
<sebsebseb> that there will be then I mean
<jcastro> gpc: I've wanted that closed since 2004. :)
<jcastro> http://video.linux.com/video/1608
<gpc> haha
<jcastro> here you go, this is a good video for btrfs
<sebsebseb> jcastro: yeah heh heh I guess
<jcastro> from the main upstream guy. :)
<sebsebseb> what about ZFS?  maybe that will come properly later on as well? :D
<jcastro> that'll catch you up on btrfs in like 45 minutes
<Omega> support for ZFS already landed in grub
<sebsebseb> Omega: well yeah I read something about that
<sebsebseb> ,but I did say more properly above :D
<ikt> is there an ubuntu dev website coming along? a la this video: http://www.youtube.com/watch?v=GT5fUcMUfYg <- ~6:45 in
<jcastro> I'm keeping ext4 for a while.
<jcastro> http://developer.ubuntu.com/
<Omega> I've always been fond of reiserfs myself.
<jcastro> this is coming together
<ikt> ^_^
<jcastro> it'll be following the same release as the distro, so the website will be ready for 11.04
<sebsebseb> Omega: Why?
<ikt> that's awesome :D
<Omega> sebsebseb: I've never had problems with it, except yesterday :(
<sebsebseb> oh, and what problem yesterday?
<ClassBot> There are 5 minutes remaining in the current session.
<Omega> We can talk about it later, it's kind of off-topic for here
<jcastro> ok awesome, well it's midnight here, and we're about out of time
<sebsebseb> Omega: true
<jcastro> thanks so much everyone for joining in
<Omega> Thank you jcastro.
<jcastro> you can always keep abreast of changes going in 11.04 by following this list
<stefano-palazzo_> jcastro, this has been awesome, thanks a lot
<LeGambitteur> thanks to you all guys
<jcastro> https://lists.ubuntu.com/archives/natty-changes/
<Omega> Thank you for everyone who gave sessions.
<gpc> thank you jcastro
<Omega> to*
<jcastro> and this forum: http://ubuntuforums.org/forumdisplay.php?f=394
<sebsebseb> Longer user days, the better in a way, I guess
<pleia2> thanks jcastro :)
<ikt> ty jcastro and to all the teachers :>
<LeGambitteur> till the end sebsebseb
<gpc> thank you pleia2 nhandler Pendulum nigelb and everybody else :)
<jcastro> and if you have any questions about ubuntu in general feel free to ask us on http://askubuntu.com/
<gpc> thank you ClassBot
<jcastro> (though we stick to stable releases on ask ubuntu)
<gpc> :)
<jcastro> cheers, and goodnight everyone!
<Sashin> 'night!
<LeGambitteur> nn
<pleia2> and if you have a chance, please fill out http://tinyurl.com/UUDSurveyJan11
<pleia2> helps us make the next User days better :)
<sebsebseb> pleia2: and in some ways  that may make Open Week better as well I guess
<sebsebseb> Ok thanks good user days
<LeGambitteur> good night all
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 ||
<pleia2> thanks everyone!
<jcastro> thanks for hosting!
<Pendulum> Thanks y'all!
<Kljaver> good morning all, hehe
<skymonrie> test
<goosfancito> hola a todos
<goosfancito> soy nuevo en el classroom. como es la tematica?
<mpounta> Hello :)
 * coolbhavi peers about
<coolbhavi> who is around for the packaging intro?
<JackyAlcine> :D
<MrChrisDruif> I am...well head start for dev, but packaging is also good :P
<MrChrisDruif> P.S.: This chatter must be kept in -chat when the classroom starts
<coolbhavi> So its time now I guess to get started
<MrChrisDruif> In 10 minutes :)
<nigelb> Hang on, classbot should voice you and change topic in a few.
<coolbhavi> yes
<coolbhavi> :)
<^mNotIntelligent> hi all
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 || Event: Packaging Training Session - Current Session: Head Start into Ubuntu Development - Instructors: coolbhavi
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<coolbhavi> hello all
<coolbhavi> and welcome to an intro into ubuntu development processes
<coolbhavi> by me i.e Bhavani Shankar
<coolbhavi> so lets get started
<coolbhavi> Ok, first things first: for those who are new please join #ubuntu-classroom-chat
<coolbhavi> and please just speak in there
<coolbhavi> if you ask a question about anything specific to the session, please write something like this in the channel:
<coolbhavi> QUESTION: Who is Bhavani's girlfriend?
<coolbhavi> and it comes in here
<coolbhavi> so that I can answer
<coolbhavi> so I hope no questions as of now and lets get started
<coolbhavi> I ll make it a short session as possible but before that please do me a favour and bookmark https://wiki.ubuntu.com/MOTU/GettingStarted because it links to all the important pages you'll need in your life especially https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases
<coolbhavi> if you work on ubuntu development the essential thing for you is to have latest development release running or even a updated pbuilder
<coolbhavi> which i ll be covering at a later stage
<coolbhavi> So assuming there are no doubts as of now lets move on
<coolbhavi> Ubuntu development sphere in short is a sphere consisting of various processes to get in your packages into the official archive or fix existing bugs in a ubuntu package present
<coolbhavi> so what I will be going through today in detail is explanation about the various processes in ubuntu development and how to setup your ubuntu devel environment
<coolbhavi> We have basically various types of processes like getting in a new package through revu, upgrading various existing packages to the latest version to match upstream merging/syncing a package from debian as ubuntu is based on debian, Stable release updates, Fixing packages failing to build from source
<coolbhavi> and so on
<coolbhavi> and we have different types of people working in different teams in ubuntu but basically there are these types of people involved
<coolbhavi> Contributor: who submits patches to fix bugs and goes through the sponsorship process to get his fix uploaded
<coolbhavi> to help contributors who dont have a upload access to the archive we do what is called as sponsoring a package in the ubuntu/debian world which essentially means getting the help of an existing developer to get your patch reviewed and upload it to the official archive
<coolbhavi> second group is called as MOTU which stands for Masters of the Universe who have upload access to universe and multiverse components of ubuntu
<coolbhavi> Third group is called as a core dev who can upload to main and restricted components of the ubuntu archive in addition to universe and multiverse components
<coolbhavi> So any doubts anyone till this stage about the brief overview of ubuntu developer classification?
<coolbhavi> so lets move on
<coolbhavi> ok, so first of all as a head start please enable "Source code" and "universe" in System â Software Sources â Ubuntu Software
<coolbhavi> ok here is a question QUESTION: coolbhavi, when and how does one become MOTU from a contributor ?
<coolbhavi> ^mNotIntelligent, once you sustain yourselves in the above mentioned processes of ubuntu development and once your sponsors feel that you are good enough to handle these processes on your own then you ll be given testimonials and asked to face an interview with Developer Membership Board who ll grant you MOTU status upon favorable voting on you in short
<coolbhavi> I hope this answers your question
<coolbhavi> lets move on
<coolbhavi> Now I am going to show you how to setup your ubuntu box as a development environment
<coolbhavi> I hope everyone has universe repository or component enabled as said above
<coolbhavi> so lets move on
<coolbhavi> type this in a terminal:  sudo apt-get install --no-install-recommends bzr-builddeb ubuntu-dev-tools fakeroot build-essential gnupg pbuilder debhelper
<coolbhavi> It ll take some time depending upon the internet connection
<coolbhavi> bzr-builddeb pulls in bzr which we'll use to get the source code for distributed development as an example which will be covered in the coming classes
<coolbhavi> ubuntu-dev-tools pulls in devscripts which both are helpful at making repeating packaging tasks easy
<coolbhavi> fakeroot is needed by debuild (in devscripts) to mimic root privileges when installing files into a package
<coolbhavi> build-essential pulls in lots of useful very basic build tools like make gcc and so on
<coolbhavi> gnupg is used to sign files for uploads in future
<coolbhavi> pbuilder is a build tool that builds source in a sane, clean and minimal environment and it automatically sets up itself
<coolbhavi> debhelper contains scripts that automate lot of the build process in a package
<coolbhavi> So I assume download has completed and lets move on to creating a gpg key
<coolbhavi> please run gpg --gen-key now
<coolbhavi>  sticking to the defaults should be fine
<coolbhavi> so while generating a gpg key you ll need to have something called as entropy
<coolbhavi> to help the system generate the key
<coolbhavi> if you need more info on gpg keys, head to https://help.ubuntu.com/community/GnuPrivacyGuardHowto which talks about everything in detail
<coolbhavi> as I said enter your name, email address and just stick to the default values for now
<coolbhavi> while the system gathers enough random data to generate gpg key open up another terminal and we ll continue
<coolbhavi> which should be fime
<coolbhavi> if you have a gpg key already its best to skip this step
<coolbhavi> :)
<coolbhavi> in the meantime we ll setup pbuilder
<coolbhavi> please open an editor and edit the file ~/.pbuilderrc (create one if you don't have it yet)
<coolbhavi> please add the following content to the file
<coolbhavi> COMPONENTS="main universe multiverse restricted"
<coolbhavi> and save it
<coolbhavi> and then run
<coolbhavi> sudo pbuilder create
<coolbhavi> this will take a lot of time and in between some more info on pbuilder
<ClassBot> There are 10 minutes remaining in the current session.
<coolbhavi> what does pbuilder do? it builds packages in a clean and minimal environment, it keeps your system "clean" (so you don't install millions of  dependencies on your own system)
<coolbhavi>  it makes sure the package builds in a minimal, unmodified environment
<coolbhavi> so you ensure that the package does not just build because you made lots of changes on your system, but the build is reproducible
<coolbhavi> you can update package lists (later on) with: sudo pbuilder update
<coolbhavi> and to build packages you run: sudo pbuilder build package_version.dsc
<coolbhavi> So there are some 10 minutes in the session
<coolbhavi> one more important thing is if you use the bash shell, which is the default, please edit ~/.bashrc
<coolbhavi> and at the end of it, please add something like
<coolbhavi> DEBFULLNAME="Bhavani Shankar"
<coolbhavi> DEBEMAIL="bhavi@ubuntu.com"
<coolbhavi> Please use your own name
<coolbhavi> and save the file
<coolbhavi> :)
<coolbhavi> and type source ~/.bashrc
<coolbhavi> to update
<ClassBot> There are 5 minutes remaining in the current session.
<coolbhavi> so 5 minutes remain and that should get you setup your ubuntu box as a dev environment
<coolbhavi> If there are no questions thats it for now
<coolbhavi> and I ll take you through different processes in the coming days
<coolbhavi> so assuming its all fine now
<coolbhavi> thanks guys for  those who have turned up
<coolbhavi> to this session
<coolbhavi> I hope to continue this and explain various processes involved in ubuntu development in the coming days
<coolbhavi> thanks again
<coolbhavi> QUESTION: You say something about the coming days, but I don't see anything about that in the Learning Events Calender. Where and when will you be going to handling it?
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/01/30/%23ubuntu-classroom.html
* 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 || Survey: http://tinyurl.com/UUDSurveyJan11 ||
<coolbhavi> MrChrisDruif, I intend to have these sessions here only every fortnight
<coolbhavi> so the session ended
<coolbhavi> :)
<abhijain> coolbhavi, ? error in installation :Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
<coolbhavi> abhijain, can you please run sudo apt-get install -f and have output in a pastebin?
<abhijain> coolbhavi, ok
#ubuntu-classroom 2012-01-23
<zamHC> hi!!
<benonsoftware> Hello zamHC
<zamHC> hello
<zamHC> where are you from benonsoftware??
<zamHC> hi nixmaniack
<nixmaniack> zamHC, Hi
<zamHC> what are you doing here?
<nixmaniack> I don't know.. I'm subscribed to this channel!
<zamHC> same like me...
<zamHC> huhuhhu.
<nixmaniack> Is some class going one?
<zamHC>  i think only on UBUNTU USER day
<zamHC> last 14th-15th
<nixmaniack> hmm.. and in that case we aren't allowed to talk here
<nixmaniack> we use u-c-chat
<zamHC> but so many already sign-in right now
<nixmaniack> right?
<nixmaniack> it's always the case
<philipballew_> zamHC, nixmaniack if you gays are here for a session there isnt one, if you want support try #ubuntu or if you just want to talk message each other
<philipballew_> no worries :)
<zamHC> sorry
<nixmaniack> philipballew_, :P that was pretty offensive!
<nixmaniack> but sorry !
<zamHC> don't be angry okey!!
<philipballew_> nixmaniack, i want trying to be :(
<zamHC> if angry, just play angry bird...
 * nixmaniack leaving channel...
#ubuntu-classroom 2012-01-24
<terminal> hey guys just got ubuntu 11.10 anybody have a good idea as to what IRC client I should use?
#ubuntu-classroom 2012-01-25
<blackhex666> no new Schedule?
<nigelb> nothing's finalized yet.
<blackhex666> so when you gonna find out??
<nigelb> There's ubuntu developer week coming up next week.
 * benonsoftware wishes he could attend them
<IfailUbuntu> alguem pt?
<IfailUbuntu> Alguem portugues?
<pangolin> !br
<ubot2`> Por favor, use #ubuntu-br para ajuda em portuguÃªs. Para entrar no canal por favor faÃ§a "/join #ubuntu-br" sem as aspas. Para a comunidade local portuguÃªsa, use #ubuntu-pt. Obrigado.
#ubuntu-classroom 2012-01-26
<dhana013> HI
<dhana013> Hi guys. I want make custom distro. It's based on ubuntu derivative. but not depends on ubuntu
<dhana013> How to compile source code from scratch
<dhana013> make deb packages, please guide me.
<benonsoftware> dhana013: Maybe #ubuntu-devel might be better, also next week we have the Ubuntu Dev Week so see https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dhana013> thanks benonsoftware
<benonsoftware> No worries
<mani990> hello
<ingenium> hi
<ingenium> re
<Rehhoff> Anyone here ?
<Zta> Say "OMG!" if you got here though OMG! Ubuntu ;)
<pleia2> no classes going on right now, the next event is developer week: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<Rehhoff> OMG !
#ubuntu-classroom 2012-01-27
<ulah_albanjary> say hi :)
<awalone> hi
<rztjm> test
#ubuntu-classroom 2012-01-28
<pangolin> !logs
<tjiggi_fo> !logs-#ubuntu-classroom
<benonsoftware> tjiggi_fo: Do you need the logs?
<tjiggi_fo> benonsoftware, no thanks, was trying to get the bot to respond but have found out that "!lags-#ubuntu-classroom" has been deleted
<tjiggi_fo> s/!lags/!logs/
<benonsoftware> Ah thats ok
<benonsoftware> !pinh
<ubot2`> Factoid 'pinh' not found
<benonsoftware> !ping
<ubot2`> another contentless ping... sigh...
#ubuntu-classroom 2012-01-29
<vikram360> just a question: are there any 'hands on' sessions this time?
<pangolin> vikram360: the schedule is linked in /topic
<test_> I need to know how to seperate an account from it's root
<test_> (if that makes sense)
<test_> example
<test_> when i type sudo -s I get cam@julien
<test_> How do i get rid of the @ julien
<test_> I'm trying to encrypt my main sudo folder but it wont let me as it sayd 'im still logged in (despite using cam)
#ubuntu-classroom 2013-01-23
<webdril> Pls how do i join the class ?
<webdril> QUESTION:Pls how do i join the class ?
<webdril2> hello all
<webdril2> <$01
#ubuntu-classroom 2013-01-24
<amoma> gnome terminal wants to install a font. How disable it?
<coolbhavi> amoma, !ubuntu
<coolbhavi> oops wrong factoid I guess
<coolbhavi> amoma, please ask in #ubuntu for general ubuntu related questions
<JoseeAntonioR> !ubuntu | amoma
<ubot2> amoma: Ubuntu is a complete Linux-based operating system, freely available with both community and professional support. It is developed by a large community and we invite you to participate too! - Also see http://www.ubuntu.com
<JoseeAntonioR> !support
<ubot2> For general questions or support, please use our support channel, #ubuntu
* 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 || Current Session: Ubuntu Women Italy - Instructors: Dolasilla, Deindre
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/24/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> hi everyone :) if you have a question during the session, please ask in #ubuntu-classroom-chat and prefix it with QUESTION: so ClassBot picks it up
<Dolasilla> Hello everyone!
<Dolasilla> Deindre and me are here today to tell you something about our experience in bringing UbuntuWomen locally
<Deindre> Hi everyone!
<Dolasilla> with the hope that this can be of some inspiration for other loco teams
<Dolasilla> both me and Deindre belong to the Italian loco team
<Dolasilla>  Flavia and I met through the mailing list of UbuntuWomen. We both are confident enough in our English skills as we practice it on a more or less daily basis.
<Dolasilla> Flavia <-> Deindre ;)
<Deindre> Dolasilla <--> Silvia :)
<Deindre> My  experience showed me that generally women are shyer around than men,  and this behaviour becomes more evident in case women newcomers should  rely with people talking a different language.
<Deindre> This  is the main reason that pushed me and Silvia to open a localised branch  of UW, and now we have about 40 subscribers on italian mailing list
<Dolasilla> Secondly there comes a geographic barrier: one of the great strength point of loco teams is the proximity to people, also physically speaking: the italian loco team, for instance, organizes once or twice per year meetings in a location in Italy, to allow its members as well as its supporters to meet up.
<Dolasilla> Moreover, there is a practical limitation in any worldwide mailing list: time zones. Belonging to different timezones can be make communication more complicated.
<Deindre> But there are some cultural issues too
<Deindre> For  instance a big number of the people active in UbuntuWomen is based in  the US. This means that they share, to some extent, a given cultural  background that may not be completely known from whom has always been  living in other countries.
<Deindre> If  we consider that very often who writes to a mailing list is asking for  some help, and sometimes she/he's not able to explain her/his problem in  her/his mother-tongue, it's easy to plenty understand the sense of  completely strangeness than a newcomer women could feel.
<Deindre> But,  nevertheless, it seems to me that generally women prefer talk with  other women because that makes themselves feel more comfortable in  sharing their doubt, avoiding the risk, very often more dreaded than  real, of be kidded from a part of community.
<Dolasilla> so, what do we do, in practice? Actually our first goal is to provide a nice and welcoming place for Italian women who want to approach Ubuntu Community. A place where they can meet other women sharing the same passion, and that may help them and guide them in moving the first steps inside the loco team and the community.
<Dolasilla> So the first point is providing a network of "friends"
<Dolasilla> of other women sharing the same passions and the same free time activities
<Dolasilla> with whom you can have some exchange on more or less technical topics concerning ubuntu, open source, and the experiences as women in these environments
<Deindre> So, what could be a starting point?
<Deindre> menthorship :)
<Deindre> one  of the goal is indeed to provide mentorship to help people choosing an  activity inside the community and learning how to carry it ahead.
<Deindre> For  instance, we had a couple of sessions on IRC lately with members from  different teams (translations and development  ).
<Deindre> They  were explaining which are the activities of this team, which knowledges  are required. For example on the translation meeting we actually went  through how to work on the translation of the software, which are the  tools to use and so on.
<Deindre> We definitley consider a good menthorship the key for a succesful outreach
<Deindre> you need an Human touch :) menthorship is often that human touch you need to be involved
<Dolasilla> Anyways, as this project was born inside a loco team, it share some of the loco team goals, expecially the one of not only involving more people in the community but also making more people know and choose Ubuntu
<Dolasilla> of course, with a focus on women
<Deindre> a strong focus on women :)
<Dolasilla> For this reason, among the activity me, Flavia and the other women in the groop do is having talks at Ubuntu and open source events around Italy
<Dolasilla> and we also write from time to time posts on an italian blog, GirlGeekLife.com, targetting women with a passion for technology.
<Dolasilla> The posts are written by different women in our group and they cover different aspects of Ubuntu
<Dolasilla> starting from an hig level introduction and then going through the presentation of some open source tools
<Deindre> But it's really undubitable that there is another question on the table: the gender gap
<Deindre> Gender gap is probably "the" matter of fact, in a world that consider woman as a minority
<Deindre> So far the  fact that technology is a male dominated environment is really  indubitable. If we consider the FOSS ecosystem, the situation is even  worse.
<Deindre> Unfortunately  is not easy to break the vicious cycle that see women avoiding FOSS  because there aren't many women to relate with, and, from the other  side, building the correct relation between women and men in a  community, holding off the so-called white knight syndrome and the sense  of deep fellowship that very often men demonstrate against women.
<Deindre> This has a greater value in Countries, like Italy, and generally Latin Countries,  in which machismo writes behavioural rules between the two sexes.
<Deindre> The  fact that men, especially younger men, show to considerate women a not  very remarkable minority, is really an obstacle _de facto_ to outreach of  new women, and a certain loss for communities.
<Deindre> and Ubuntu community/communities
<Deindre> This is true even if, really, Italian community is really welcoming toward women
<Deindre> leaders of our community have always spent their effort to help women to feel a comfortable place to stay
<Dolasilla> Let's move a step behind to the beginning, to explain the steps we did to create the group
<Dolasilla> When Flavia wrote me proposing me to create a local edition of UbuntuWomen in order to overcome the language/cultural barrier I immediately said yes.
<Dolasilla> At the time I was not yet part of the Italian loco team (I barely knew it existed). So first, I got engaged in it, and being involved in a loco team is a great experience.
<Dolasilla> Then, with the help and support of members of the loco team, we set up the group, starting with a wiki page and a mailing list
<Deindre> When I met Silvia instead, I was already Ubuntu-it member
<Deindre> I saw in her the possibility to make true my old dream to have an Italian Women team.
<Deindre> When  I joined Ubuntu community in 2007, I have heard about a women forum,  and my disappointment when I have discovered is only english-speaking  was really huge.
<Deindre> Of course Iâm really grateful to Ubuntu Women project, this project has been for me of great inspiration, but I felt something was missing. Â 
<Deindre> In  Silvia Iâve found the right person to rely with, passionate, with the  same view of the problem and the technical skills I lacked.
<Dolasilla> Once the wiki and the mailing list were set, we started making some âadvertisementâ about it on the different channel of the community, including planet, forum and IRC chat. It worked pretty well
<Dolasilla> We gathered something like a 15 people in the first month
<Dolasilla> We use the mailing list as main channel to coordinate project, discuss topics and bring the main news coming from the international mailing lis
<Dolasilla> And the wiki as an introduction page and to keep trace of the ongoing projects and related materials
<Dolasilla> this is the wiki page we use http://wiki.ubuntu-it.org/GruppoPromozione/UbuntuWomen
<Dolasilla> (of course in Italian)
<Deindre> We  tried to make links to other women involved in FOSS, setting Â mailing  list in which we talk and share projects regarding female universe
<Deindre> Finally, we  never meant to found a different âgroupâ from UW, but build a bridge  between international environment and Italian feminine IT related  underlayer.
<Deindre> I donât know if our could be considered a successful pattern,
<Deindre> I hope, we hope, of course :)
<Deindre> but  what I really believe is that difficulties women meet in different part  of the world depends from cultural, language and social factors that  very often is not possible to compare with luckier anglo-american  experience.
<Deindre> During last UDS in Copenhagen I met many European women coming from mediterranean area
<Deindre> nd  they told me that they felt their experience close to mine, so I really  hope that our work and our effort could be sharable and helpful for  many other women communities.
<Deindre> *and
<Deindre> Silvia and me' d be very proud of this outcome :)
<ClassBot> Cheri703 asked: What do you feel was the biggest obstacle to getting started?
<Dolasilla> So basically what we tried to tell you here this evening is a bit of our experience in bring UbuntuWomen project loco
<Dolasilla> Cheri703, to me it was to fight against shyness ;)
<Dolasilla> to take initiative, discuss with the members of the loco team and explain why we felt this need
<Dolasilla> but it was easy in the end, thanks to the great people in our loco team
<ClassBot> There are 10 minutes remaining in the current session.
<Deindre> Cheri703: the obstacles I met has been technical: I don't have any idea about how to open and manage a mailing list, for instance. Silvia has been super :)
<Dolasilla> so this is more or less what we wanted to share, if you have any question in these last 10 minutes we will be happy to answer!
<ClassBot> Cheri703 asked: Have you gotten much opposition from a "you are being sexist by having a separate group!" standpoint? Like we get with general U-W? I don't know if that's a primarily american thing.
<Deindre> Cheri703: a very important question
<ClassBot> There are 5 minutes remaining in the current session.
<Deindre> Cheri703: there is been some feeling "like UW-it is a crochet club", but generally it has changed very fast
<Deindre> we open our mailing list to interested men
<Deindre> one of our admin was a men
<Deindre> very respectful of our initiative
<Deindre> ok, we were not able to erase every bad thought about this project
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/24/%23ubuntu-classroom.html
<pleia2> looks like we're about out of time, thanks Deindre and Dolasilla!
* 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
<cambrianExplosio> Hi everyone, I am having a bit of difficulty with ubuntu on a macbook, and wondered if anyone could help out?
<pleia2> cambrianExplosio: you want #ubuntu for support
<pleia2> (this channel is for scheduled classes :))
<cambrianExplosio> thanks :)
<cambrianExplosio> sorry :(
<pleia2> no worries, good luck!
<cambrianExplosio> thanks :)
#ubuntu-classroom 2013-01-25
<dipapate> hi
<JoseeAntonioR> hello, dipapate, how may I help you?
#ubuntu-classroom 2014-01-21
<brisk2> hi my first time on this channel. ubuntu classes are taught on this channel? not sure what happens here.
<hggdh> brisk2: yes, they are. The schedule is available at http://is.gd/8rtIi . sEE THE CHANNEL TOPIC FOR DETAILS
<hggdh> sorry for the caps
<brisk2> np thanks
<brisk2> is there a charge for these classes?
<hggdh> brisk2: nothing in Ubuntu is charged
<brisk2> nice
#ubuntu-classroom 2014-01-25
* 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 User Days - Current Session: Introduction to User Days - Instructors: pleia2
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> hello everyone! :)
<pleia2> welcome to Ubuntu User Days
<pleia2> https://wiki.ubuntu.com/UserDays
<pleia2> the User Days Team has been working hard these past few weeks in order to bring you a series of sessions that will last for the next several hours
<pleia2> we have members from many teams in the Ubuntu community here today who have graciously volunteered to share their knowledge with all of us
<pleia2> before we begin with sessions in a half hour, we would like to get a quick feel for who is here. If you are here, please say your name and where you are from (as much as you're comfortable with :))
<pleia2> this channel is unmoderated at the moment, so you can talk
<pleia2> well, I'm Lyz and I'm from San Francisco, it's bright and early 6:30AM here, the sun hasn't come up yet ;)
 * coolbhavi just reads and waves :)
<pleia2> thanks coolbhavi!
<pleia2> shy people today
<tgjk> okay, I'm Thomas and come from Germany. The time's half past three.
<pleia2> cool, welcome tgjk!
<pleia2> anyone is welcome to chime in as they come by during this session, but moving on, a few of you are probably wondering what User Days are all about
<pleia2> User Days were created to be sets of classes offered during a one day period to teach the beginning or intermediate Ubuntu user the basics in order to get them started *using* Ubuntu
<pleia2> this is in contrast to some of our other events, which focus on development and other ways to get *involved* with Ubuntu
<pleia2> as such, the full schedule for today is focused on sessions about Ubuntu, about Ubuntu flavors, a tour of the Desktop (Unity) how to find help, and more
<pleia2> direct link to the full schedule can be found here: https://wiki.ubuntu.com/UserDaysTeam/saucy
<pleia2> now for a quick rundown of how today will work:
<pleia2> each hour, an instructor will be giving a class in this channel, #ubuntu-classroom
<pleia2> during the classes, #ubuntu-classroom will be moderated (+m). This means that only the instructor and hosts will be able to talk in the channel
<pleia2> (it's not moderated right now, since we wanted to give you a chance to say hello)
<pleia2> any discussion about the class should take place #ubuntu-classroom-chat
<pleia2> so please join there too if you haven't already :)
<pleia2> if you have a question during the class, please ask in #ubuntu-classroom-chat. Be sure to prefix it with 'QUESTION:' to ensure that it gets noticed. For example:
<pleia2> QUESTION: What are Ubuntu User Days?
<pleia2> Anyone wanna give it a try? :)
<ClassBot> pleia2 asked: Do you like cats?
<pleia2> I love cats!
<ClassBot> tgjk asked: Does it matter if I use Linux mint?
<pleia2> great question :) many of the packages in Mint come directly from the Ubuntu repositories, so much of the operating system is the same
<pleia2> you may not get much from the Unity session, but others are applicable to Ubuntu derivities
<pleia2> now, after each session, our group of volunteers will post the IRC logs to the wiki as soon as possible
<pleia2> so if you miss a session or just want to review what you learned, be sure to check out https://wiki.ubuntu.com/UserDays for links to logs (the subject will become a link)
<pleia2> if you can't wait, Logs will also be automatically posted on http://irclogs.ubuntu.com near the end of each hour (ClassBot also shares this link at the beginning of each session)
<pleia2> and please be sure to remind all of your friends and family who might be interested in using Ubuntu that this event is taking place today. https://wiki.ubuntu.com/UserDays/JoiningIn has some information about how they can participate
<pleia2> finally, before we move on to answering any more questions about Ubuntu User Days that you might have, I would like to give a big thanks to everyone who has helped make this day possible :)
<pleia2> jose has done a great job tracking down speakers and following up to confirm
<pleia2> he's also running another real life event today, but will join us later - busy guy!
<pleia2> and of course to all the instructors who volunteered their time over the weekend to share their knowledge with us
<pleia2> anyone have any questions about how this day will work?
<ClassBot> There are 10 minutes remaining in the current session.
<pleia2> ok folks, we're coming up on the first session in 5 minutes
<ClassBot> There are 5 minutes remaining in the current session.
 * pleia2 gives ClassBot a cookie
* 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 User Days - Current Session: Introduction to Ubuntu - Instructors: jose
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<jose> so, hello everyone!
<jose> welcome to the Introduction to Ubuntu
<jose> here, I'll explain some bits about Ubuntu in general
<jose> so, let's get started!
<jose> Ubuntu is an operating system based on Debian, and it's a Linux distribution
<jose> Ubuntu is supported by lots of people around the wold, we have a huge community
<jose> as you know, it's available for its free download at ubuntu.com
<jose> we have releases every 6 months
<jose> and each release is codenamed with an adjective and an animal
<jose> and also has its version number from the year.month it's released
<jose> our latesr version is 13.10, codenamed Saucy Salamander
<jose> we have different versions, for Desktop, Server, Cloud and Touch respectively
<jose> so, any questions until now?
<jose> feel free to ask at any moment
<ClassBot> SuprEngr asked: can Ubuntu stop the heavy rain & lightning?  ;)
<jose> it can!
<jose> Ubuntu has super powers, but you'll have to discover them yourself ;)
<jose> so let's move on
<jose> you can download Ubuntu at different servers
<jose> first, we have ubuntu.com for the latest Long Term Support release
<jose> and also the latest released version
<jose> then we have relases.ubuntu.com where you will find all the supported versions
<jose> and old-releases.ubuntu.com, where you can find versions that are no longer released
<jose> talking about releases, we have regular versions and LTS versions
<jose> (LTS stands for Long Term Support)
<jose> regular releases are supported for 9 months
<jose> while LTS releases are supported for 18 months
<jose> those terms are both on Desktop and Server
<jose> any questions?
<jose> moving on
<jose> if you want to download Ubuntu via torrent, you will be able to find the .torrent file on releases.ubuntu.com
<jose> the .iso file you download can be put on a USB (further instructions at ubuntu.com)
<jose> or can be burned onto a CD/DVD
<jose> oh, mistake on my side, LTSs are supported for 5 years
<jose> (ages ago it was 18 months :) )
<jose> back to the .iso part
<jose> it works as installation media
<jose> and also as a LiveUsb/CD/DVD
<jose> so you can go ahead and try Ubuntu on your PC without installing anything or modifying your system
<jose> the interface for installation/trial is self explanatory
<jose> so it's quite easy for anyone to do it :)
<jose> any questions so far?
<jose> let's continue then
<jose> Ubuntu was founded by Mark Shuttleworth, a South African guy who has been to space
<jose> and the project is backed by Canonical
<jose> and lots of contributors around the world, like pleia2 and I :)
<jose> the community grows every single day, and if you want to join you're totally welcome to
<jose> now, we also have different flavors, but we'll have a session that explains some of them later on
<jose> if you want to get support, then benonsoftware's session is the most appropriate for that, also make sure you stay tuned!
<jose> but in the meanwhile, #ubuntu here, on irc.freenode.net and askubuntu.com are your best bets :)
<jose> now, let's check if there are any other questions...
<ClassBot> SuprEngr97 asked: ââis it worth mentioning the definition of "ubuntu"?
<jose> sure, Ubuntu is an african word which means 'a shared humanity'
<jose> so pass the word about Ubuntu to friends, family, whoever it may be, share the spirit! :)
<jose> well, that's all for me folks!
<jose> I'm at a local event, so I need to run other events :)
<jose> make sure to stay tuned for other sessions!
<jose> thanks for being here, and enjoy the rest of User Days!
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
<coolbhavi> Hey, hows everyone doing?
* 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 User Days - Current Session: Command Line Made Easy - Instructors: coolbhavi
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<coolbhavi> Hopefully you have enjoyed intro session and I'm hopefully not going to bore you much :)
<coolbhavi> Now to start us off, I'm going to go over some of the ulta basics of the  CLI and why you would want to learn it a little way
<coolbhavi> ultra*
<coolbhavi> then we will have some time for questions as it goes with other sessions
<coolbhavi> to get introduced, I'm Bhavani Shankar a ubuntu developer and a contributor just like other millions :)
<coolbhavi> OK now! lets get into some CLI
<coolbhavi> So why use the CLI or command-line-interface?
<coolbhavi> quoting some lines from man intro:
<coolbhavi> "Under Linux there are GUIs (graphical user interfaces), where you can point and click and drag, and hopefully get work done without first reading lots of documentation. The traditional Unix environment is a CLI (command line interface), where you type commands to tell the computer what to do. That is faster and more powerful, but requires finding out what the commands are."
<coolbhavi> this quote will give us a good starting point into where to get help, it intros us to the "man" command man is short for manual, and as part of Debian and thus ubuntu's policy every command on the CLI must have a manual page.
<coolbhavi> so you know where to find help :) and if you dont you can always file a bug :)
<ClassBot> phanimahesh asked: How do I access this CLI?
<coolbhavi> phanimahesh, I use unity so searching for terminal in dash or ctrl alt T keys would help
<coolbhavi> or on gnome
<coolbhavi> moving on :)
<coolbhavi> you can bring up this help as easy as typing "man <command>" like say "man ls" will bring the manual up for the ls command
<coolbhavi> ok now lets drop a few commands at once :)
<coolbhavi> what makes the CLI on linux and other UNIX and UNIX like OS's so unique?
<coolbhavi> ts ability to pipe commands into one another effectively chain them onto one another or make functions on the go or it can be treated as a programming language in itself
<coolbhavi> but we wont touch as much on that today as we are going a few basic samples
<coolbhavi> back to piping commands and example of ls
<coolbhavi> ls alone gives you a directory listing, like dir in windows
<coolbhavi> now from the man page we will add few flags and see what happens
<coolbhavi> it tells us we can add the -l flag to put the listing in vertical
<coolbhavi> or -a to show all files including hidden files
<coolbhavi> so we end up with someting like "ls -la"
<coolbhavi> this is great until you try it on your pictures collection directory :)
<coolbhavi> if its anything like mine it flows well off the screen way to fast to be useful
<coolbhavi> so we're gonna chain a command with it, or technically pipe the `ls` command into a second one
<coolbhavi> in this case we want to use a terminal "pager" like `less`
<coolbhavi> so to do this we are gonna do "cd ~/Pictures" then "ls -la|less"
<coolbhavi> this will take the output from ls and before it shows it to you "pipe" it to the less command
<coolbhavi> the less command then will show us one "page" at a time moving to the next with spacebar
<coolbhavi> more info on less can be found with ... man less :)
<coolbhavi> but this showed us putting two commands working as one, that is a fundamental part of the Linux CLI
<coolbhavi> It also allows for other things too like "ls -la|uniq" will remove duplicates
<coolbhavi> or "ls -la|uniq|sort" will remove duplicates then sort them by alpha order
<coolbhavi> you can chain or pipe indefinitely :) another command which finds good usage is cut
<coolbhavi> ls -la|cut -f 1 -d " "|uniq
<coolbhavi>  i'll leave you with this command to look in the manual and find out what its doing
<coolbhavi> one more nice feature of the cli is aliases
<coolbhavi> this is a very handy feature for those that use things like "ls -la" a lot of times
<coolbhavi> you can simply `alias ab="ls -la"`
<ClassBot> SuprEngr asked: ââwhat happens if I type "man cut"?  [ouch!}
<coolbhavi> SuprEngr, manual for the cut command comes up :)
<coolbhavi> and then when you type ab , it runs the `ls -la` commmand in its place
<coolbhavi> ( until you close the terminal ) to make the command persistent, edit the .bash_profile file in your home directory and add it to the bottom
<coolbhavi> then next time you open terminal that will automatic be set for you and you can use ll right away ( there are also other commented out examples of common aliases in the bash_profile file already )
<coolbhavi> you can also override the ls command itself
<coolbhavi> like `alias ls='ls -la'` then when you run ls which runs the -la switch when u run ls
<coolbhavi> but be very carefull doing this, you can overide important commands by accident, the easiest way to tell safely if your shortcut is already a system command is to use the "which" command
<coolbhavi> like "which ls" will tell you either it doesnt exist and is safe to alias, or it will return the location of the ls binary program than it would run if you had used it.
<coolbhavi> and one more important thing here is dont just type in the command to see if it exists because dangerous commands like rm and dd can wreck the system
<coolbhavi> I'll cover a bit more basic samples but will leave some gap for any questions now :)
<ClassBot> IdleOne asked: is it possible to reload the bash profile without restarting my terminal?
<coolbhavi> IdleOne, you need to source the file to effect that
<coolbhavi> source ~/.bash_profile
<coolbhavi> ok :) lets move on then :)
<coolbhavi> pwd: The pwd command will allow you to know in which directory you're presently in (pwd stands for "print working directory").
<coolbhavi> this is a good one to have rembered so you can easily tell where you are on the system
<coolbhavi> so if you do it as soon as you open the terminal you get something like "/home/bhavani/" returned
<coolbhavi> telling us we are in our home directory
<coolbhavi> also there are 2 handy shortcuts for changing dir's that you'll likely see a lot
<coolbhavi> the first being ~
<coolbhavi> ~ expands in bash ( the CLI program ) to the current users home dir
<coolbhavi> so "cd ~/Desktop" will take me to my desktop
<coolbhavi> and the other is - ( minus )
<coolbhavi> so once we had "cd ~/Desktop" we can then "cd -" and that will take us to the directory we were last in no matter where we were
<coolbhavi> So these where some basic samples which I hope would get you started with cli
<coolbhavi> https://help.ubuntu.com/community/UsingTheTerminal is an excellent page to start off with
<ClassBot> There are 10 minutes remaining in the current session.
<coolbhavi> any more questions welcome :)
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> tgjk asked: Is here a possibility to read the STDERR?
<coolbhavi> tgjk, havent tried through a command per se but have mostly redirected those in my experience like file.out 2>&1 | tee output
<coolbhavi> thats it guys I hope you enjoy rest of the sessions lined up :)
* 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 User Days - Current Session: Launchpad Basics - Instructors: phanimahesh
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<phanimahesh> Hello everyone!
<phanimahesh> I am Mahesh, and I've been using ubuntu since 2006.
<phanimahesh> I will talk about Launchpad today.
<phanimahesh> Outline:
<phanimahesh>  - What is Launchpad
<phanimahesh>  - OpenID
<phanimahesh>  - Launchpad Answers
<phanimahesh>  - Reporting Bugs
<phanimahesh>  - Translations ( if time permits)
<phanimahesh> I will handle questions after I finish with each of the topics.
<phanimahesh> Firstly, what is Launchpad?
<phanimahesh> Launchpad is an open source suite of tools that help people and teams to work together on software projects.
<phanimahesh> It brings communities together by making it easy to share code, bug reports, translations and ideas across projects.
<phanimahesh> Launchpad provides many services, but as a user, you will likely be interested in OpenID, Launchpad Answers, Reporting Bugs, and Contributing translations.
<phanimahesh> I will cover each of these topics briefly.
<phanimahesh> You will need a Launchpad account before you can use some services. It's free, and takes less than a minute to get started.
<phanimahesh> Its as simple as going to Launchpad.net, clicking on login/signup at top right, then filling out name, email and password.
<phanimahesh> You shouldn't face any issues, but in case you get stuck,
<phanimahesh> a detailed documentation is available at https://help.launchpad.net/YourAccount/NewAccount
<phanimahesh> If you do not already have an account, please register one. (After the sessions.)
<phanimahesh> Now, What is OpenID?
<phanimahesh> If each website starts asking us to create an account, all hell breaks loose. ;)
<phanimahesh> people reuse passwords in different sites, which is very bad practice.
<phanimahesh> openID tries to solve this problem.
<phanimahesh> Open ID allows you to use an existing account to sign in to multiple websites, without needing to create new passwords.
<phanimahesh> It works this way.
<phanimahesh> Launchpad is an openID provider.
<phanimahesh> an OpenID provider is some website you trust, who will verify your identity for others.
<phanimahesh> If you need to login to a openID enabled site, use your profile URL as the openID.
<phanimahesh> Your profile url would be https://launchpad.net/~your-nickname
<phanimahesh> For example, mine is https://launchpad.net/~phanimahesh
<phanimahesh> You will be redirected to Launchpad.
<phanimahesh> BTW, the nickname is your Launchpad user id, not IRC nick.
<phanimahesh> If you are not already logged in, you will have to log in to Launchpad, and then allow the website to know your identity.
<phanimahesh> It'll return you to the site you want to use, andyou will be logged in.
<phanimahesh> This means that you can use any openID enabled site if you remember your launchpad nickname, and password.
<phanimahesh> If it sounds familiar, yup, you might have seen a similar process while using "Login with Google" or Login with facebook.
<phanimahesh> Infact, Google, Yahoo, Wordpress, Facebook, AOL are also openID providers.
<phanimahesh> So, where can you use openID?
<phanimahesh> You can use openID to log in to Blogs on blogger, wordpress (using an openID plugin), LiveJournal, and a growing number of sites.
<phanimahesh> A more detailed list can be found at http://en.wikipedia.org/wiki/OpenID#Adoption
<phanimahesh> To learn more about the benifits of openID, visit http://openid.net/get-an-openid/individuals/
<phanimahesh> Okay, so any questions so far about OpenID with Launchpad?
<phanimahesh> Let's move onto Launchpad Answers.
<phanimahesh> While mailing lists, web forums, and IRC are great places to find help with free software, they do have a couple of shortcomings:
<phanimahesh> There's no way to track the progress of a question and knowledge about the software is spread across different places.
<phanimahesh> Launchpad Answers is unique in that it works like a bug tracker.
<phanimahesh> It notifies volunteer support contacts of new questions, builds a searchable knowledge base of good answers, and allows people to ask questions and offer support in different languages.
<phanimahesh> Using Launchpad Answers is easy, first off, visit the Answers page at https://answers.launchpad.net/ubuntu.
<phanimahesh> Click on the "Ask a Question" link in the right top of the page.  Next, type good summary to your question.
<phanimahesh> "Please help me!" or "I need help" is not a good summary ;)
<phanimahesh> So what is a good summary?
<phanimahesh> A good summary should be able to describe your problem briefly.
<phanimahesh> If it is a big project and I am one of the people that help with only some issues, I should be able to say if I can deal with it or not, by looking at the summary.
<phanimahesh> Infact, that is the primary use of summaries.
<phanimahesh> Click on next, and Launchpad will now search for existing questions that look similar.
<phanimahesh> If it finds any, it will show you them.
<phanimahesh> If Launchpad doesn't find any similar questions, or those it finds are unhelpful to you, you can write a more detailed description of your problem and submit your question.
<phanimahesh> This also means that good summaries allow you to see relevant existing questions very quickly.
<phanimahesh> You will not need to post another question and wait for the answers if an existing question answers your question.
<phanimahesh> Once you've added your question, Launchpad emails anyone who's volunteered to be an answer contact for your language.
<phanimahesh> Most work on Launchpad is done by volunteer users, like you and me.
<phanimahesh> They can then ask you for more information or offer an answer. Launchpad will then email you whenever your question changes, such as when someone suggests an answer.
<phanimahesh> The project maintainers can see list of unanswered questions, and this is one of the nice features that mailing lists don't have.
<phanimahesh> So, any questions before we move on to bug reporting?
<phanimahesh> Askme to slow down if i am going too fast. i tend to do that, at times.
<phanimahesh> okay. looks like we have no questions.
<phanimahesh> Either I'm being awesome or my class is boring. :P
<phanimahesh> Moving on to bug reports..
<phanimahesh> Ubuntu is one of the many projects that use LP as their bug tracker.
<phanimahesh> Some good practices for any bug reporting system:
<phanimahesh> Always remember that while reporting a bug, it is absolutely essential that you provide all information that you can.
<phanimahesh> there's a saying that goes along the lines of "you can never provide too much of information."
<phanimahesh> The people who help with the bug triaging are volunteers. And if they have to spend time getting more information, it slows down things a lot.
<phanimahesh> In general, three things are important in a bug report.
<phanimahesh> a) What was expected to happen?
<phanimahesh> b) What actually happened?
<phanimahesh> c) What is the minimum series of steps that can make it happen?
<phanimahesh> The last one is important because if I am a triager and I need to confirm a bug, I should be able to "make it happen".
<phanimahesh> If I am a developer and I fix a bug, I need to verify that my fix actually works.
<phanimahesh> "making it happen" is called reproducing the bug.
<phanimahesh> You may see people calling it repro for short.
<phanimahesh> Now, coming back to Ubuntu,
<phanimahesh> Launchpad allows you to report a bug from browser, but most of the time, some necessary information will be missing. hence the recommended way is to use Apport.
<phanimahesh> Ubuntu has a nice helper called Apport. It is the bug report generator.
<phanimahesh> It will collect the necessary information, and open a browser for you to fill in the missing details.
<phanimahesh> for more information about apport, see https://wiki.ubuntu.com/Apport
<phanimahesh> So, I found a bug. What do I do?
<phanimahesh> Most programs usually have a "Report a bug" menu entry in help menu.
<phanimahesh> help -> report a bug or report a problem
<phanimahesh> Clicking on it will start Apport, and the program will guide you.
<phanimahesh> Sometimes, you can not use the menu.
<phanimahesh> There is no such entry, or the application may not be responding, or the problem is an infrastructure component like Linux kernel, Graphics system, sound system etc.
<phanimahesh> In those cases, you can type ubuntu-bug <packagename> in a terminal to start Apport.
<phanimahesh> As coolbhavi said, you can access terminal by pressing Ctrl+Alt+T in Unity or Gnome.
<phanimahesh> KDE users can use Konsole.
<phanimahesh> If you don't know the package name, or if you are not sure, people in #ubuntu-bug will be happy to help.
<phanimahesh> Round the clock, there is almost always someone in there who is listening.
<phanimahesh> If you do not get a reply immediately, wait some time. People may not always be looking at their chat windows.
<phanimahesh> To know more about finding the right package, please see https://wiki.ubuntu.com/Bugs/FindRightPackage
<phanimahesh> there are these people called bug hunters. They search for bugs and report them.
<phanimahesh> We love them!!
<phanimahesh> In case you have plans to get started along that route, it is a must for you to read that section.
<phanimahesh> And also https://wiki.ubuntu.com/Bugs/ReportingBugs
<phanimahesh> To file a bug against a program that is currently running, go to System > Administration > System Monitor, and find the ID of the process:
<phanimahesh> Or if you are not afraid of command line, you should be looking at ps
<phanimahesh> Yup, "ps" is the command that can list running processes. Or you can use "top"
<phanimahesh> for example https://help.ubuntu.com/community/ReportingBugs?action=AttachFile&do=get&target=system-monitor-id.png
<phanimahesh> This shows the system monitor screenshot
<phanimahesh> Then you can type ubuntu-bug <pid> in the terminal to start Apport.
<phanimahesh> It will figure out the correct package and include information about running process that makes it easy to debug and fix.
<phanimahesh> You may not always have internet connection.
<phanimahesh> If you are offline, or if the bug prevents you from connecting to internet, Using the `command apport-cli -f -p <package name>` on the target system will collect information and provide you with an option to "Keep report file for sending later or copying to somewhere else".
<phanimahesh> oops, I misplaced a backtick.
<phanimahesh> apport-cli -f -p <package name>
<phanimahesh> that is the command.
<phanimahesh> (Backticks are a common way of enclosing commands. It has some special meanings in terminal. google to find out more)
<phanimahesh> The report is then saved on the target system, in your /tmp directory which is cleared out on reboot, with a .apport extension.
<phanimahesh> So before you shut down the machine, copy the file somewhere safe.
<phanimahesh> After copying it to a different system you can file that report using `ubuntu-bug  <location of apport file>`.
<phanimahesh> All translations bugs (spelling mistakes, wrong translations, spell check errors, language support issues) should be reported against a special package called 'ubuntu-translaions'.
<phanimahesh> From there, the BugSquad will triage them and assign them to the right person and package.
<phanimahesh> oh, and BugSquad is not an alien force! Its volunteers again! If you are interested in helping, drop by at #ubuntu-bugs
<phanimahesh> If for some reason you cannot file a bug through the Apport tool you can file one via Launchpad.
<phanimahesh> When doing so please ensure that you have determined which package it should be filed against.
<phanimahesh> To report a bug when you don't know the package name
<phanimahesh> You can use https://bugs.launchpad.net/ubuntu/+filebug/?no-redirect
<phanimahesh> Please use this as a last effort, in case you can absolutely not find the package.
<phanimahesh> Again, if you need help with filing a bug, do drop by at #ubuntu-bugs.  We'd be happy to help
<phanimahesh> If you have already reported a bug directly via Launchpad, but want to add additional debugging information via Apport to the bug, you can do this by running the command "apport-collect BUGNUMBER"
<phanimahesh> Any questions so far?
<phanimahesh> okay. Moving on..
<phanimahesh> Only describe a single problem per bug report so that each can be followed up on in detail.
<phanimahesh> If you experience several issues file separate reports.
<phanimahesh> Add supporting attachments to explain or help others reproduce your bug.
<phanimahesh> This might include a screenshot or video capture of the problem or a sample document that triggers the fault.
<phanimahesh> To add an attachment to the bug use the Include an attachment section of the bug form.
<phanimahesh> Additional attachments, if necessary, can be added after the bug is reported via Add a comment/attachment at the bottom of the page.
<phanimahesh> For anything hardware related, give precise details about your hardware. Attaching the output of "lspci -vvnn" and "dmesg", after a fresh boot, will help a lot.
<phanimahesh> https://bugs.launchpad.net/dkimpy/+bug/1272724
<phanimahesh> That is the latest bug reported on launchpad.
<phanimahesh> Let me explain some sections on that page.
<phanimahesh> you'll see a green text "This bug affects 1 person. Does this bug affect you?"
<phanimahesh> If you click it and answer yes, the number after the fire icon, called bug heat, will increase. It helps highlight important bugs, and also subscribes you to the bug report.
<ClassBot> There are 10 minutes remaining in the current session.
<phanimahesh> (Assuming you are logged in)
<phanimahesh> Please dont click that button if your bug is a hardware bug.  The same issue can be caused by several different hardware and each need to be different bugs.
<phanimahesh> You will see a 'status' in the bug report. A bug report can be in several states.
<phanimahesh> When you report a bug, it is marked 'New'. if someone can confirm it, they will change it to confirmed. please do not confirm your own bugs. that makes having two statuses pointless.
<phanimahesh> If some information is missing, they will set the status to incomplete, and ask for information. Do not hesitate to change it to New, AFTER you have supplied the information that was asked.
<phanimahesh> If you are using a development version and a program crashes, Apport will kick in automatically.
<phanimahesh> You will get a popup asking if you would like to report a bug, and it will collect most of the necessary information for you.
<phanimahesh> Don't worry, it will ask for your permission before collecting, and shows the data and asks, before sending it to LP.
<phanimahesh> Make sure you write down what you were doing while it happened.
<phanimahesh> Moving on to what is NOT a bug.
<phanimahesh> Support requests - please use IRC (#ubuntu), forums, LP answers, Ask Ubuntu, or other community support means.
<phanimahesh> feature and policy discussions (including suggestions to change defaults) should be discussed on ubuntu-devel-discuss mailing list.
<phanimahesh> Small feature requests to software, especially those that are not installed by default, can be asked by filing a bug.
<phanimahesh> Development ideas should be posted to http://brainstorm.ubuntu.com/ or discussed on the ubuntu-devel-discuss mailing list.
<phanimahesh> Already filed -  if its a software bug and already filed, then better subscribe to the one already filed and add additonal information if any
<phanimahesh> Alright! Question time!
<phanimahesh> Sorry folks, there isn't enough time left to cover translations.
<phanimahesh> here is one of my answers on How do I report a Bug (http://askubuntu.com/a/137915/45659)
<phanimahesh> A more complete guide can be found at https://help.ubuntu.com/community/ReportingBugs
<phanimahesh> People in #ubuntu and #ubuntu-bugs will be happy to help if you need further assistance.
<phanimahesh> Oh, and if it is a hardware bug, have a look at http://askubuntu.com/questions/14008/i-have-a-hardware-detection-problem-what-logs-do-i-need-to-look-into/14126#14126
<phanimahesh> In case you get stuck, you will find everything you need at https://help.launchpad.net/
<ClassBot> There are 5 minutes remaining in the current session.
<phanimahesh> And you know what? LP uses itself for code hosting and bug management.
<phanimahesh> (often done in Opensource circles. its called dogfooding)
<phanimahesh> using your own tools.
<phanimahesh> So if you find a problem with launchpad, you can report a bug against launchpad project!
<phanimahesh> Alright! now philipballew will take over.
<phanimahesh> Thanks for being here, and have a good day!
<philipballew> It's about that time
* 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 User Days - Current Session: Unity: Tips, tricks and configuration - Instructors: philipballew
<philipballew> Lets give a virtual round of applause to phanimahesh for that last session.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<philipballew> Well if the irc nic does not explain it,I am Philip Ballew.
<philipballew> Coming at you live from San Diego today with a high of 24 C/ 75 F today.
<philipballew> My session is on Ubuntu Unity.
<philipballew> I will go over some features it has.
<philipballew> Some things you can do with it.
<philipballew> and move into a few customizations with it.
<philipballew> If we have time, and I assume we will, I will go over some pointers with using the system, and then go into some q&a with all of you.
<philipballew> alright. Here we go:
<philipballew> First off when you install ubuntu, there are a few things I recommended doing first.
<philipballew> the first is making sure you are using the right graphics driver, just to make sure it does not make unity look poor if you are not.
<philipballew> An easy link to find some ways to work on Unity can be found at http://www.omgubuntu.co.uk/2013/10/10-things-installing-ubuntu-13-10
<philipballew> lets look at a few of them.
<philipballew> The way that I like to work on unity to see all of its features to to just tinker with it.
<philipballew> now a disclaimer: If you break your system do not get mad at Ubuntu, me or your computer.
<philipballew> these things happen.
<philipballew> alright.
<philipballew> a nice piece of software to use in ubuntu tweet
<philipballew> *tweek
<philipballew> it provides many features to make the unity interface something you can call your own.
<philipballew> Here is a screenshot of the things it provides: http://www.omgubuntu.co.uk/wp-content/uploads/2013/10/unity_tweak_tool_310.png
<philipballew> props to Joey for OMG also.
<philipballew> also perhaps you do not like the window buttons on the side that they are, so you can also move them with this software.
<philipballew> alright, want to feel cool now?
<philipballew> awesome!
<philipballew> lets open up bash
<philipballew> with unity you can open a terminal easily with ctrl + alt + T
<philipballew> I just did it myself and you can to!
<philipballew> http://www.webupd8.org/2013/10/8-things-to-do-after-installing-ubuntu.html
<philipballew> here, this article explains some ways to install some indicators to your desktop.
<philipballew> let us use the weather indicator as an example.
<philipballew> sudo add-apt-repository ppa:atareao/atareao
<philipballew> sudo apt-get update
<philipballew> sudo apt-get install my-weather-indicator
<philipballew> now remember ppa's can be tricky sometimes
<philipballew> but they can also be fun,
<philipballew> This will create a nice weather info indicator in the top bar of unity.
<philipballew> alright
<philipballew> some other cool parts of unity is its ability to use the dash to search for things online.
<philipballew> lets look at those
<philipballew> here is a nice article about scopes that ubuntu has
<philipballew> http://www.zdnet.com/ubuntu-13-10-saucy-salamander-review-smart-scopes-in-mir-out-7000022022/
<philipballew> worth a read
<philipballew> https://wiki.ubuntu.com/SmartScopes1304Spec
<philipballew> also this because Wiki pages can be nice sometimes
<philipballew> let me get some examples of scopes
<philipballew> oldie but a goodie
<philipballew> now I see some people in the chat channel asking about 12.04
<philipballew> here is a link on customizing 12.04
<philipballew> http://hackerspace.lifehacker.com/a-short-guide-to-customizing-ubuntu-12-04-lts-for-beg-595909239
<philipballew> alright, lets move into some basic ubuntu keyboard commands.
<philipballew> I mean sure you can use the mouse, but why?
<philipballew> https://help.ubuntu.com/community/KeyboardShortcuts
<philipballew> alright, here is a doc page about it.
<philipballew> however iirc, in 13.10 and before you can hold down the super key and have a page of keyboard shortcuts pop up.
<philipballew> let us look at a big one here: ctrl + alt + tab
<philipballew> this changes the ap you are working on.
<philipballew> pretty basic however can greatly enhance productivity.
<philipballew> so I can use this to shuffle between applications.
<philipballew> now it is needed to be said that this is for all workspaces
<philipballew> if you want to just shuffle on the workspace you are in, you can just use alt + tab.
<philipballew> easy right?
<philipballew> here: try it yourself.
<philipballew> alright, so when you all have time, go ahead and read the documentation yourself.
<philipballew> here is a site I have used before to find interesting terminal commands to paste things into and do some customizations also.
<philipballew> one of the options is the ability to have the white dots removed:
<philipballew> sudo xhost +SI:localuser:lightdm
<philipballew> sudo su lightdm -s /bin/bash
<philipballew> gsettings set com.canonical.unity-greeter draw-grid false
<philipballew> to remove the guest account you can do it with:
<philipballew> echo allow-guest=false | sudo tee -a /etc/lightdm/lightdm.conf.d/50-unity-greeter.conf
<philipballew> now remember when I talked about online searches?
<philipballew> not everybody might need those.
<philipballew> so there is a simple way to remove those:
<philipballew> sudo apt-get autoremove unity-lens-music unity-lens-photos unity-lens-video
<philipballew> gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"
<philipballew> also, if you do not like the scrollbars the way they are, this site shows how to change them:
<philipballew> gsettings set com.canonical.desktop.interface scrollbar-mode normal
<philipballew> if you want to go back:
<philipballew> gsettings reset com.canonical.desktop.interface scrollbar-mode
<philipballew> if you want to show your name in the top pannel by the date:
<philipballew> gsettings set com.canonical.indicator.session show-real-name-on-panel true
<philipballew> and to reverse:
<philipballew> gsettings set com.canonical.indicator.session show-real-name-on-panel false
<philipballew> now another thins that is worth saying is sometimes Ubuntu will present a lot of crash reports:
<philipballew> you can stop these by:
<philipballew> sudo gedit /etc/default/apport
<philipballew> well actually probably gksude
<philipballew> *gksudo
<philipballew> gksudo gedit /etc/default/apport
<philipballew> the site this is all on says that nest you will have a  text file will open, In the last line you will see "enabled=1" change it to "enabled=0". Save and close file.
<philipballew> Now enter following command in terminal to stop apport service:
<philipballew> sudo service apport stop
<philipballew> Want a firewall for your system?
<philipballew> sudo apt-get install gufw
<philipballew> then open it from the dash and set it up.
<philipballew> Want to play DVD's and live somewhere where you can?
<philipballew> sudo apt-get install gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg libxine1-ffmpeg gxine mencoder libdvdread4 totem-mozilla icedax tagtool easytag id3tool lame nautilus-script-audio-convert libmad0 mpg321
<philipballew> sudo /usr/share/doc/libdvdread4/install-css.sh
<philipballew> some of these will install the ability to play music as well
<philipballew> unless you are always using ogg
<philipballew> now as we wrap up here I want to let you know that trying to mess with your system all the time, can break it.
<philipballew> however I will show you how to reset unity now:
<philipballew> this might invilve dropping to a tty f.y.i.
<philipballew> *involve
<philipballew> sudo apt-get install dconf-tools
<philipballew> dconf reset -f /org/compiz/
<philipballew> setsid unity
<philipballew> unity --reset-icons
<philipballew> alright. that is a lot of stuff to go over with Ubuntu Unity I guess right?
<philipballew> now if you have any questions, I am happy to answer
<ClassBot> SuprEngr asked: ââmaybe ot the right plce to ask but... I've always wondered: what does the "gk" in gksudo mean?
<philipballew> SuprEngr, great question
<philipballew> gksudo is for opening graphical application from the terminal.
<philipballew> in a gnome enviorment
<philipballew> so with kde, I beleive I would use ksudo
<philipballew> you can also throw a & at the end of the command to have the terminal go to a new line after opening the app.
<philipballew> kdesudo
<philipballew> actually I am informed
<philipballew> thank you:)
<philipballew> is there any more questions?
<philipballew> alright, thank you for coming everyone
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
<Cheesehead> (Applause)
<Cheesehead> Package Management Tips and Tricks
* 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 User Days - Current Session: Package Management Tips and Tricks - Instructors: Cheesehead
<Cheesehead> Thanks, ChanServ
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<Cheesehead> Hello from the shores of lovely Lake Michigan.
<Cheesehead> It's a beautiful, sunny day here. +13F (-11C) with a lovely breeze.
 * Cheesehead puts on more sunscreen
<Cheesehead> Go ahead and ask any questions you have, anytime.
<Cheesehead> To ask a question, join #ubuntu-classroom-chat and start with QUESTION:
<Cheesehead> I will see it, though it may take me a minute or two to answer.
<Cheesehead> I plan to (very briefly) discuss:
<Cheesehead> 1) What the packaging system is...and is not.
<Cheesehead> 2) The three most common package-management problems we see in the help forums...so you will know them when you see them
<Cheesehead> 3) The command-line tools that help you. This is the big part.
 * Cheesehead sips his drink and looks around the room
<Cheesehead> == Seven lines about what packaging is ==
<Cheesehead> Package Management is the way you install most software. I'm sure you already knew that. And I'm sure you already know how easy it is.
<Cheesehead> You open Software Center, click, and stuff just magically installs or uninstalls. Your built-in package Manager is the secret sauce that makes it possible.
<Cheesehead> Your software updates, both system software and applications, are also merely packages that get installed.
<Cheesehead> Packaged software is much more than a simple app store. There's a whole infrastructure of testing and trust-building behind the scenes.
<Cheesehead> Many Ubuntu community members making sure that those packages do what they claim, that they are free of malware and adware, that they are appropriately licensed, etc.
<Cheesehead> Since Software Center is fairly obvious, much of the discussion today is command-line driven. It's fast, and it's the easy way to identify problems.
<Cheesehead> ...But if you have a Software Center question, do ask!
 * Cheesehead takes a drink of water and checks for questions
 * Cheesehead wait for everyone to catch up with the reading
<Cheesehead> On to the tips and tricks
<Cheesehead> == The three most common pitfalls ==
<Cheesehead> The pitfall that causes the most frustration is installing packages from out in the wild instead of from the Ubuntu Repositories.
<Cheesehead> Packages mean convenience. They do not mean security. The Ubuntu Repositories and the Ubuntu Security Team provide secure and trustworthy packages.
<Cheesehead> Over in the support forums, we help a *lot* of users who downloaded something off the web...and it broke their system. Or it was from Debian. Or it was from a different release of Ubuntu.
<Cheesehead> And phillipballew may disagree with me, but I lump PPAs in with "out in the wild"
<Cheesehead> In the support forums, we do see systems that get hosed from...er...probelmativ PPAs.
<Cheesehead> Bottom lime: Don't install strange packages you found on the web UNTIL you have backed up your system.
<Cheesehead> The one time you don't backup is the time a strange package will cause problems.
<Cheesehead> If you don't backup, then I recommend against playing in the deep water.
 * Cheesehead refreshes his drink
<Cheesehead> The pitfall that causes the most confusion is thinking that packages are the *only* way to install software.
<Cheesehead> There are other ways. They are sometimes not easy. They are sometimes incompatible with packaged software.
<Cheesehead> If you install a tarball or compile software from source code, those are not packages - the Package Manager cannot help you uninstall them or update them.
 * Cheesehead throws a toy to the dog and checks for questions
<Cheesehead> But you're smart enough not to fall into those traps. You don't download packages from the wild, and you know the difference between a package and a tarball. (Good for you!)
<Cheesehead> The most common pitfall is IGNORING ERROR MESSAGES.
<Cheesehead> If you get a warning or an error during an install, uninstall, update, or when opening or closing Software Center or Software Updater...
<Cheesehead> Jump into the help zone right away. Your system is asking for help.
<Cheesehead> Errors and warnings *don't* go away on their own.
<Cheesehead> Really.
<Cheesehead> Whatever the problem is, it will probably get worse with time. And it's usually really easy to fix.
<Cheesehead> You already know where to get help:
<Cheesehead> https://help.ubuntu.com
<Cheesehead> irc://irc.freenode.net/ubuntu  (That's the #ubuntu channel here)
<Cheesehead> http://ubuntuforums.org        (We help a *lot* of people there)
 * Cheesehead sips his drink and pauses thoughtfully
<ClassBot> ianorlin asked: if you use debuild is compiling from source still not using packages if you make a .deb and then install it through dpkg?
<Cheesehead> Yes...sort of.
<Cheesehead> Great question.
<Cheesehead> Yes, it's certainly a package.
<Cheesehead> Yes, you can install/uninstall it using the package manager
<Cheesehead> But no, it's not easily sharable
<Cheesehead> Nor easily updatable
<Cheesehead> You get the ease of install/uninstall, but you miss the benefits of the Ubuntu Repositories and support.
<Cheesehead> == Tips for success ==
<Cheesehead> The flip side of the biggest pitfall is also the biggest tip: Use the help resources early and often.
<Cheesehead> Getting help in Ubuntu means you must use the Terminal.
<Cheesehead> (why, how convenient that we're about to cover that!)
<Cheesehead> A lot of great diagnostic information is *only* available using the Terminal.
<Cheesehead> The second big tip is "Don't be scared of the error message." Read it.
<Cheesehead> Really read it. Then read it again.
<Cheesehead> Most of the time, it will tell you exactly what the problem is.
<Cheesehead> And you will surprise yourself - you understand the problem and know how to fix it.
<Cheesehead> The third big tip is "The Terminal is your friend." Embrace it.
<Cheesehead> Borrow money from it.
<Cheesehead> And that leads us to...
<Cheesehead> == Practical Exercise ==
<Cheesehead> (You can still ask questions!)
<Cheesehead> We're going to update your software, search for a package, install a package, uninstall it, and see what's inside a package. All on the command line so you can watch the gears spin.
 * Cheesehead sips his drink
<Cheesehead> Let's update your software. This is the equivalent of running Software Updater. Try the following command:
<Cheesehead> sudo apt-get update
<Cheesehead> Yes, give your password.
<Cheesehead> Let it crank a minute.
<Cheesehead> What's it doing? It's merely updating your package cache. It's not downloading any packages or installing anything.
<Cheesehead> When it's done, try the command:
<Cheesehead> sudo apt-get upgrade
<Cheesehead> If the system asks you a question, read the question. Then answer.
<Cheesehead> There. You just updated your system without running Software Updater.
<Cheesehead> Now, if you open Software Updater, it would show your system up-to-date. They read from the same data...the package cache you just updated, among others.
 * Cheesehead waits a moment for everyone to catch up
<Cheesehead> == Practical Exercise ==
<Cheesehead> Let's look for packages to manipulate pdf files. The is the equivalent of Software Center's search feature:
<Cheesehead> Try the command:
<Cheesehead> apt-cache search pdf
<Cheesehead> Well, that's a big list, and it scrolled by too fast to use. Let's refine that search a bit.
<Cheesehead> apt-cache search pdf edit
<Cheesehead> That's better. We can see a couple possibilities like pdfmod
 * Cheesehead throws a wayward volleyball back to the beach party next door
<Cheesehead> This command-line output can -of course- be piped and grepped and reformatted any way that's useful to you.
<Cheesehead> This command-line output can -of course- be piped and grepped and reformatted any way that's useful to you.
<Cheesehead> There. You just did a Software Center search without opening Software Center!
 * Cheesehead sips his drink and checks for questions
<Cheesehead> == Practical Exercise ==
<Cheesehead> Here's a big one.
<Cheesehead> Let's install a package and play with it a bit.
<Cheesehead> "apt-cache show" gives us lots of information about an example package called "hello"
<Cheesehead> Now try this command:
<Cheesehead> apt-cache depends hello
<Cheesehead> Now try: apt-cache show hello
<Cheesehead> "apt-cache depends" gives us the list of packages hello needs to function. apt will automatically install any that are needed.
<Cheesehead> "apt-cache show" gives us lots of information about the package
<Cheesehead> Now let's install it:
<Cheesehead> sudo apt-get install hello
<Cheesehead> If you open Software Center and search for "hello," you should see the package, and it's marked installed.
<Cheesehead> Software Center and apt (and others) share the same packages data.
<Cheesehead> Leave Software Center open, and try the following command to uninstall "hello"
<Cheesehead> sudo apt-get uninstall hello
<Cheesehead> You should get an error message "can't get a lock"
<Cheesehead> You can only have one package manager (like Software Center or apt-get) open at a time.
<Cheesehead> Go ahead and quit Software Center. Leave hello installed a little longer.
<Cheesehead> Let's see the files that "hello" installed. Try the following command:
<Cheesehead> dpkg --list hello
<Cheesehead> New let's see what package installed the file /usr/bin/hello. Try:
<Cheesehead> dpkg --search /usr/bin/hello
<Cheesehead> See the power there? You can answer the questions "What files does this package install?", and "What package installed this file?"
<Cheesehead> That's very handy when you are tracking down a bug. Now you know what package to file against!
<Cheesehead> It's also handy just for exploring your system.
<Cheesehead> Oh, let's run the installed hello application:
<Cheesehead> On the command line, simply enter the command "hello"
<Cheesehead> Yeah, that's all it does.
<Cheesehead> Finally, let's clean up by uninstalling hello:
<Cheesehead> sudo apt-get uninstall hello
<Cheesehead> or sudo apt-get purge hello
<Cheesehead> Uninstall removes everything that's not in /home or /etc
<Cheesehead> Purge removes everything that's not inn /home
<Cheesehead> "Purge" sounds stringer, but it's exactly the same...just removes the /etc files too.
<Cheesehead> stringer? Well, perhaps stronger.
<Cheesehead> And you know how to figure out which files those are...
<Cheesehead> There. You just installed a package, uninstalled it, and found all the files it installed.
<Cheesehead> Bonus: You found which installed files are associated with which package.
<Cheesehead> We have a couple minutes for questions
<Cheesehead> We can talk about apt-mark, or autoremove, or clean/autoclean, or sources.list, or the hidden daily apt cron job, or many other possible topcs. Ask away...
<Cheesehead> Or Aptitude or metapackages or dependencies or versions or rmadison...
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> tgjk asked: The question maybe is a litle stupid. Where's the difference between autoremove and autoclean?
<Cheesehead> GREAT question!
<Cheesehead> Autoremove uninstalls pacakges that the system thinks you don't need.
<Cheesehead> Example: If you install hello, and hello pulls in libhello
<Cheesehead> But during uninstall only hello get uninstalled and libhello remains installed...but nothing needs it.
<Cheesehead> libhello is considered "orphaned." A common-enough oversight in automated package management.
<Cheesehead> autoremove uninstalls libhello.
<Cheesehead> clean/autoclean refer to the original package files in /var/lib/apt/archive
<Cheesehead> The system saves every package file, even when superseded by a newer version.
<Cheesehead> "clean" removes all the files of a certain name
<Cheesehead> "clean" without a name removes all those files.
<Cheesehead> "autoclean" tells the system to remove obsolete files, but keep the current ones
<Cheesehead> clean/autoclean have nothing to do with what's installed.
<ClassBot> There are 5 minutes remaining in the current session.
<Cheesehead> and autoremove has nothing to do with what's in /var/apt/archive
<Cheesehead> Boy, I hope that's clear. It's a bit arcane.
<ClassBot> ianorlin asked: what does apt-mark do?
<Cheesehead> apt-mark is the little-known way to mark a package manually-installed or automatically-installed.
<Cheesehead> So when I install hello and libhello, hello is marked manually-installed, and libhello is marked automatically installed.
<Cheesehead> I didn't specify libhello, it's a dependency.
<Cheesehead> Those markings are how autoremove knows what's available to remove, and what's specified by the user to keep.
<Cheesehead> Let's say I install LibreOffice, but later I decide I don't need all of it.
<Cheesehead> I change the markings on the package I want to keep, and can uninstall the rest.
<Cheesehead> Easy way to change a marking to manuall-installed: Sudo apt-get install it
<Cheesehead> You've been great. Thanks for joining us.
<Cheesehead> == Break Time ==
* 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 User Days - Current Session: Unmoderated break - Instructors: pleia2
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> this means we can go stretch our legs and get a snack/meal :) see you back in an hour with jose's session on "
<pleia2> "
<pleia2> "Meeting the community"
<pleia2> there we go :)
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
* 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 User Days - Current Session: Meeting the community - Instructors: jose
<jose> and looks like we're all set!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<jose> so, welcome back to User Days!
<jose> I really hope you've been enjoying the day and learning some bits about Ubuntu
<jose> now that I'm at a PC it's much easier for me to keep track on the session
<jose> any questions are welcome at any time, so if you have any enquiries just post them on #ubuntu-classroom-chat with the QUESTION: prefix
<jose> so, I'd like to ask for those in #ubuntu-classroom-chat, have you already met another member of the community? may be virtually or in person
<jose> looks like we've got a bit of a shy crowd today :)
<jose> well, turns out I am a community member
<jose> as well as many people who are in here, and in other channels
<jose> basically, the community helps Ubuntu to be successful
<jose> without the community, we wouldn't be as far as we are now
<jose> community is a vital part of the project, and I'm sure there are some community people in your city or country!
<jose> (yeah, quite sure)
<jose> there are groups of people who like Ubuntu and form part of the huge community, and are localized in your state/country
<jose> these are called LoCo Teams
<jose> that stands for Local Community Teams
<jose> so, these teams have regular meetings and so some great events (like the one I went to today!)
<jose> these are people that will help you out in case you have any problems with your PC
<jose> or if you have any doubts about the community in general, they can give you a hand to get involved
<jose> I won't cover much of that because that's the purpose of OpenWeek, but let's continue
<jose> you can find the LoCo team that is nearest to you at loco.ubuntu.com
<jose> that is what we call the LoCo Team Portal, give it a check :)
<jose> so, did you find a team?
<jose> if you did, make sure to contact them and say hi!
<jose> I'm sure they'll welcome you warmly and explain what their future events are, with some more things
<jose> you should also be able to find future events/meetings at their loco.ubuntu.com page
<jose> while looking for your team you may have noticed the verified status on some LoCo teams
<jose> there are some LoCo teams which go through a verification process
<jose> this includes checking they are active and have all their resources set up
<jose> and it's done by the governance body in charge of LoCo Teams: the LoCo Council
<jose> are there any questions until now?
<jose> let's move on then
<jose> LoCo Teams, as I previously said, host events
<jose> and they usually receive some Ubuntu items, including stickers (yay! stickers!) and some more stuff
<jose> and give them out during those events
<jose> or conferences, if there's any near you
<jose> so, if you want a random item, then make sure to go to an event, and also meet some people who work for Ubuntu to be better each day!
<jose> if you don't feel like going to events, then you can use the mailing list or their IRC channel
<jose> that way, you will be able to have a chat with them
<jose> if you're going to use IRC, make sure to be patient
<jose> people take time to respond, don't get desperate and leave after 1 minute has passed
<jose> if you have had any experiences with your LoCo team, please make sure to comment on #ubuntu-classroom-chat
<jose> personally, I think I've quite much covered all the stuff about how can you meet your LoCo team
<jose> if you have any doubts just ask ahead, I'll make sure to respond :)
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
* 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 User Days - Current Session: Equivalent Applications - Instructors: holstein
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<holstein> hello hello! welcome the the presentation..
<holstein> im going to be talking about equivalent applications, hopefully helping folks find specific applications to address needs and specific work flows
<holstein> if you are not in the #ubuntu-classroom-chat channel, that is where you can go and ask questions..
<holstein> i welcome any questions at anytime.. and i'll try to get to them in a timely/orderly manner
<holstein> my name is Mike Holstein. i have been using linux exclusively for over 6 years now
<holstein> https://wiki.ubuntu.com/holstein is my slightly out-dated wiki page, with contact information
<holstein> i like to do online support in the IRC channels, and i advocate linux use whenever i feel i can, and when ever i feel it fits the needs
<holstein> when discussing equivalent applications, what we are mostly taking about is, for example, someone is using photoshop on a windows PC, and they want to move to linux.. what application or applications can be use as "replacements" or "equivalents" for that user?
<holstein> i would like to take a step back from that, and briefly talk about why we might be trying to find said replacement applications
<holstein> you are likely either interested in switching to linux, and researching it.. or you are trying to migrate a friend/family member or client to linux
<holstein> this migration (from any operating system to any other operating system) can be challenging, to say the least
<holstein> the open source community is generally welcoming to newcomers, and, because its open, there is nothing hiding from anyone.
<holstein> new users are welcome to look at and explore *everything*
<holstein> personally, i think this give linux/ubuntu an edge in this department
<holstein> when bringing a new user over to ubuntu, nothing is hiding from them, and they are able to, and encouraged to explore, and learn, and experiement
<holstein> there are *many* different looks and feels that can be applied to an ubuntu environment, and i think that should be addressed when thinking about equivalent applications
<holstein> what look/feel is the user used to? can you find, or easily tailer an environment to emulate that?
<holstein> that is something we have to offer the new user that many other operating systems cant and are not interested in offering
<holstein> we can basically create an equivalent platform, in many ways, that the new user can be comfortable in
<holstein> this also implies that a person should be setting this up for a new user.. and, i think that is the best case scenario
<holstein> i have had great success in migrating many users to linux in the past, but i always like to start with a sort of interview
<holstein> what are the users currently using? what do they like about it? what applications?.. can all the needs be met
<holstein> typically, its easy to meet all the software requirements.. but, occasionally, we just cannot offer equivalent hardware support
<holstein> i did a presentation at my local linux user's group called "linux is not magic" where i basically tried to address some of these misconceptions
<holstein> new users have machines with full windows support, out of the box, and they try and come to linux expecting an equivalent level of hardware support
<holstein> i think it is important to make new users realistically aware that vendors are encouraged to provide linux support, and, those vendors *are* cooperating more and more with our community, providing great end user support
<holstein> also, taking a minute to suggest to a new user to try a vendor such as system76.com ..they have been providing machines with ubuntu for years
<holstein> this can, in itself, be an equivalent approach to what the users are used to.. buying a machine from a vendor.. you get it out and hit the power button and its already running ubuntu
<holstein> and they can call a tech support number..
<holstein> otherwise, its a lot that i feel we ask of new users. to basically leave behind a safe place where they had a lot of applications they were happy with.. and to install an operating system.
<holstein> they may have never installed windows in the first place.. or OSX.
<holstein> so, for that user, the process of aquiring linux and installing it has no equivalent process
<holstein> they have never done that process, so, we must help the users who are interested.. and that brings me to addressing some specific applications
<holstein> when one is talking about replacing windows applications, it is important to note the WINE project
<holstein> WINE can basically give a native windows appications an environment to try and run on an ubuntu operating system
<holstein> here is a site where one can go and check for WINE support of applications http://appdb.winehq.org/
<holstein> i think the bigggest issue with WINE, however, is just that.. support
<holstein> if you purchase a product, and it specificallly states "supports windows".. and you are using WINE in linux.. you are not going to be able to get support from that manufacturer
<holstein> this basically puts support for the applications back on the end user, and the WINE team
<holstein> for that reason, i typically dont use, setup, or suggest that new users use applications in WINE
<holstein> although, an etremely powerful tool that is well supported, and accomplishing an amazing task, i feel for a new user, the risk of something not working is too high
<holstein> also, in the same conversation of being realistic about linux.. any vendor is always welcome and encouraged to create native linux applications.. and more and more vendors are
<holstein> i'll skip ahead for a second and talk about a great example of this.. steam gaming
<holstein> steam has made available native linux support. this has helped with graphics driver support in linux as a whole, as well as addressing native gaming on linux
<holstein> now, for example, we dont have to offer an equivalent to what many gamers need.. we have a native solution
<holstein> the native solutions are always going to be "better" due to simply the burden of support and maintenance
<holstein> there are many cross platform native applications that are available to answer many needs
<holstein> when migrating a new user, or a school or business, i think it would be a great idea to have a realistic goal of migration over a larger period
<holstein> *of time
<holstein> take the (assumed) current windows machines, and switch, for example, the web browser
<holstein> firefox is well known, well supported, cross platform, and stable/fast/secure
<holstein> if you were to take an office of workers, and switch them over to firefox, then, later when you switch them to linux, they will have the *same* browser experience available to them
<holstein> same look and feel
<holstein> http://www.mozilla.org
<holstein> along the same lines of the office worker.. if you would then take those users and migrate them to a different office suite.. replace the microsoft office suite with libreoffice
<holstein> http://www.libreoffice.org/
<holstein> i think anyone seeking an office suite would be quite pleased with libreoffice.. where i feel the issues arise are when one user in the office tries it.. and the others are using word
<holstein> this can have inconsistencies that are uncomfortable for the new user of the software
<holstein> this can also make folks thing the applications are "sub-par" or not up do the task
<holstein> i find many new users come and they say something like "well, if linux were any good x-brand application would run on it". but that is far from the case
<holstein> x-brand application, in that scenario, can always make a linux version... and if *everyone* in that offic place switches to libreoffice, the transistion will be smoother, as far as sharing files
<holstein> the new user can have a feeling that FOSS is somehow the "generic" brand.. and that is not the case
<holstein> a lof of these applications, libreoffice and firefox being among the top i can think of, are well developed, and well supported, fully capable solutions
<holstein> firefox, for example, is not really trying to replace internet explorer.. firefox is just trying to provide an excellent product that allows web browsing
<holstein> to think of it as an internet explorer replacement many not always be the best mind frame for a new user to be in
<holstein> they may be looking for the look and feel of internet explorer when firefox is *very* capable
<holstein> there are many cross platform applcations like that that one could switch a windows user to prior to switching themm to linux
<holstein> http://www.videolan.org/vlc/index.html
<holstein> VLC is a well known and well supported media player
<holstein> http://www.gimp.org/ a large project for manipulating images and editing images
<holstein> http://audacity.sourceforge.net/ a well known audio recorder/editor
<holstein> http://www.mozilla.org/en-US/thunderbird/ is still a great way to migrate folks from outlook
<holstein> http://inkscape.org/ an awesome vector-graphics application
<holstein> http://musescore.org/ for music notation
<holstein> http://www.blender.org/ for 3d graphics.. http://xchat.org/ for chat.. as well as many others
<holstein> i think its important to find out what the users needs are, and what the needs are
<holstein> there are also more and more options for web apps
<holstein> whats a webapp? basically anything that can run in a web browser
<holstein> this can be handy because, it can give an application an easy way to run basically natively in linux
<holstein> google docs is a great example of this
<holstein> if a user is using google docs on windows, they install ubuntu, and login to the google account and have access to the same google docs
<holstein> http://www.noteflight.com/login is a music notation editor online like this
<holstein> http://pixlr.com/editor/ is an online image editor
<holstein> even something like this product from microsoft http://office.microsoft.com/en-us/web-apps/ can offer a "native" experience to a linux user for a product like office that is likely never to come to linux natively
<holstein> i personally dont mind the web-apps, mostly becuase of the mobile support
<holstein> if a user gets a phone or a tablet, and it has a browser, then, they can access the same applications, for example
<holstein> what about the server side? we have a lot of great ubuntu specific server scenarios
<holstein> http://www.ubuntu.com/download/server
<ClassBot> There are 10 minutes remaining in the current session.
<holstein> there are also many easy ways to click an button and easily deploy ubuntu on many major hosting services
<holstein> there is a great project called turnkey linux
<holstein> http://www.ubuntu.com/download/server
<holstein> they offer ubuntu based appliances that are easy to run live and test, basically like a server version live CD
<holstein> makes it easy to get an instance of wordpress or joomla up quickly
<holstein> ubuntu server can easily provide an administrator equivalent work flows in the server space
<holstein> any last minute questions?
<holstein> i think, in closing, i'll just remind everyone that really, i feel it is an equivalent overall experience that the new user is looking for
<holstein> if we, as the already established linux users, can go in and setup the machines and the environments for the new users, i think that will always be helpful
<ClassBot> There are 5 minutes remaining in the current session.
<holstein> also, i think its time that we praise the vendors that are giving use equivalent support and applications
<holstein> though, it may not be FOSS, i think it helps cultivate a community to have more companaies working for releasing linux software and hardware
<holstein> getting more users should also help the FOSS community that has made the experience what it
<holstein> with no questions.. i'll thanks everyone for attending, and hand the floor over.. thanks!
* 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 User Days - Current Session: Ubuntu Flavors: Kubuntu, Lubuntu and Xubuntu - Instructors: valorie, pleia2, ianorlin
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/25/%23ubuntu-classroom.html following the conclusion of the session.
<pleia2> Welcome to our session on Ubuntu Flavors! Today we'll be covering Kubuntu, Lubuntu and Xubuntu :)
<pleia2> I'm going to quickly cover what these "Desktop Environment" things are, like "LXDE" and "Xfce" and "KDE" and then we'll talk about the specific flavors that use these
<pleia2> So a "Desktop Environment" or "DE" is a full interface, including Window Manager, panels, menus, engines, tools and often applications which are put or built to work together
<pleia2> in Ubuntu you *used to* get the Gnome Desktop Environment, but today Ubuntu uses Unity which still uses lot of of Gnome
<pleia2> KDE, LXDE and Xfce are alternatives to this default
<pleia2> so, why would you want to switch from Unity to a different Desktop Environment?
<pleia2> a popular reason is simply preference. Give another one a try! You may like you find out how customizable the panels that are in Xfce, how shiny KDE is or how fast LXDE is
<pleia2> some let you slim down your environment by loading up fewer things by default, some are faster (usually by sacrificing eye candy), some work with lighter window managers which may run better on your system
<pleia2> now, Kubuntu, Lubuntu and Xubuntu are full distribution flavors of Ubuntu which not only use these alternate Desktop Environments, but ship a lot of their own tools geared toward their user base
<pleia2> decisions as to what applications are included are discussed and decided each release cycle, and are not related to default applications decided for Ubuntu, each team decides for themselves
<pleia2> any questions about desktop environments before we get into specifics? :)
<ClassBot> knome asked: are there other DE's available in the ubuntu repositories apart from the ones you mentioned?
<pleia2> there sure are! GNOME3 has a flavor all its own, and then you have options like cinnamon and others
<pleia2> ok, so let's talk about some of the specific flavors, valorie is here to talk about Kubuntu :)
<valorie> Hi everybody!
<valorie> I'm here to talk about Kubuntu, the oldest Ubuntu flavor. Kubuntu uses the KDE desktop on the base of Ubuntu.
<valorie> KDE is the international community which has created the Plasma desktop and an huge range of software, from workspaces for desktop computers, netbooks, and now even tablets and phones, to applications for almost anything you want.
<valorie> Sofware available ranges from simple utilities to a integrated development environment, including games, educational, graphics, multimedia and more.
<valorie> http://kde.org/ is the door to the KDE community. The Kubuntu website is http://kubuntu.org
<valorie> Kubuntu documentation is at http://docs.kubuntu.org. Here you'll see screenshots of lots of applications, how to install, links to application websites and helps, and so forth.
<valorie> I'm part of the team working on documentation, so I'm really proud of this baby. :-)
<valorie> What I love about Kubuntu is that we have our own friendly crew of packaging, web and doc folks; we're part of the larger ubuntu community, and also part of the KDE community.
<valorie> Any questions so far? I'm about to dive into some of the nitty-gritty
<valorie> Of course I love lots of the KDE software such as Amarok, and Konversation, Dolphin our file manager, and something no one else provides: Activities.
<valorie> Many people don't use Activities, but if you divide up your computer time between say, writing and art, you might find Activies really useful.
<valorie> Within an activity, you can use as many virtual desktops as you need, and associate any particular applications, documents or even webpages you want.
<valorie> when my son first introduced me to Linux, virt desktops were the feature he thought was most exciting, while I didn't really see the use
<valorie> I guess it's the same with activities, although we're seeing other projects do similar things now
<valorie> Say you frequently travel; you can then associate your favorite travel websites, the photo image software you use, etc. Or maybe you want an activity just for your kids, or certain activities such as banking or work sites you want to lock away from everyone but you. All part of our great Plasma system.
<valorie> I know I'm going quickly, but we're trying to cover three flavors in an hour.
<valorie> Any questions?
<valorie> We have the choice to use all the KDE software, and any Gnome or independent favorites such as LibreOffice, Firefox, or Chromium too, as holstein discussed last hour
<valorie> Plasma is lovely, with "widgets" to do all kinds of useful things; endlessly configurable and totally powerful.
<valorie> Those of you who choose other flavors can still use KDE applications such as Amarok, K3b and Krita, right along with everything else in the repos.
<valorie> My wiki page, if you want to get in touch: https://wiki.kubuntu.org/ValorieZimmerman
<valorie> I'm open for questions now, or it is the turn of ianorlin, who will present Lubuntu
<valorie> ianorlin, you are up!
<ianorlin> I am ianorlin I am started joining #lubuntu on irc and helping a lot and just kept volunteering when new opportunites occured
<ianorlin> Lubuntu uses lxde which means it uses less system resources than unity kde or gnome which is good for running on older computers
<ianorlin> it also runs well on newer computers and runs fast
<ianorlin> http://lubuntu.net/ is the website for lubuntu
<ianorlin>  http://www.linuxscreenshots.org/?release=Lubuntu%2013.10 is link to many screenshots of the applications in lubuntu
<ianorlin> although lubuntu does not currently have 12.04 as a long term support release lubuntu 14.04 will be
<ianorlin> lubuntu comes with firefox as web broswer, abiword as a word processor, gnumeric as a spreadsheet, evince for veiwing pdfs
<ianorlin> these applications are trying to use ones that use less ram on the computer which older ones may not have
<ianorlin> also for a file manager there is pcmanfm which has tabs and is lightweight and fast
<ianorlin> Audicious is installed for playing music and Gnome M-player is for videos
<ianorlin> any questions?
<ClassBot> knome asked: what's the minimum suggested amount of RAM for running Lubuntu?
<ianorlin> 256 is bare minimum but still the problem may be opening tabs in a web browser but for that you would want an alternate cd which lubuntu still provides
<ianorlin> I have a working install on a machine with 512 mb ram and still works well for irc but you still can't open 30 firefox tabs for example
<ClassBot> knome asked: how is the installed system different when using the alternate ISO? are some components dropped?
<ianorlin> the alternate iso has a text based installer that uses less memory for the older machines but has no live seisson
<ianorlin> yes the powerpc builds are officially supported but there are some issues as noted on the release notes
<ianorlin> the alt installer installs same version of lubuntu
<ClassBot> rww asked: I just noticed that Lubuntu has PowerPC images on cdimage.ubuntu.com. Are these officially supported by Lubuntu, or are they just there and maybe work?
<ianorlin> https://wiki.ubuntu.com/SaucySalamander/ReleaseNotes/Lubuntu is the release notes for saucy and yes they do work but I am not familiar with the problems that much with powerpc
<ianorlin> if you have installed lubuntu and need to find help the offical support channels in https://help.ubuntu.com/community/Lubuntu/Support
<ianorlin> lastly here is a long list of links for most lubuntu things although ti is slighly out of date https://help.ubuntu.com/community/LubuntuLinks
<pleia2> thanks ianorlin!
<pleia2> now I will talk a bit about my favorite Linux in the world :) Xubuntu!
<pleia2> as I mentioned earlier, Xfce is the Desktop Environment that comes with Xubuntu, you can find some details about it over at http://xfce.org/
<pleia2> and the Xubuntu website itself is http://xubuntu.org/
<pleia2> we just had our 14.04 Alpha 2 release this past Thursday :)
<pleia2> when you load up the desktop for the first time, you get a desktop that looks something like this: http://xubuntu.org/wp-content/uploads/2011/09/xubuntu-13.04-desktop.png
<pleia2> and if you open a couple windows you can get a better look at the window decorations (in this one thunar the file manager and the application finder): http://xubuntu.org/wp-content/uploads/2011/09/xubuntu-13.04-thunarappfinder.png
<pleia2> it's a pretty familiar layout for most people used to old style Gnome2 or order Windows versions, and a lot of people like that
<pleia2> the mouse icon at the top left is your menu, at the bottom of the screen you have a semi-transparent panel which you can easily add and remove stuff from, this is an older version but you can see the bottom panel here: http://xubuntu.org/wp-content/uploads/2012/05/xubuntu-12.10-desktop.png
<pleia2> now Xubuntu with Xfce itself differs from Ubuntu not just in environment,  it doesn't come with Open Office, instead it comes with lighter-weight "abiword" for word processing and gnumeric for spreadsheet, just like Lubuntu
<ClassBot> rww asked: how is upstream Xfce doing these days? The last release was back in 2012, and I imagine they're encountering trouble with the whole GTK2 => GTK3 thing. Still active and responsive, or struggling?
<pleia2> they're still active, responsive and struggling :)
<pleia2> it's a tough transition and their team is small, but we help where we can
<pleia2> Xubuntu currently uses gmusicbrowser by default for music and parole for a video player
<pleia2> both of these things are discussed every release too, lots of opinions around these :)
<pleia2> as you saw in the screenshot with the file manager it's a pretty one, there are a bunch of wishlist items for expanding it but that work is done upstream, details at http://thunar.xfce.org/
<pleia2> but as with all the flavors, you can install anything from the Ubuntu repositories, so you can install a different file manager if thunar is too simple to fit your needs
<pleia2> Xfce uses the XFwm by default for the window manager, but this can be replaced if you have different preferences, I have a coworker who swaps this out and some people have had luck with Compiz
<pleia2> just like Ubuntu, it comes with Firefox and Thunderbird for web and email clients
<pleia2> one of my favorite things is that you can add multiple clocks :) I have three timezone clocks in my panel
<pleia2> and in general, I love how flexible Xfce is - you can have icons on your desktop or not, you can add and remove panels as much as you want, grow and shrink them, make them horizonal or vertical, pile them on top of each other
<pleia2> so for me, configurability and simplicity are what I love about it, before Xfce I used Enlightenment and fluxbox, both of which were also simple but at the time required a lot of manual editing of config files to configure, and I got bored with doing that
<pleia2> Xfce gives me simple + pretty configuration dialogs!
<pleia2> Any Xubuntu/Xfce questions before we open up to general questions?
<ClassBot> knome asked: where can one get help for xubuntu?
<pleia2> we have several help resources, documented here: http://xubuntu.org/help/
<pleia2> if you don't see it there, you can also explore other Ubuntu help sites, many of them also take questions that have to do with the flavors
<ClassBot> knome asked: if one wants to contribute to xubuntu, what's the best place to learn more about getting involved?
<pleia2> you'll want to start at http://xubuntu.org/contribute/
<pleia2> that gives you an overview of places where you can contribute, once you find a place I highly recommend either joining #xubuntu-devel or getting on our devel mailing list at https://lists.ubuntu.com/mailman/listinfo/xubuntu-devel
<pleia2> we're nice, you can talk to us :)
<pleia2> (at least I am)
<ClassBot> There are 10 minutes remaining in the current session.
<pleia2> ok, let's open this up for general questions :)
<pleia2> anyone have questions for ianorlin or valorie on kubuntu or lubuntu?
<ClassBot> rww asked: How are you all handling the impending Xorg => {Mir, Wayland} situation? Any plans for it yet, or waiting for your upstreams?
<pleia2> Xubuntu tested Mir last cycle, and like Ubuntu we found it wasn't really acceptable for use yet, we'll probably experiment again in 14.10 but we're making no decisions until we've tested everything
<valorie> same here for Kubuntu
<ClassBot> jose asked: ahoneybun asked: How do you change the brightness in LXDE?
<valorie> KDE isn't developing for Mir while it is a one-desktop solution
<valorie> so we'll see what happens
 * pleia2 nods
<ianorlin> lubuntu is not shipping mir immediately as this would introduce more resource use through compositing and dependices right now the openbox whic lubuntu uses by defualt window manager would not work nice with wayland right now
<ianorlin> I currently have the keys on my laptop that adjust brightness settings and use that
<ClassBot> knome asked: if i want to install another DE, do i need to do a fresh install?
<valorie> We are all hoping, I think, that Ubuntu values all the flavors, and continues to ensure that we can all create great products on the ubuntu base
<pleia2> no, you can just install the new DE, log out, and then select from the menu in the login screen what DE you want to use
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> knome asked: how do i install another DE?
<pleia2> just search in the software center for what you want to install :)
<ianorlin> yes and install it like any other package
<ClassBot> knome asked: when are flavors' 14.04 releases released?
<pleia2> same day as Ubuntu :) april 17th
#ubuntu-classroom 2014-01-26
* 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 User Days - Current Session: Finding Support for Ubuntu - Instructors: benonsoftware
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/26/%23ubuntu-classroom.html following the conclusion of the session.
<benonsoftware> All and welcome to "Finding Support for Ubuntu"
<benonsoftware> In this session I'll show and explain the different avenues of support you can find for Ubuntu.
<benonsoftware> If during the seesion you have any questions, type then in #ubuntu-classroom-chat making sure your question has "QUESTION:" added to the start of it.
<benonsoftware> Now let's get started with it! :)
<benonsoftware> The community helps many userswith many different problems that come up with Ubuntu.
<benonsoftware> I'm going to first explain about the Ubuntu documentation
<benonsoftware> https://help.ubuntu.com/ is where the "Offical Ubuntu Documentation" likes to live
<benonsoftware> https://help.ubuntu.com/13.10/ubuntu-help/index.html is the desktop guide for the latest Ubuntu release at the moment. (13.10)
<benonsoftware> There it provides information on installing, upgrading Ubuntu, hardware issues, installing software, accessibility and many more
<benonsoftware> If you're new to Ubuntu, or just want a refreasher, I highly recommend you read this.
<benonsoftware> Next up is the Coomunity Help Wiki, which is at https://help.ubuntu.com/community
<benonsoftware> Other Ubuntu community members and users help edit and maintain this wiki. Meaning anyone can help fix it or add things.
<benonsoftware> This wiki has even more pages on installing Ubuntu and other software, switching from another OS, Hardware and other pages on a range of software.
<benonsoftware> Now, the next support resource is AskUbuntu, which the website is http://askubuntu.com
<benonsoftware> AskUbuntu is part of the Stack Exchange network of Quesion & Answer sites (http://stackexchange.com/sites)
<benonsoftware> AskUbuntu allows you to ask your question and other users can up and down-vote your question and answer it aswell.
<benonsoftware> Quickly going back to the Community Help Wiki, if you're not sure what you need to find, https://help.ubuntu.com/community/TitleIndex lists all of the wiki pages, but be warned it is a big page. ;)
<benonsoftware> AskUbuntu is really hopefully if you have a detailed question and you have all of the info already and just have to ask it.
<benonsoftware> helpful rather then hopefully
<benonsoftware> Another support system is the Launchpad Answers system https://answers.launchpad.net/ubuntu
<benonsoftware> It is slightly like AskUbuntu however it doesn'thave the upvoting features.
<benonsoftware> Next up is IRC
<ClassBot> rww asked: which of these resources are translated into other languages and/or have active non-English communities?
<benonsoftware> I'll answer this first :)
<benonsoftware> Many LoCo (Local Community) teams provide support in local languages
<benonsoftware> If you have a look on http://www.ubuntu.com/support/community/local-language you will see many teams have forums in the local language for you to ask questions and find support for Ubuntu.
<benonsoftware> Now IRC :)
<benonsoftware> IRC is real-time chat
<benonsoftware> Everyone that's in here at the moment is using IRC :P
<benonsoftware> The main Ubuntu IRC support channel is #ubuntu
<benonsoftware> However there are many other channels where you can find help
<benonsoftware> For example, Spanish speaking users can join #ubuntu-es, French users can find help in #ubuntu-fr, German users tryig to find support can try #ubuntu-de
<benonsoftware> And there are many other local channels you can join where you can speak in the native language to try and find support
<benonsoftware> http://www.ubuntu.com/support/community/local-language also lists the IRC channels you can join to find support.
<benonsoftware> Nedxt is the Ubuntu Forum, http://ubuntuforum.org
<benonsoftware> Ubuntu Forums can help with many issues
<benonsoftware> http://ubuntuforums.org/forumdisplay.php?f=327 is where the general support sub-forum
<benonsoftware> There are also many threads in the forum where you can find great how-to articles.
<benonsoftware> Many LoCo teams also have their own forum hosted over there, which you can find at http://ubuntuforums.org/forumdisplay.php?f=183
<benonsoftware> Another place to find help at is Ubuntu Discourse which lives in http://ubuntu-discourse.org/
<benonsoftware> Discourse is sort of like Ubuntu Forums but slightly different
<benonsoftware> (Sorry I can't like to much on it at the moment, it appears not to be loading for me)
<benonsoftware> If you're using an Ubuntu flavour you can also get support for it
<benonsoftware> Back to discourse again sorry
<benonsoftware> Thanks to toddc18, I realised I used the wrong link
<benonsoftware> The proper one is http://discourse.ubuntu.com/
<benonsoftware> Now, back with flavours :)
<benonsoftware> Each flavour has their own IRC channel and website
<benonsoftware> Edubuntu - #edubuntu http://edubuntu.org/
<benonsoftware> Kubuntu - #kubuntu http://kubuntu.org/
<benonsoftware> Ubuntu GNOME - #ubuntu-gnome http://ubuntugnome.org/
<benonsoftware> Lubuntu - #lubuntu http://lubuntu.org/
<benonsoftware> Xubuntu - #xubuntu http://xubuntu.org/
<benonsoftware> Many flavours also have links to their own docs on their websites
<benonsoftware> Another great way to find support is through the mailing lists
<benonsoftware> http://lists.ubuntu.com
<benonsoftware> There's many different lists for your needs and what you need help with
<benonsoftware> LoCos usually provide help with Ubuntu through their lists
<benonsoftware> There's a general ubuntu-users listalso
<benonsoftware> Flavours also have their own support list, xubuntu-users, lubuntu-users, kubuntu-users, edubuntu-users and many more
<benonsoftware> You can check out the users lists at https://lists.ubuntu.com/#Community+Support
<benonsoftware> And the LoCo lists at https://lists.ubuntu.com/#Ubuntu+Worldwide+LoCo+Teams
<ClassBot> There are 10 minutes remaining in the current session.
<benonsoftware> I believe I've covered most of the support areas
<benonsoftware> If anyone has any questions, just ask. :)
<ClassBot> There are 5 minutes remaining in the current session.
<benonsoftware> I hope everyone has enjoyed the Ubuntu User Days for the saucy cycle.
<benonsoftware> And a big thank you to all of the other instructors.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2014/01/26/%23ubuntu-classroom.html
* 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
<an0n432O> hi
#ubuntu-classroom 2016-01-28
<p444> Hi, i have installed Nagios and plugins and have an issue, can someone help. im  learing it in school and i'm stuck on one part
