#ubuntu-classroom 2007-01-29
<tonyyarusso> build-deps rather
<tonyyarusso> Darn those Ss
<tonyyarusso> Or maybe not...
<tonyyarusso> Guess it is without the s
<T-ROK> lol
<T-ROK> ok done
<tonyyarusso> hmm
<tonyyarusso> Run that verbose?  'sudo apt-get build-deb -v idjc'
<T-ROK> ok
* nothlit wonders why tony isn't just doing this, as it'd be difficult to learn anything
<T-ROK> good point
<nothlit> i didn't learn anything running gentoo except how to exactly manipulate portage
<tonyyarusso> Try 'sudo aptitude install libflac-dev libjack0.100.0-dev libogg-dev libsamplerate0-dev libshout3-dev libslang2-dev libsndfile1-dev libspeex-dev libtheora-dev libvorbis-dev libxine-dev python-gobject-dev python-gtk2-dev'
<tonyyarusso> now wait a sec
<nothlit> tonyyarusso, and after you install idcj, sudo aptitude markauto all those packages
<tonyyarusso> nothlit: Something in here wants to upgrade libc6-i686!
<nothlit> thats part of ubuntu-minimal
<tonyyarusso> I know...not pretty
<nothlit> there was some libc6 dependency breakage lately in feisty
<nothlit> err edgy
<tonyyarusso> Why does this need a non-dev one?
<tonyyarusso> aargh
<nothlit> libc6 problems? http://ubuntuforums.org/showthread.php?p=2057713
<tonyyarusso> nothlit: Are you suggesting maybe his Edgy isn't up to date and that's the problem, not actually what we're doing?
<nothlit> i'm saying that could be the issue
<nothlit> TONS of people had that libc6/-i686 problem
<tonyyarusso> He has the new version listed there.
<nothlit> anyways for me, whenever i installed a package thats dependencies weren't filled and used dpkg, aptitude install fixed them automagically
<tonyyarusso> I'm asking some people where we go from here.
<nothlit> kk
<T-ROK> so?
<tonyyarusso> We're debating
<nothlit> you asking in #ubuntu-dev ?
<tonyyarusso> -ops, actually
<tonyyarusso> (there happen to be some devs around)
<nothlit> aww, i doubt i could go watch in there
<tonyyarusso> You could.  quietly :)
* nothlit creeps into the ops channel
<tonyyarusso> T-ROK: Open up the source folder again
<T-ROK> that one?
<tonyyarusso> yeah
<tonyyarusso> Bring it more into the main window.
<tonyyarusso> I want to see if we can find a depends/rules file
<tonyyarusso> What's in the INSTALL text file first?
<T-ROK> the thing i put in the paste bin
<tonyyarusso> Ah, cool.  Pastebin README too then.
<nothlit> http://paste.ubuntu-nl.org/3241/
<T-ROK> ok
<T-ROK> how do i get to the pastebin again?
<tonyyarusso> !paste
<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 (be sure to give the URL of your paste - see also the #ubuntu channel topic)
<T-ROK> Internet DJ Console README.
<T-ROK> A full set of documentation can be found in the doc directory of the source tree in html format and on the homepage http://idjc.sourceforge.net.
<T-ROK> thats all
<tonyyarusso> awesome
<tonyyarusso> Okay, we're either going to try a different tactic or not be able to do it.  In either case, we're not going to use feisty sources after all.  Open up sources.list again, remove those four we added at the bottom, uncomment the other -src lines from before, save, and update.
<T-ROK> do i press n on that thing then
<tonyyarusso> Press q, actually.
<T-ROK> ok now how do i open that again
<tonyyarusso> gksu gedit /etc/apt/sources.list
<T-ROK> and save?
<tonyyarusso> yes
<T-ROK> ok
<tonyyarusso> and aptitude update
<T-ROK> ok how lol
<T-ROK> i have bad memory
<tonyyarusso> sudo aptitude update
<T-ROK> lol easy enough
<T-ROK> ok
<tonyyarusso> Okay, where are you at now - waiting?
<T-ROK> who me?
<tonyyarusso> yeah
<T-ROK> im just siting here reading what you guys are saying scratching my head
<T-ROK> :-P
<tonyyarusso> 'k
<gnomefreak> wouldnt even worry about it. tonyyarusso will let you knwo what to do ;)
<gnomefreak> i dont see why just doing ./configure than make than checkinstall should do fine unless you really want to change default ./configure
<tonyyarusso> Right now I'm looking up package names for the actual dependencies listed on the web site, and checking which ones have -dev things to go with.
<gnomefreak> tonyyarusso: the INSTALL file doesnt tell you?
* nothlit thinks tonyyarusso is being very thorough :)
<nothlit> i just try and see if things break
<nothlit> ./configure almost always tells you
<T-ROK> i'm reading the evh article in march's isue of guitar world since were all stateing what were doing :p
<tonyyarusso> gnomefreak: Doesn't look like it.
<tonyyarusso> nothlit: well, true
<gnomefreak> cant help with depends till i finish here and boot ubuntu :(
<gnomefreak> tonyyarusso: you are using apt-cache search right?
<tonyyarusso> gnomefreak: yes
<gnomefreak> ok good :) p.u.c takes too damn long
<nothlit> apt-cache --names-only search
<nothlit> gnomefreak, never seen it shortened like that
<T-ROK> wow windows is so user friendly lol
<gnomefreak> T-ROK: not really :(
<T-ROK> more so than this lol
<gnomefreak> file system on linux is easier to understand if you ask me
<T-ROK> well, i guess it depends what you got used to
<gnomefreak> easy to find config files in linux
<T-ROK> im completely new to linux so its all quite confusing
<nothlit> yes windows is very point and click friendly
<gnomefreak> more you play easier it becomes
<nothlit> it all depends on your definition of user-friendly though
<T-ROK> yeah i suppose
<nothlit> user intuitiveness/power/control
<gnomefreak> T-ROK: i see it this way. example your 25 that means you have been using windows for 18 years (who wouldnt learn something in 18 years)
<T-ROK> tonyyarusso, if i go run and grab a shower can you controll my pc and stuff or should i stay here?
<T-ROK> yeah i suppose
<tonyyarusso> T-ROK: almost there
<T-ROK> ok
<gnomefreak> tonyyarusso: build it for him since youve gone this far. ill post the .deb
<gnomefreak> lol
* gnomefreak on feisty cant build it
<gnomefreak> oh wait no im not eaiterh im on suse will be on feisty in 30 minutes :(
<T-ROK> i'm going to want to install this on other machines later this week, would you recomend an easy way....they dont have os's yet so
<gnomefreak> T-ROK: use checkinstall and save the .deb file
<gnomefreak> T-ROK: transfer the .deb file to otehr pcs
<T-ROK> i dont know what that means :-[
<tonyyarusso> sudo aptitude install python python-dev eyed3 python-eyed3 jackd python-gtk2 python-gtk2-dev vorbis-tools libxine-dev libxine1 libsamplerate0 libsamplerate0-dev libsndfile1 libsndfile1-dev flac libflac-dev libshout3 libshout3-dev lame liblame0 liblame-dev libfaad2-0 libfaad2-dev
<gnomefreak> tonyyarusso: will explain it in more detail im sure
<tonyyarusso> T-ROK: ^^
<T-ROK> lol
<gnomefreak> tonyyarusso: add checkinstall and build-essential
<tonyyarusso> gnomefreak: already got b-e
<gnomefreak> to that list :)
<tonyyarusso> T-ROK: Yeah, throw checkinstall on the end
<gnomefreak> tonyyarusso: hes gonna want to use it on mor ethan one pc
<gnomefreak> make install doesnt do .debs
<T-ROK> oops should i press n and redo it then?
<tonyyarusso> gnomefreak: Yeah, just forgot to do it now :)
<gnomefreak> sure you want to use aptitude for that
<tonyyarusso> T-ROK: Sure.  Or just do it again later.
<tonyyarusso> gnomefreak: why not?
<gnomefreak> lots of recommends and suggested packages will also be installed
<T-ROK> ok i pressed n so whats the complete thing i need to do
<gnomefreak> unles syou use -R
<tonyyarusso> a'ight
<tonyyarusso> sudo aptitude -R install python python-dev eyed3 python-eyed3 jackd python-gtk2 python-gtk2-dev vorbis-tools libxine-dev libxine1 libsamplerate0 libsamplerate0-dev libsndfile1 libsndfile1-dev flac libflac-dev libshout3 libshout3-dev lame liblame0 liblame-dev libfaad2-0 libfaad2-dev checkinstall
<gnomefreak> talking what 50 or so packages compared to 15-20
<tonyyarusso> gnomefreak: Right syntax, or does -R come after intall?
<gnomefreak> thats fine
<tonyyarusso> 'k
<tonyyarusso> Are we having fun yet?
<tonyyarusso> :P
<gnomefreak> doesnt much matter wher the flags go (sometimes but eh)
<gnomefreak> not me
<T-ROK> i tihnk my heads about to explode
<tonyyarusso> One of these days I'll finish reading the packaging docs, and know how to do this without checkinstall....
<tonyyarusso> gnomefreak: Do we add packages to universe for released non-LTS ever?
<T-ROK> i wish someone would just make a exe like windows that i could just double click and install:-P
<gnomefreak> tonyyarusso: ill trade you. you go through my email (i havent checked it in 2 days or so) and ill build it. im betting ill be done building it and installing it before you are done with my email
<tonyyarusso> T-ROK: They are.  That person is you.  :)
<tonyyarusso> kinda
<T-ROK> oh what lol
<tonyyarusso> gnomefreak: I'll bet you're right.
<gnomefreak> maybe 600 emails give or take
<T-ROK> 8-)
<tonyyarusso> It would be a good long-term skill.
<gnomefreak> T-ROK: once you do it. its not as hard as you think it is
<tonyyarusso> Then I could help out more with stuff than just sitting on IRC too
<T-ROK> so what is this doing now making a file?
<gnomefreak> if the make files and config files are good you should hav eno problems
<gnomefreak> T-ROK: installing dependencies
<nothlit> tonyyarusso, add? i doubt it unless fixing a serious vulnerability required it
<tonyyarusso> T-ROK: Right now you're installing dependencies.  In the end you will get a .deb file which on subsequent machines you can just double-click to install.
<T-ROK> oh ok sweet
<gnomefreak> any debain or debian type distros like ubuntu llibrant and a few others
<gnomefreak> -l
<nothlit> eh, checkinstall packages aren't really supposed to be distributed
* nothlit thinks gdebi requires more than a double-click
<tonyyarusso> gah, there's more packages
<gnomefreak> gdebi should handle depends for you maybe 1 or 2 more clicks
<T-ROK> it finished !
<gnomefreak> nope
<gnomefreak> sorry i like that part
<gnomefreak> T-ROK: btw make might take a while
<gnomefreak> ive ran make on somethings for a few 3-4 hours
<T-ROK> what you mean its not done?
<gnomefreak> T-ROK: you just installed packages you need to build it
<T-ROK> oh
<T-ROK> so now what?
<gnomefreak> T-ROK: maybe 6 more commands
<tonyyarusso> sudo aptitude install jackeq libjack0.100.0-0 libjack0.100.0-dev jack
<tonyyarusso> gnomefreak: more...
<gnomefreak> ah more
<gnomefreak> jackd should have brought those in
<nothlit> err jack is like a game or something
<nothlit> !info jack
<ubotu> jack: Rip and encode CDs with one command. In component universe, is optional. Version 3.1.1+cvs20050801-11 (edgy), package size 125 kB, installed size 580 kB
<gnomefreak> its sound
<nothlit> sorry its a ripper
<gnomefreak> sort of
<nothlit> i mean the jack package
<tonyyarusso> I dunno, I did a few at a time :)
<tonyyarusso> It wanted "jack", but I suspect it actually needs the others instead.
<nothlit> the jack asychronous and synchronous packages are the jackd
<T-ROK> tonyyarusso, i really need to go get my shower lol, are you able to controll my computer to do the rest?
<nothlit> i'm saying "jack" the package in ubuntu is not what you want
<tonyyarusso> T-ROK: Maybe?  I'm not sure if I'm just viewing or if I can control. We'll find out in a sec.
<nothlit> gnomefreak, see the !info jack :P
<T-ROK> ok
<gnomefreak> nothlit: i saw it
<tonyyarusso> gaaah
<tonyyarusso> Yep, I have control T-ROK
<tonyyarusso> cool
<gnomefreak> lol
<T-ROK> ok im going for a bit then
<gnomefreak> tonyyarusso: ssh?
<T-ROK> have fun! :-p
<tonyyarusso> gnomefreak: vnc
<nothlit> tonyyarusso, you can control lol
<tonyyarusso> T-ROK: Leave the terminal up!
<nothlit> if its default
<tonyyarusso> there
<gnomefreak> leave everything up
<nothlit> gnomefreak, i told them to use a reverse connection vnc server, because its the easiest thing
<tonyyarusso> gnomefreak: I meant up as in maximized - I can't see his panel :S
<nothlit> tonyyarusso, i was recommending you do it for him lol because its highly doubtful he will learn anything
<gnomefreak> they are gonna have an open connection for a while im betting
<nothlit> oh, don't fullscreen in the vncviewer default package that ubuntu has
<nothlit> not unless you want to go to virtual console and run killall
<nothlit> you need the vnc4 version by realvnc
<gnomefreak> nothlit: i might have not held that back in the beginning ;)
<nothlit> or maybe the tightvnc viewer, i'm not sure how that one is
* gnomefreak never used vnc 
<nothlit> the reverse scrolling in vncviewer 3 is funny... you need to right click
* nothlit has got freenx also working on his comp ^^
<tonyyarusso> what the heck...
<gnomefreak> you would thinnk 1.2 gig transfer file to file would be faster
<gnomefreak> tonyyarusso: what errors?
<tonyyarusso> gnomefreak: Says samplerate isn't found.
<gnomefreak> you cant be much past ./configure
<nothlit> gnomefreak, rofl i would expect that to take hours on adsl
<nothlit> 40kbps is torture
<gnomefreak> half hour give or take
<tonyyarusso> That's with samplerater-programs libsamplerate0 libsamplerate0-dev
<tonyyarusso> -r on rater
<gnomefreak> nothlit: this is off net. on net im at about 26kbps down and 10 up
<gnomefreak> tonyyarusso: your missing one or 2
<nothlit> off net? it should take 5 minutes tops
<nothlit> even on wireless
<gnomefreak> half hour :(
<tonyyarusso> gnomefreak: one or two what though?  These are the only ones apt-cache gives.
<gnomefreak> 36 minutes
<gnomefreak> tonyyarusso: one or two packages
<nothlit> gnomefreak, you running at 10mbps?
<gnomefreak> tonyyarusso: is this a setting your ssetting in ./configure?
<gnomefreak> 493kbps atm
<nothlit> tonyyarusso, theres a prog that can help you find depends
<tonyyarusso> gnomefreak: This is ./configure failing to run, with the only option passed being --prefix
<gnomefreak> tonyyarusso: remove the --refix and try it
<nothlit> or LjL has a script that wraps that and checkinstall together
<gnomefreak> prefix even
<nothlit> tonyyarusso, its on the wiki somewhere
<nothlit> !checkinstall
<ubotu> checkinstall is a wrapper to "make install", useful for installing programs you compiled. It will create a .deb package, which will be listed in the APT database and can be uninstalled like other packages. See https://help.ubuntu.com/community/CheckInstall - Read the warnings at the top and bottom of that web page, and DO NOT interrupt CheckInstall while it's running!
<gnomefreak> this is too much damn work
<nothlit> tonyyarusso, https://help.ubuntu.com/community/AutoApt
<gnomefreak> auto-apt is bad
<gnomefreak> from what i hear
<gnomefreak> autodeb is the one you were referring to :)
<tonyyarusso> nothlit: I don't have header files though.
<tonyyarusso> checking for SAMPLERATE... configure: error: Package requirements (samplerate) were not met:
<nothlit> gnomefreak, autodeb wraps auto-apt and checkinstall together
<nothlit> gnomefreak, anyways, i was just recommending it if he got stuck
<gnomefreak> i can help in about 10 minutes with that but not much before than
<nothlit> basically it can give you false alarms
<nothlit> thinks like make depends and fake depends
<nothlit> 'fake depends'*
<gnomefreak> tonyyarusso: there has to be a package missing or the path needs to be set (not sure) but when i get to ubuntu i will check for soundrate depends
<nalioth> autodeb ?
<gnomefreak> nalioth: its auto-apt and checkinstall in one script
<nothlit> nalioth, https://wiki.ubuntu.com/AutoDeb
<gnomefreak> from what the auto-apt wiki says
<tonyyarusso> libsamplerate0 Depends: libc6
<gnomefreak> ha
<tonyyarusso> all I found
<gnomefreak> figured as much
<gnomefreak> should be fine though
<tonyyarusso> But, Depends: libc6 (>= 2.3.4-1)
<nothlit> anyways you run your configure command inside auto-apt
<tonyyarusso> So yeah, that's fine
<gnomefreak> edgy is 2.4
<nothlit> or maybe i'm thinking of the wrong package
<gnomefreak> look for libc6 dev packages or glibc dev packages
<gnomefreak> not sure what its listed as
* nothlit now only mostly knows arch package building
<tonyyarusso> okay
<gnomefreak> tonyyarusso: there should also be a libsamplerate0-dev
<tonyyarusso> gnomefreak: We have that one.
<gnomefreak> yay down to less than a minute :)
<gnomefreak> than copy it to ubuntu than continue the 24 hour download :(
<gnomefreak> brb booting ubuntu
<tonyyarusso> Waaaaaaiiiiitt a sec
* tonyyarusso looks again
* tonyyarusso blinks
<nothlit> tonyyarusso, consult the package building wiki articles
<nothlit> they should document the dependency finding tool somewhere
<nothlit> or the official dev handbook
<tonyyarusso> It seems to be working on his machine, and not mine.  I had anticipated the other way around.
<tonyyarusso> @gnomefreak: It seems to be working on his machine, and not mine.  I had anticipated the other way around.
<tonyyarusso> He looks all set
<tonyyarusso> I had been trying configure locally and failing, but for kicks I tried it there and it was fine
<gnomefreak> ah
<tonyyarusso> Why do you suppose that is?
<nothlit> diff environment
<nothlit> or the packages have been updated and include different dependencies/structure on feisty
<tonyyarusso> That could be
<nothlit> s/structure/architecture
<T-ROK> im back
<tonyyarusso> T-ROK: :)
<T-ROK> is it done?
<tonyyarusso> I think so.
<tonyyarusso> Try running it.
<T-ROK> cool
<T-ROK> how?
<tonyyarusso> It _probably_ added itself to your Applications menu.
<T-ROK> yup
<T-ROK> i see
<tonyyarusso> sweet
<tonyyarusso> Give it a spin
<tonyyarusso> Not bad...
<nothlit> oh you used checkinstall huh? did you add the dependencies into the checkinstall package?
<nothlit> oh you can purge all the -dev packages now they should only be makedepends
<T-ROK> sweet
<tonyyarusso> Now playing: Joel Plaskett - Nowhere Without You :)
<T-ROK> how do i install it on others now?
<gnomefreak> T-ROK: copy the .deb file to a USB stck or cd or somehting
<gnomefreak> email even maybe
<tonyyarusso> T-ROK: In that same folder, there's a .deb file.  Just copy that over to the other computers and double-click (in Ubuntu at least), or do 'sudo dpkg -i packagename.deb'
<tonyyarusso> Yeah, if you want to look back at what we did and get rid of the -dev packages, go ahead.
<T-ROK> it wont play?
<tonyyarusso> err
<nothlit> he needs to start jackd maybe
<tonyyarusso> nothlit: Is that an init script?
<nothlit> and kill esd if he has that
<nothlit> tonyyarusso, not sure
<nothlit> tonyyarusso, i just figured out the jackd stuff so wine would stop complaining
<tonyyarusso> nothlit: You want to take it from here, since you seem to know how this package works a little?
* nothlit has never run idjc
<nothlit> i just read some random wiki article about sound
<nothlit> but only in scanning
<nothlit> and i have no idea how that package is supposed to work, or jack
<nothlit> the #ubuntu-studio folks might know
<tonyyarusso> true
<nothlit> or ##linuxaudio
<nothlit> i don't know what #lad is
<nothlit> oh linux audio developers
<nothlit> AlinuxOS, this is an ubuntu channel, not an alinuxos channel :P
<AlinuxOS> :)
<AlinuxOS> it's only my nickname
<tonyyarusso> T-ROK: Do you have all of the necessary codecs and such for the type of music file you're trying to play?
<T-ROK> i wouldnt know lol
<T-ROK> i just installed ubuntu so maybe not
<tonyyarusso> Aaaaaah
<tonyyarusso> That's it.
<tonyyarusso> !restricted | T-ROK
<ubotu> T-ROK: For multimedia issues, this page has useful information: https://help.ubuntu.com/community/RestrictedFormats - See also http://help.ubuntu.com/ubuntu/desktopguide/C/common-tasks-chap.html - But please use free formats if you can: https://help.ubuntu.com/community/FreeFormats
<T-ROK> so that will install all of the codecs?
<nothlit> for gstreamer, it should
<tonyyarusso> It takes a couple of steps, but yes.  Notably, you'll need to get w32codecs separately.
<nothlit> barring windows/realplayer/apple codecs and dvd decryption
<T-ROK> how do i get those ones?
<nothlit> the page will tell you how
<T-ROK> ok
* nothlit thinks the gpg import commands should tell people to uses sudo ahead of time
<nothlit> use*
<T-ROK> so i should do this to? https://help.ubuntu.com/community/RestrictedFormats/WindowsCodecs
<tonyyarusso> yep
<nothlit> piping breaks the sudo pw prompt
* tonyyarusso needs a meal soon :P
<T-ROK> ok when thats done do i have to do anything else?
<tonyyarusso> probably not
<T-ROK> ok
<gnomefreak> your gonna need libxine-extracodecs
<tonyyarusso> ah
<gnomefreak> maybe w32codecs also for one or 2 types
<nothlit> does idjc use libxine?
<tonyyarusso> yeah
<gnomefreak> iirc one of the depedns on that was libxine
<nothlit> oh, then he doesn't need the gstreamer codecs
<nothlit> but they're good to have ^^
<T-ROK> it's still not playing the mp3's
<tonyyarusso> That's probably the libxine-extracodecs thing, right gnomefreak ?
<tonyyarusso> T-ROK: Install that when your w32 is done
<gnomefreak> huh?
<gnomefreak> yes
<gnomefreak> tonyyarusso: not sure if it uses gstreamer also or not i just remember libxine
<gnomefreak> so you will want the libxine-extracodcs
<tonyyarusso> T-ROK: Unmute your PC Speaker :)
<T-ROK> how?
<tonyyarusso> The window you just had open - go back to that'
<T-ROK> lol
<tonyyarusso> See that?
<nothlit> ROFL
<T-ROK> still cant hear though
<tonyyarusso> How's your w32 download doing?
<tonyyarusso> good
<T-ROK> done?
<tonyyarusso> sudo aptitude install libxine-extracodecs
<T-ROK> ok
<T-ROK> :D
<T-ROK> it works
<T-ROK> Thanks!
* gnomefreak gonna break something :(
<T-ROK> how will i get all of that on the other computers?
<tonyyarusso> a sec - watch
<tonyyarusso> ohp, or not.
<T-ROK> what
<T-ROK> ooops i closed it
<T-ROK> how do i get that again
<nothlit> you need all the dependencies again
<tonyyarusso> Home Folder > where the source was > the deb file - see a deb file?
<tonyyarusso> nothlit: You're mean
<nothlit> tonyyarusso, you used checkinstall :P
<tonyyarusso> nothlit: so?
<T-ROK> yeah theres a deb there
<nothlit> did you add all the needed dependencies in to the package desc?
<nothlit> i tried before, didn't work too well (i didn't try very hard though)
<tonyyarusso> I didn't, no
<tonyyarusso> Oh...
<tonyyarusso> Not the compile ones, the others...
<nothlit> yeah, thats why you need all the dependencies again, for transportation
* nothlit is not sure the dependency editing is built into checkinstall yet
<tonyyarusso> Well, you can just copy-paste some apt-get lines first then.
<tonyyarusso> Basically, everything that didn't end in -dev
<T-ROK> can we compile another .deb thing that will put on all of th ecodecs too
<tonyyarusso> We probably could.  I'm not really sure about the ins and outs of checkinstall though.  nothlit you want to, so I can eat?
<T-ROK> can i make my own irc chanel and host it and stuff?
<T-ROK> like for the station
<T-ROK> for requests
<nothlit> yes, but if its not official you need ##
<nothlit> tonyyarusso, they're all there if i scroll up?
<tonyyarusso> So like, /join ##T-ROK
<T-ROK> is it possible to make an official one
<T-ROK> and have whoevers Djing at the time be a mod on it
<tonyyarusso> nothlit: Should be - I only added -dev after that I think
<distro-tester> hello how u unistall things on wine ?
<tonyyarusso> T-ROK: Check out freenode.net for lots of instructions on that sort of thing.  You could use a supybot to auto-op people during their time slot.
<nothlit> or eggdrop
<nothlit> is supybot > eggdrop now or something?
<nothlit> distro-tester, run the uninstaller
<tonyyarusso> supybot I have a smidgen of knowledge about is all ;)
<nothlit> or start again!
<distro-tester> dosen't work
<distro-tester> hi tony
<tonyyarusso> hi distro-tester
<nothlit> remove you wine folder and start again with wineprefixcreate/winecfg
<distro-tester> if u guide me trought it im new user know 0
<T-ROK> i have to go will one of you guys be on tomorow to help me out some more?
<tonyyarusso> I'll be in class most of tomorrow, but I'm around a lot
<T-ROK> what time is it for you now
<nothlit> somebody will probably be around to help you in #ubuntu
<nothlit> but you need to save the list of dependencies
<gnomefreak> who ha sa fast as hell net connection and feels like downloading burning and sending ISO :( j/k btw
<tonyyarusso> 8:23 PM
<nothlit> samplerater-programs libsamplerate0 libsamplerate0-dev jackeq libjack0.100.0-0 libjack0.100.0-dev
<nothlit> python python-dev eyed3 python-eyed3 jackd python-gtk2 python-gtk2-dev vorbis-tools libxine-dev libxine1 libsamplerate0 libsamplerate0-dev libsndfile1 libsndfile1-dev flac libflac-dev libshout3 libshout3-dev lame liblame0 liblame-dev libfaad2-0 libfaad2-dev
<tonyyarusso> gnomefreak: I could :)
<nothlit> gnomefreak, you need edgy or feisty?
<T-ROK> so i should put those in a text file and after i install idjc on another pc run those
<distro-tester> so tony can u help me unistall skype for windows in wine?
<gnomefreak> nothlit: neither that would be too easy
<distro-tester> or it's better i remove wine?
<nothlit> gnomefreak, uptodate feisty?
<tonyyarusso> distro-tester: no, sorry.  Don't use wine nor skype
<gnomefreak> nothlit: suse 10.2
<gnomefreak> im running feisty on here edgy on a couple upstairs
<nothlit> tonyyarusso, you need a dvd writer and dvdr, or 5 cdrs :P
<tonyyarusso> nothlit: Have both :)
<gnomefreak> nothlit: doesnt everyone have a dvd writer
<tonyyarusso> Well, DVD writer - would have to get dvdr from someone
<nothlit> gnomefreak, you're evil, :P having someone send you all of suse
<gnomefreak> i have 6
<gnomefreak> nothlit: i said j/k
* gnomefreak thinks of easy faster way to do this
<nothlit> what version if suse do you mean?
<gnomefreak> 10.2
<nothlit> what forums say about SuSE eval totally conflicts novell's site
<nothlit> no theres two versions of Open SuSE, an oss and non oss version or something
<gnomefreak> opensuse and suse are not really the same
<T-ROK> how can you get feisty?
<nothlit> something else i read said open suse was OSS and suse eval was the non oss
<gnomefreak> tonyyarusso: you dont want to yet
<nothlit> T-ROK, don't worry about it
<gnomefreak> oops
<nothlit> T-ROK, its for developers, mostly
<gnomefreak> T-ROK: you dont want to yet its way too early in devel
<T-ROK> ok
<nothlit> distro-tester, ask #wine, i'm not sure if there is an official way or special tool
<distro-tester> thanx
<nothlit> i think #wine is nicer than most channels, not sure though
<T-ROK> ok well im out
<T-ROK> i'll be around tomorow
<tonyyarusso> that was fun
<zen> morning
<distro-tester> btw im sorry tony i installed last wine now im better
<tonyyarusso> ah
<distro-tester> u know where to find tcl for amsn?
<tonyyarusso> apt-get install amsn?
<distro-tester> yes but adept has 95 latest is 30 i istalled that only i nead tlc to finish istall where i get it from?
<tonyyarusso> Why do you need the latest?
<distro-tester> tcl*
<nothlit> you need to be more clear with version numbers and dependencies
<nothlit> anyways, always running the latest software goes against how ubuntu works
<distro-tester> couse i like to install updated software im i wrong on that?
<distro-tester> i see
<distro-tester> what distro does that?
<distro-tester> i nead all gui and latest software avaible
<nothlit> gentoo
<nothlit> oh gui
<tonyyarusso> apt-get install tcl8.4 should work anyway, but unless you have a real reason to get the latest I don't see why you'd bother
<nothlit> i have no idea
<distro-tester> i see i just fought last version was better but if u say amsn is the same even if older version i can keep that
<distro-tester> btw i could use kopete to they both do cam on msn yahoo so have to see what's best
<tonyyarusso> distro-tester: Have you considered #ubuntu-it, by the way?
<distro-tester> yes i like more english sites u mind?
<tonyyarusso> Not really, just thought it might be more effective.
<distro-tester> ok i installed that from adept thanx tony the tcl
<distro-tester> 8.4
<distro-tester> can u explain me why the latest software is not ubuntu and what u miss by not having latest software ?
<nothlit> stability and ease of management
<nothlit> ubuntu is based off debian stable snapshots, which they patch and make more stable and then provide security updates for
<nothlit> err debian unstable snapshots*
<nothlit> its by necessity that ubuntu is this way
<distro-tester> i see so if im looking for gui and latest software rpm distros are more like right noth?
<tonyyarusso> No.  Source distros.
<nothlit> he wants gui
<tonyyarusso> good luck
<nothlit> anyways theres binary distros that are rolling as well
<nothlit> but they're all advanced linux distros and you wouldn't like them, distro-tester
<distro-tester> i see
<nothlit> my guess is that you would want SuSE, or VLOS
* tonyyarusso guesses they lack stability for rolling binary...
<distro-tester> yes like gentoo that install every think from source kernell
<nothlit> but a Mac is a good thing like i originally said
<nothlit> tonyyarusso, not really, i'm running one atm
<distro-tester> im trying to put back freespire now as u said i won't be  in danger of hack couse now has pass for console
<nothlit> tonyyarusso, and theres still a build system
<nothlit> no i said it uses sudo
<distro-tester> what u think of pcoslinux and mepis?
<nothlit> mepis has good hardware support/dangerous territory software and drivers
<nothlit> and its all setup for you
<distro-tester> yes im a bit confused on su sudo and root to
<nothlit> pclinuxos, was not memorable in the reviews i've read
<nothlit> but it is prettier than mepis
<distro-tester> now is 2 to ubuntu on distrowatch strange
<distro-tester> yes another problem os simple distros that they ugly whit old kde
<distro-tester> usualy
<nothlit> default, unmodified.
<distro-tester> ahha seems like seems in linux that what u get in a distro u loose in another and there's no best one
<distro-tester> maby couse they to much aroud now
<nothlit> thats because theyre for advanced users
<nothlit> anyways play around and you'll find the best for you
<distro-tester> i hope
<distro-tester> can u explain me what changes from linspire whit real distros as here where u must put pass in console?
<distro-tester> that is what i can't understand much now
<nothlit> i explained it before, but i'm afraid repeating it won't help you understand
<distro-tester> well what i rember on both lin and free as they the same is that u don't put password on console as here just write command line if u want and go
<distro-tester> but cnr does all for u so don't nead it
<distro-tester> that's what i like of it
<distro-tester> i know u powerusers prefare to do every thing from console do thing i hate
<distro-tester> good night must be night in usa
<tonyyarusso> It's 8:30 AM US Eastern
<distro-tester> 14.30 in rome
<distro-tester> this is what i nead now Tk GUI Toolkit if u know where to find it for amsn
<tonyyarusso> you'll find it in the repos with everything else.  Search them.
<distro-tester> i found gtk+2 must be that
<T-ROK> hello
<T-ROK> I'm having trouble with IDJC again
#ubuntu-classroom 2007-01-30
<T-ROK> Hey, I need some help with IDJC i finaly got it installed the other day but now i can barely hear anything
<nothlit> rofl he needs to stop leaving so quickly
<nalioth> !ping
<ubotu> pong
<tonyyarusso> plorp
<gnomefreak> tonyyarusso: did you look at ryanakca's times?
<gnomefreak> wait it doesnt matter much since mez cant make it
<tonyyarusso> his were same as mine though, anything after class is done for the day Eastern
* tonyyarusso looks questioningly at "I'll be drunk" as an excuse though...
<nalioth> um, -nun is the next room over
<tonyyarusso> righto - whoop
#ubuntu-classroom 2007-02-01
<T-ROK> hey i need major help right away
* mode/#ubuntu-classroom [+o LjL]  by ChanServ
* mode/#ubuntu-classroom [+b *!*@85.104.83.221]  by LjL
* mode/#ubuntu-classroom [-o LjL]  by LjL
<DerXero> gn8
#ubuntu-classroom 2007-02-02
<Bottazzo> jrib, vc entende o que eu quero fazer?
<jrib> sim
<jrib> vc tem mplayer ja?
<Bottazzo> jrib, quero deixar um video rodando de papel de parede.. que nem no windows vista
<Bottazzo> dexa eu ve
<Bottazzo> isntalei o ubuntu edgy a 10 minutos
<Bottazzo> eu to com o totem movie player
<jrib> ah, entao nao deve ter
<jrib> tem que usar o "multiverse", sabe fazer?
<Bottazzo> sei sim
<Bottazzo> ja vou isntaalr
<jrib> k
<Bottazzo> removo o totem primeiro ?
<Bottazzo> melhor neh
<Bottazzo> ?
<jrib> nao e preciso
<Bottazzo> ok
<Bottazzo> sudo apt-get install mplayer?
<jrib> sim
<Bottazzo> ok 1 min
<jrib> para ter o wallpaper como video, nao pode ver os icons
<jrib> e a unica maneira que eu sei
<Bottazzo> quais icons ? do desktop ?
<jrib> sim
<Bottazzo> jrib, pow cara, n ta instalando.. ja liberei todos repositorios..ja dei update
<Bottazzo> e diz que n tem candidate
<Bottazzo> tentei mplayer ..tentei mplayer-386
<jrib> Bottazzo: pastebin o /etc/apt/sources.list
<Bottazzo> ok
<Bottazzo> demoro mas foi http://pastebin.com/873253
<Bottazzo> jaba,
<Bottazzo> jrib,
<Bottazzo> malz jaba
<jrib> pastebin.com e muito lento, para a proxima o http://paste.ubuntu-nl.org ou pastebin.ca sao melhor
<Bottazzo> ok (y)
<Bottazzo> oia eu viajanu
<Bottazzo> (y) coisa de msn
<jrib> ok, entra este comando:  gksudo gedit /etc/apt/sources.list
<jrib> nas linhas 17,18,32, e 33, mete " multiverse" no fim
<Bottazzo> que merda paro de funcionar isso aqui.. gedit arquivo n ta abrindo o gedit =/
<jrib> podes usar nano:   sudo nano /etc/apt/sources.list
<Bottazzo> jrib,  nao cara.. 1 seg.. n pode ser volto ja
<bottazzo> jrib, porra to zicado manow
<bottazzo> parou de funcionar o gedit ...
<bottazzo> ki raiva.. reiniciei xserver e nada
<bottazzo> ki raiva vehio
<jrib> o comando 'gedit' sozinho faz alguma coisa?
<bottazzo> ta abrindo o gedit normal
<bottazzo> quando mando abrir o arquivo source.list ele n abre
<jrib> e 'gksudo gedit'
<bottazzo> GnomeUI-WARNING **: While connecting to session manager:
<bottazzo> Authentication Rejected, reason : None of the authentication protocols specified are supported and host-based authentication failed.
<bottazzo> jrib,  estranho neh..
<bottazzo> vou reiniciar a mauqina ja volto
<bottazzo> =P
<jrib> isso e normal
<bottazzo> e pq n consigo abrir o gedit?
<bottazzo> reinicinado a maquina sera que arruma? =P
<bottazzo> coisa de windows =/
<jrib> nao sei
<bottazzo> vou tentar
<bottazzo> jrib, voltou a funcionar
<bottazzo> coloca muliverse
<bottazzo> no final ?
<bottazzo> multiverse
<bottazzo> ?
<jrib> nas linhas 17,18,32, e 33, mete " multiverse" no fim
<bottazzo> jrib, instalando =] 
<bottazzo> jrib,  posso manter o multiverse nas linhas do source? ou eh legal tirar depois de instalar o mplayer ?
<jrib> bottazzo: podes deixar, nao faz mal.  Os programas no multiverse nao sao "free" (nao gpl, etc...)
<bottazzo> ahta, entendi..blz deixarei
<bottazzo> pronto jrib
<jrib> ok, agora temos que dizer ao nautilus para nao tomar conta do desktop
<jrib> 'gconf-editor'
<bottazzo> q q vc quiz dizer com gconf-editor ? =P
<jrib> gconf-editor  e um comando :)
<bottazzo> opa..malz =P
<bottazzo> ok
<bottazzo> abriu
<jrib> depois, no gconf-editor vai ao /apps/nautilus/preferences/show_desktop e ?desliga?  (qual e a palavra certa aqui?)
<bottazzo> show desktop .. tem um check box..estava checkado, eu desckeckei
<LjL> descheckar, now that's nice :P
<bottazzo> =P
<jrib> ok, agora podes fechar gconf-editor
<bottazzo> ok
<jrib> mplayer -fixed-vo -fs -loop 0 -rootwin /path/to/video
<bottazzo> legal..soh preciso de um video pra teste iuahiuha
<bottazzo> o ubuntu vem com suporte ao que ?
<bottazzo> mpg ?
<bottazzo> avi ?
<bottazzo> preciso isntalar algum codec?
<jrib> esprementa com "/usr/share/example-content/Experience ubuntu.ogg"
<jrib> para codecs:
<jrib> !codecs
<ubotu> For multimedia issues, this page has useful information: https://help.ubuntu.com/community/RestrictedFormats - See also http://help.ubuntu.com/ubuntu/desktopguide/C/common-tasks-chap.html - But please use free formats if you can: https://help.ubuntu.com/community/FreeFormats
<jrib> !w32codecs
<ubotu> Seveas has a popular 3rd party repository for several packages, including the win32 codecs: see http://wiki.ubuntu.com/SeveasPackages - See also !Codecs
<bottazzo> legal vou tentar como seu exemplo
<bottazzo> ta tocando ta com som, mas n ta apecendo imagem
<bottazzo> nenhguma
<bottazzo> mplayer -fixed-vo -fs -loop 0 -rootwin /usr/share/example-content/Experience\ ubuntu.ogg
<bottazzo> essa foi a linha
<bottazzo> Opening video decoder: [ffmpeg]  FFmpeg's libavcodec codec family
<bottazzo> jrib, sera que eh pq n tenho o codec? mas eh ogg ja deveria vir com neh
<jrib> hmm
<jrib> mplayer /usr/share/example-content/Experience\  ubuntu.og
<jrib> mplayer /usr/share/example-content/Experience\  ubuntu.ogg  funciona?
<bottazzo> vou ver calm a ai
<bottazzo> rodou jrib  =[
<jrib> rodou?
<bottazzo> o que pode ser entao? =[
<bottazzo> sim rodou
<jrib> nao entendo
<bottazzo> pra q vc pos -vo ?
<bottazzo> -vo precisaria ter um drive dps
<bottazzo> q n tem nada setado
<jrib> -fixed-vo  e para nao fazer um pause quando acaba o video e comeca outra vez
<bottazzo> ahta malz =P
<jrib> o meu -vo  e xv
<bottazzo> q ?
<jrib> heh
<jrib> -vo  e outro switch
<jrib> "video output"
<bottazzo> pois eh vi errado =P
<bottazzo> posso colar
<bottazzo> uns erros aqui ?
<bottazzo> vou por o resultado no paste ubuntu ok ?
<jrib> k
<bottazzo> http://paste.ubuntu-nl.org/3782/
<bottazzo> jrib,
<jrib> bottazzo: estranho que nao pode abrir o ogg... tenta depois de instalar w32codecs
<jrib> entao so "mplayer /usr/share/example-content/Experience\ ubuntu.ogg" tambem nao deu video?
<bottazzo> jrib..deu video sim
<jrib> oh....
<jrib> bottazzo: ok, "mplayer -rootwin /etc/skel/Examples/Experience\ ubuntu.ogg" e depois viste se apareceu algun video debaixo das janelas?
<bottazzo> entao.. a porra toca o som e tudo..mas a imagem n aparece
<bottazzo> minimizei  e maximiei
<bottazzo> as ajanelas
<bottazzo> troquei de workspace
<bottazzo> e nada
<bottazzo> de imagem
<jrib> bottazzo: "killall nautilus"
<bottazzo> eu mato ele, e ele volta
<bottazzo> Oo
<jrib> gconftool-2 -g /apps/nautilus/preferences/show_desktop
<bottazzo> true !
<jrib> ah
<bottazzo> eu juro que destikei!
<bottazzo> =P
<LjL> with three different words, even
<bottazzo> putz.. agora eu removi .. matei tudo ..mandei rodar e continua nao aparecendo o video =/
<bottazzo> precisa reiniciar o x server
<bottazzo> ?
<bottazzo> que que se acha jrib
<jrib> gconftool-2 -g /apps/nautilus/preferences/show_desktop   agora diz false?
<bottazzo> sim diz false.. e agora eu n consigo mais selecionar nada no desktop
<bottazzo> nem botao direito nem anda
<bottazzo> ta realemtne desligado
<jrib> k
<jrib> mplayer -rootwin /usr/share/example-content/Experience\  ubuntu.ogg     no pastebin?
<bottazzo> jaja ja sei o que era
<jrib> ah o que?
<bottazzo> mesmo tirando o nautilus.. o papel de parede esatava por cima
<bottazzo> dai coloquei como nenhum e deu certo
<bottazzo> heheh mas tenho uma pessima noticia iuoahuiaha.. n fica legal..
<bottazzo> quando vc abre uma janela e minimiza, o fica a sombra da janela no video..
<bottazzo> n volta a renderizar perfeitamenteo video =P
<bottazzo> moh trabalho hehehe
<bottazzo> =P
<bottazzo> hehe de qualquer forma vlw pela ajuda jrib  :)
<jrib> hmm aqui nao deixa a sombra
<bottazzo> aqui fica bem ruin..
<bottazzo> eu tenho uma ati
<bottazzo> mas eu n configurei ela
<bottazzo> pode ser isso
<bottazzo> eu n sei configura-la
<jrib> ah deve ser
<jrib> !ati
<ubotu> To install the Ati/NVidia drivers for your video card, see https://help.ubuntu.com/community/BinaryDriverHowto
<bottazzo> a ultima vez que tentei, perdi o x server tive que reinslar o linux
<jrib> oh
<bottazzo> =P
<nalioth> jrib: i didn't know you had it in you
<mnoir> ok
<mnoir> a little quiter
<Iceman> aye
<mnoir> i wanted to tell you a couple of things that will make your life easier
<Iceman> alright
<mnoir> as you can see - folks can jump to conclusions too quickly
<Iceman> it happens
<mnoir> that is why i start with what is really happening.
<mnoir> using gedit, gksudo, g just about anything will not work in recovery
<Iceman> aaaaah
<Iceman> that explains a lot
<mnoir> at the commandline, your choices are nano, vi, and others
<Iceman> oooooooh
<mnoir> and you use sudo to get root privs
<Iceman> im in a true terminal, so g never actualy loaded, did it?
<mnoir> correct
<Iceman> ok
<mnoir> if you cannot see pretty pix, you ain't in x
<Iceman> if i tried to start x, it would be a solid black screen
<Iceman> so how must i get this working in terminal?
<mnoir> the reason to match graphical sudo to graphical programs is that the environment will be set up correctly
<mnoir> ok - i dunno about your real problem
<Iceman> ok
<mnoir> but if you are editing things according to a howto, use nano or vi until you have x working
<mnoir> it should instruct you that way :)
<mnoir> you want to try one?
<Iceman> so what would nano replace?
<mnoir> nano is an editor
<mnoir> so 'nano <filename> if you do not need privs
<Iceman> much like gedit is an editor, correct?
<mnoir> correct
<Iceman> k....let me try it
<mnoir> but nano is cli and gedit is visual
<mnoir> in recovery you probably do not need sudo
<mnoir> as recovery is a special privileged mode
<Iceman> alright, it finally brought me to the file i need to edit
<mnoir> ok - so now you can persue your fix :)
<Iceman> if its special privilage, why is there no password block, since ur basically root inside it?
<mnoir> yes
<mnoir> technically, you are in what is called single user mode
<mnoir> which is a special mode that cannot be used for normal running
<mnoir> no security
<mnoir> no x
<Iceman> its like the white loading room in the matrix, where ne thing can be done, correct?
<mnoir> i guess
<mnoir> but you need to be careful not to screw stuff up
<mnoir> it is very easy to do so
<mnoir> if you are not careful
<Iceman> so ive heard
<mnoir> be sure to understand what folks tell you to do
<mnoir> don't edit files until you have made a backup of them
<mnoir> don't do stuff that folks say unless you understand the possible consequences
<mnoir> even me
<Iceman> well ive backed up my xorg.conf file before i started this, was there ne thing else i should have backed up?
<mnoir> if that is what yoe are editing, you're fine
<mnoir> editors cannot affect more than 1 file at a time unless you are being real fancy
<Iceman> i dont understand all this, so fancy is a no go
<mnoir> stay away from editing files where there is a * in the name you specify and you will be very safe
<mnoir> * is a wildcard
<mnoir> so editrrr a* would mean editrrr ab acccc ad etc etc etc
<mnoir> editrrr is a fake name
<mnoir> so i am not giving you and actual dangerous command
<mnoir> and=an
<Iceman> yeah, i at least understand the * command
<mnoir> good
<Iceman> seems to be universal in ne computer related commands/names
<mnoir> yes - * is almost always the general wildcard
<Iceman> been working on windows computers for so long, this linux stuff is really starting to cook my biscuits, but i love a challenge
<mnoir> so now you have a little of the basics and maybe you can get more help on your problem from the circus
<mnoir> linux is a little more heavyweight. more capabilities
<mnoir> but a little more like a motorcycle - the technology shows :)
<Iceman> yeah
<Iceman> ty very much for ur help
<mnoir> np :)
<Iceman> one more question
<mnoir> k
<Iceman> how do i save a file i just edited/created
<mnoir> in nano it should tell you at the bottom
<mnoir> sec
<mnoir> if you do ctl-x it will ask you to save
<mnoir> btw i did nano aaaa to look myself :)
<Iceman> hehe
<Iceman> w00t, my first 9 lines of code ever written
<mnoir> i dislike nano - i have been using vi for many years
<mnoir> but this is a matter of opinion :)
<mnoir> so - back to the playpen?
<mnoir> :)
<Iceman> ill use what ever i can get
<mnoir> expert now ....
<mnoir> problem with unix - you can get anything
<Iceman> aye aye
<mnoir> l8r
<Iceman> ty
<mnoir> :)
<jojoman02> hello
<mnoir> hi
<jojoman02> how, i can learn stuff here?
<mnoir> sometimes they do classes
<mnoir> i use it when i need quiet
<mnoir> and want othere to be able to watch us
<mnoir> others i mean
<jojoman02> kk
<mnoir> are the lines always the same?
<jojoman02> yeah
<mnoir> but you do not want to just store tham and cp them into place each time?
<jojoman02> yes
<jojoman02> the scirpt is only an installer script
<jojoman02> so it will be only run once per system
<jojoman02> i don't feel like having another blblbl.txt file, i would prefer it be just one file, u know
<mnoir> oh - I see
<mnoir> ok - you need to learn the form that kitche was explaining
<mnoir> it is called 'herefile' form
<jojoman02> allright
<jojoman02> ok
<mnoir> and relies on telling the cat statement what delimiter to use to end reading some inline text
<mnoir> i am a little rusty - lets race - i am going to google 'herefile ' and be back in a minnit
<jojoman02> kk
<mnoir> there are zillions of links - i am looking for a good one :)
<jojoman02> mnoir, where do i install progs in linux like the programs files folder?
<jojoman02>  /opt ?
<mnoir> there is a standard place
<mnoir> look at http://www.pathname.com/fhs/
<jojoman02> mnoir, thanks
<jojoman02> mnoir, man i tried programming, learned some python, made a fairly ok nice gui emcoder for mencoder
<jojoman02> mnoir, i gave up cuz the resources that are available for gtk are not great, and python gtk at the time didn't have features i needed (tray management)
<mnoir> http://moongroup.com/pipermail/shell.scripting/2002-March/007548.html
<mnoir> is a simple here-doc example
<jojoman02> mnoir, thankz
<mnoir> it is here-doc, not herefile
<mnoir> l8r :)
#ubuntu-classroom 2007-02-03
* mode/#ubuntu-classroom [+o tonyyarusso]  by ChanServ
* mode/#ubuntu-classroom [+b *!*@88.232.*]  by tonyyarusso
* mode/#ubuntu-classroom [-o tonyyarusso]  by ChanServ
<n2diy> I got kppp working on my test box, but it is failing on sig 1, which, IIRC is because it is expecting my ISP to authenticate. Which file do I had "noauth" to, to stop this?
#ubuntu-classroom 2007-02-04
* mode/#ubuntu-classroom [+o tonyyarusso]  by ChanServ
* mode/#ubuntu-classroom [-b *!*@88.232.*]  by tonyyarusso
* mode/#ubuntu-classroom [-o tonyyarusso]  by ChanServ
<pina> hi
#ubuntu-classroom 2008-01-28
<plavcik> nalioth: yes, you right, I noticed it too late :)
<rzr> hi
<rzr> any aliens in here ?
<rzr> probally ... and alien users ?
<rzr> http://www.omgili.com/mailinglist/debian-devel/lists/debian/org/20071123204406GR554samadcomau.html
<Kirrus> hi rzi
<Kirrus> this isn't a support channel, best place to ask would be #ubuntu
<Kirrus> !support
<ubotu> the official ubuntu support channel is #ubuntu. Also see http://ubuntu.com/support and http://ubuntuforums.org
<rzr> yes i know, but someone talked about this last session..
<Kirrus> rzr, whilst there is no session running, this channel tends to get ignored by everyone ;)
#ubuntu-classroom 2008-01-29
<et-0nd> hello
<jrib> hi
<jrib> we aren't going to use the script, because random scripts from forums tend to cause problems...
<jrib> et-0nd: you are using 64bit?
<et-0nd> i installed today ubuntu 7.10
<jrib> et-0nd: type this in a terminal and tell me the output: uname -a
<jrib> !terminal
<ubotu> The linux terminal or command-line interface is very powerful. Open a terminal via Applications -> Accessories -> Terminal (Gnome) or K-menu -> System -> Konsole (KDE).  Guide: https://help.ubuntu.com/community/UsingTheTerminal
<et-0nd>  uname -a
<et-0nd> Linux athlon-desktop 2.6.22-14-generic #1 SMP Tue Dec 18 08:02:57 UTC 2007 i686 GNU/Linux
<jrib> you are not using 64bit, so you do not need nspluginwrapper
<jrib> At the moment, the flash package is broken, so we install it manually.  K?
<et-0nd> sure
<jrib> http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash
<jrib> grab the tar.gz file from that site and put it on your Desktop
<et-0nd> http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz
<et-0nd> wget
<jrib> yep
<et-0nd> done
<et-0nd> tar xvf or...
<jrib> now, 'tar xf install_flash_player_9_linux.tar.gz'
<jrib> or with 'v' if you want verbose :)
<jrib> then 'cd install_flash_player_9_linux'
<jrib> then 'mkdir -p ~/.mozilla/plugins'
<et-0nd> done
<jrib> then 'cp libflashplayer.so ~/.mozilla/plugins'
<jrib> then restart firefox
<jrib> then enjoy annoying flash ads :P
<ToyKeeper> Heh, when you have it working, be sure to install the noscript extension...  to disable flash.  :)
<jrib> ha
<et-0nd> thanx it works i have other questions can i ask
<jrib> et-0nd: here's the details as to why the flash package is not working (if you care):
<jrib> !flash
<ubotu> To install Flash see https://help.ubuntu.com/community/RestrictedFormats/Flash (for !Dapper and !Edgy, a recent version is available in !backports) - See also !Restricted and !Gnash - The Flash package is currently BROKEN, see Â« /msg ubotu FlashIssues Â»
<et-0nd> flash is working
<jrib> et-0nd: best to ask in #ubuntu, so everyone can help
<et-0nd> well it seems i can get faster help in this room then in that other room
<jrib> et-0nd: k, you can ask, but I'm not sure I can answer :)
<et-0nd> its just  a basic ubuntu question
<jrib> go for it
<et-0nd> ok , i had before ubuntu 6.10 my isp banned my inernet cause my pc was sendin viruses online, so i formated my pc i went back and formated my pc and isntalled windows vista, but vista was not cool desktop like ubuntu  so i installed back again ubuntu 7.10 but i dunno what happened while installin ubuntu it never asked me to format my pc now i am wondering is my vista still in my pc
<jrib> k
<et-0nd> when i installed before 6.10 ubuntu it asked me to format my hd and create partion this time i think it did not or i messed up something
<jrib> how many hard drives do you have?
<et-0nd> one 80gb
<jrib> try 'df -h'
<jrib> make sure things add up...
<et-0nd> http://www.pastebin.ca/881151
<jrib> hmm
<jrib> how about 'sudo fdisk -l'
<et-0nd> http://www.pastebin.ca/881160
<et-0nd> is vista still on my pc
<jrib> nope
<et-0nd> k
<jrib> you've got 74GB for / and 1.5GB for swap
<et-0nd> i think i choosed options ubuntu to have the space it wants something like that
<et-0nd> but i never see it was formatin and removin vista
<jrib> et-0nd: yeah, that's good.  I really recommend having a separate /home partition so you can easily reinstall if needed, but just keep that in mind for next time
<jrib> it should offer that option early on et-0nd
<et-0nd> sure, is 7.10 the latest ubuntu
<jrib> yes, latest stable
<jrib> 7.10 means 2007, the 10th month, which is 2007 october
<jrib> and ubuntu releases every 6 months.  So the next one will be 8.04, in April
<et-0nd> are there any security tools to protect my ubuntu all i have is firestarter
<jrib> you don't need any
<jrib> firestarter isn't really necessary either, since ubuntu has no services listening on any ports by default
<et-0nd> ok thanx for your assistance now i  will read about ubuntu, thanx again you were so kindhearted
<jrib> no problem
<et-0nd> i forget something i have asus vga driver v451 on cd, when i am on windows i just install with cd how can i install the vga driver on ubuntu
#ubuntu-classroom 2008-01-30
<zLoSteR> hi
<zLoSteR> i need little help
<Kirrus> Hi zLoSteR
<Kirrus> !ask
<ubotu> Please don't ask to ask a question, ask the question (all on ONE line, so others can read and follow it easily). If anyone knows the answer they will most likely answer. :-)
<Kirrus> !support
<ubotu> the official ubuntu support channel is #ubuntu. Also see http://ubuntu.com/support and http://ubuntuforums.org
<Kirrus> I'd reccomend you go to #ubuntu, as this channel is not used whilst there are no scheduled sessions active.
<drgonzo00000> hey
<Jordan_U> drgonzo00000, The misleading part is that you have to remember that it is the shell which writes to the file when you use '>' and the shell is still running as "you", not root
<drgonzo00000> I'm the only user. Shouldn't I be root by default?
<Jordan_U> drgonzo00000, so even though you are running "echo" as root you are not writing to the file as root
<drgonzo00000> okay
<Jordan_U> Most definitely not :) ( That is the main reason XP and below is so insecure )
<drgonzo00000> so how do i become root
<drgonzo00000> use the su command?
<Jordan_U> drgonzo00000, You don't need to, the standard solution is to pipe the output to "tee" and have it write to the file
<drgonzo00000> so how would it look
<Jordan_U> so you would run something like: echo "whatever" | sudo tee /path/to/file
<Jordan_U> That will also print whatever you are echoing to the terminal BTW
<drgonzo00000> echo 22 > | sudo tee /proc/acpi/video/VGA/LCD/brightness
<drgonzo00000> ?
<Jordan_U> Looks correct to me
<Jordan_U> Wait , no
<drgonzo00000> let me try it
<drgonzo00000> nm
<Jordan_U> drgonzo00000, Get rid of the '>'
<drgonzo00000> okay
<drgonzo00000> is that because it is redundant
<drgonzo00000> because the pipe command takes the place of it?
<Jordan_U> drgonzo00000, it's because '>' is what you use to tell the shell to write to a file, but instead you want the shell to pass the output to 'tee'
<drgonzo00000> it's still not adjusting my brightness
<drgonzo00000> it just prints the # after i try it
<Jordan_U> drgonzo00000, What do you mean by your last comment?
<drgonzo00000>  echo 22 | sudo tee /proc/acpi/video/VGA/LCD/brightness
<drgonzo00000> next line: 22
<drgonzo00000> and I'm back at the prompt
<drgonzo00000> and my brightness is not adjusted
<Jordan_U> That is normal, it means that the file was written to successfully ( though unfortunately writing to that file does not change your brightness apparently :(  )
<drgonzo00000> any other suggestions?
<drgonzo00000> the brightness applet slides, but also that doesn't adjust my brightness either
<Jordan_U> DreamThief, What model laptop ( I assume this is a laptop, correct ? )
<Jordan_U> drgonzo00000, ^^ ( used wrong nick )
<drgonzo00000> i have a Toshiba A215-S5818
<drgonzo00000> with a Radeon x1200 card
<drgonzo00000> it wouldn't be a big deal if my battery lasted more than 2.5 hours, but unfortunately it doesn't
<drgonzo00000> Jordan_U: any suggestions?
<Jordan_U> !info fnfxd | drgonzo00000 possibly this
<ubotu> drgonzo00000 possibly this: fnfxd (source: fnfx): ACPI and hotkey daemon for Toshiba laptops. In component universe, is optional. Version 0.3-12ubuntu2 (gutsy), package size 20 kB, installed size 128 kB (Only available for i386)
<Jordan_U> drgonzo00000, BTW, I was just about to say that, without you prompting me :)
<drgonzo00000> unfortunately, I've already looked into that program. It won't run on my computer because I have the Phoenix bios instead of the Toshiba bios
<Jordan_U> drgonzo00000, I was afraid you would say that
<drgonzo00000> yep
<drgonzo00000> it's quite an unfortunate situation
<Jordan_U> drgonzo00000, Do you have the latest BIOS update?
<drgonzo00000> yep
<Jordan_U> drgonzo00000, Have you read the exact same page I have :)
<Jordan_U> http://slu.ms/articles/toshiba-linux-and-lcd-brightness-2
<drgonzo00000> I have looked at that page actually
<Jordan_U> drgonzo00000, Have you tried the "Vista specific" updates if there are any?
<drgonzo00000> My computer was updated before I got rid of Vista
<Jordan_U> drgonzo00000, My guess is that they had a driver hack around a bad ACPI implementation and that the reason it worked for that person in Linux after the update is that they got *some* sense and fixed their ACPI implementation rather than porting their hack to Vista
<drgonzo00000> that would make sense
<drgonzo00000> it was posted a year ago though so I should have gotten the update as well being that I just bought my laptop about a month ago
<Jordan_U> drgonzo00000, Did brightness work in Vista for you?
<drgonzo00000> not sure...only kept vista for 3 days
<drgonzo00000> Jordan_U: thanks for trying to help me
<drgonzo00000> I gotta go write an essay now
#ubuntu-classroom 2008-02-01
<warp10> Hi all!
<dholbach> heya
<dholbach> MOTU Q&A session in 16 minutes
<dholbach> Welcome everybody to another MOTU Q&A Session!
 * dholbach is Daniel Holbach - who else do we have here today? :)
 * Hobbsee is the trouble-making green alien
<Hobbsee> don't turn out like me, else you'll have to keep putting out spot fires
<dholbach> is that everybody today? :)
<dholbach> I thought we'd have a bunch of MOTU and Packaging questions :-)
<JonReagan> I have one!
 * warp10 is Andrea Colangelo, MOTU contributor, interested in science and games 
<dholbach> hey JonReagan - how are you doing?
<dholbach> hey warp10
<dholbach> JonReagan: fire away
<JonReagan> doin' fine.. you?
<JonReagan> this will take me a sec to type out...
<dholbach> very fine, thanks
<dholbach> no problem - we have time
<dholbach> warp10: how are you doing?
<warp10> dholbach: I would feel better without my flu :S
<dholbach> warp10: man, I know how you feel - spent the complete last weekend in bed and felt bad for most of the week :)
<JonReagan> I want to bring an app called OpenProj into the repositories.  I have checked the repos, needs-packaging, and found no sign of OpenProj.  Basically, after reading all the packaging pages, from MOTU to licensing, I have one question... Where do I begin? :)
<warp10> dholbach: argh :(
<dholbach> JonReagan: a good approach I used when I package something new was: look at packages that have a similar build system or are structured in a similar way
<dholbach> we have http://wiki.ubuntu.com/PackagingGuide/Lists/ReferencePackages which lists a few
<JonReagan> thanks
<dholbach> JonReagan: first of all I'd file the needs-packaging bug and assign it to you, so everybody knows you're on it and they can contact you if they want to help out etc
<JonReagan> k
<dholbach> JonReagan: did you figure out how the openproj source tarball is made up? build-system wise?
<dholbach> does it use python? does it use a ./configure && make approach? what does it do?
<JonReagan> I believe it uses the ./configure method
<JonReagan> it runs off the java runtime enging
<JonReagan> *engine
<JonReagan> but the developers said the dependencies can be changed to use something OSS, like Icedtea
<dholbach> if it indeed uses ./configure and friends it wouldn't hurt to start with the example that dh_make provides
<dholbach> debian/rules would then just make of the configure script it finds
<JonReagan> oh
<JonReagan> dh_make, is that a programming example package?
<dholbach> the dependencies are something you specify in debian/control - that should not be problematic
<dholbach> it will provide you with a bunch of example files for the debian directory
<JonReagan> whew... good
<dholbach> of course you will still have to fill in the gaps
<JonReagan> ah
<dholbach> http://wiki.ubuntu.com/PackagingGuide/Complete has information on how to use it (it describes it the case of the 'hello' package)
<JonReagan> just downloaded the tar.gz
<JonReagan> looks like it comes with a script file to install it.
<JonReagan> .sh, to be exact
<dholbach> so it looks like it just installs a bunch of .jar files?
<dholbach> (to everybody else: if you have a question, just ask)
<JonReagan> yup... that's what it looks like
<dholbach> we generally prefer if we can build binaries from source, but if there's no other way and the license makes it generally distributable it can still go to multiverse
<JonReagan> there is a source package available... I feel smart! :P
<dholbach> ahh!
<dholbach> do we have any other questions right now?
<dholbach> or did the bunch of you come to get openproj packaged? :)
 * warp10 has a couple questions
<warp10> I have just read on Ubuntu-MOTU mailing list about this Ubuntu Developer Week thing. dholbach, would you like to say something more about what's going on in a couple weeks?
<dholbach> JonReagan: it seems to use ant and other java stuff I'm really not familiar with, I'd encourage you to check out other big java packages and maybe get in touch with the upstream developers of openproj to see how they build the .deb file they include on their web page
<JonReagan> ok
<dholbach> warp10: so Ubuntu Developer Week is going to be from Feb 18th to Feb 22nd - just like at Ubuntu Open Week we're going to have a lot of session explaining about all kinds of things that go on in Ubuntu development land
<dholbach> some will explain how a certain team works with Q&A parts and others will directly dive into explaining how to stuff like patching, like submitting things for review, like how to get involved with MOTU and so on
<dholbach> right now I asked for proposals of sessions and once we have the schedule filled up, I'll announce it to the public
<dholbach> hey wolfger
<wolfger> hey
<dholbach> warp10: does that answer your question?
<warp10> dholbach: it does indeed. It sounds like a very great week! I Hope all sessions will be logged and pasted on the wiki
<dholbach> absolutely
<dholbach> warp10: you said you had some more questions? :)
<warp10> dholbach: yes, a more technical one
<dholbach> fire away
<warp10> I would like to know a little more about stamps usage in debian/rules. Why should I use (or don't use) them? And why?
<warp10> s/and why?/And when?
<dholbach> I'm just checking the docs for a clever answer on that, hang on
<Skiessl> <_<
<Skiessl> >_>
<dholbach> what I found right now only explained that it's used to make use of upstream's own Makefile during the build process
<dholbach> that's not terribly much
<warp10> If this is an interesting topic, maybe we can find a better answer to this topic for next Q&A? Otherwise, never mind :)
<dholbach> it's definitely established routine to make use of them, I just can't find much about the actual justification besides making use of the upstream Makefile
<dholbach> good idea - sorry for not giving a better answer
<dholbach> do we have any other questions?
<warp10> dholbach: not a problam at all. :)
<dholbach> ok good :)
<dholbach> wolfger: how are things going since the Packaging Jam?
<wolfger> dholbach: I wasn't able to attend the Packaging Jam, and the second one was supposed to be this weekend, but got postponed
<dholbach> (for those that don't know wolfger and his Loco ran a Packaging Jam in Michigan:  http://mitechie.com/index.php?/archives/273-Summary-of-MiLoCo-Packaging-Jam-2007.html )
<dholbach> wolfger: but you had a lost of interest in it, right?
<wolfger> I tried putting together a package for MeMaker, but I couldn't find a really good tutorial on packaging a Python app from scratch.
<wolfger> s/lost/lots/
<wolfger> ;-)
<dholbach> wolfger: you could take a look at http://wiki.ubuntu.com/PackagingGuide/Lists/ReferencePackages which lists a few python packages
<dholbach> we'll have a Packaging Jam in Berlin next week and I'm absolutely excited about it
<wolfger> MeMaker got somebody else to do the initial package, and now when things settle down, I'll take a crack at upgrading it to the next version.
<dholbach> wolfger: did you try the PackagingGuide Recipes already?
<dholbach> there's one about upgrading a package to a new version
<dholbach> maybe that'll help
<wolfger> yes, I know
<dholbach> rock on
<wolfger> thanks for taking an interest :-)
<dholbach> that's what we're here for  :-)
<dholbach> any more questions?
 * JonReagan raises hand... 
<dholbach> any problems you ran into lately?
<dholbach> JonReagan: fire away
<JonReagan> after I get the source, do I need to build it myself, and upload it as a binary version>
<Hobbsee> JonReagan: we're not debian - you only ever upload sources in ubuntu
<dholbach> JonReagan: you need to make sure it's buildable by running      debuild    in the source tree or build it with pbuilder (http://wiki.ubuntu.com/PbuilderHowto)
<Hobbsee> JonReagan: but you should check it does build, yes ;)
<JonReagan> ah
<dholbach> JonReagan: yeah, what Hobbsee said: we just upload the source package to the build daemon and it will produce the binary packages for us
<JonReagan> very cool
<dholbach> yeah :)
<Hobbsee> JonReagan: if you upload binaries to ubuntu, it'll either get sent to /dev/null, or almost to /dev/null, and i'll come and yell at you for gettin git wrong :)
<JonReagan> lol
<Hobbsee> no binaries.  no dcut.  easy does it :)
<dholbach> Hobbsee: gettin git wrong is very easy :)
<JonReagan> yeah, I wont do that.
<dholbach> good stuff :-)
<Hobbsee> dholbach: hehe, yeah well.
 * Hobbsee is always somewhat surprised about what people manage to upload to REVU
<dholbach> any other troubles you have? pressing questions? problems? stories you want to tell? :)
<dholbach> Hobbsee: REVU should just ignore that kind of stuff :)
<dholbach> or move it to /dev/null
<Hobbsee> dholbach: it almost does
<JonReagan> say, is it ok to ask questions on the mailing list?  I should be able to figure just about everything out, but if I run into trouble, is it ok to ask?
<dholbach> that sounds like a good start :)
<dholbach> JonReagan: sure
<JonReagan> ah, great.  That's all the questions I had... thanks folks!
<dholbach> rock on JonReagan
<Hobbsee> JonReagan: we like eating new contributors.  :)
<JonReagan> hehe
<dholbach> Hobbsee: speak for yourself :)
<Hobbsee> they're tasty!
 * Hobbsee munches happily
<dholbach> hey walmis
<wolfger> you want fries with that?
<dholbach> here for the MOTU Q&A session?
<dholbach> probably not :)
<dholbach> so we answered all the questions? I mean: all of them? :)
<dholbach> if we really did: get to work, there are gazillions of bugs to be fixed! :-))))
<dholbach> would you know how to submit a bugfix for inclusion into ubuntu?
<dholbach> in case you're wondering: it's http://wiki.ubuntu.com/SponsorshipProcess
<dholbach> and two things I have on my mind for a while right now are
<dholbach>  - https://bugs.launchpad.net/ubuntu/+bugs?field.status_upstream=resolved_upstream    (Bugs that are fixed Upstream or elsewhere already)
<dholbach>  - https://bugs.launchpad.net/ubuntu/+bugs?field.has_patch=on (bugs with patches attached)
<dholbach> it'd be great to get those lists as close to  0  as possible for hardy as possible
<dholbach> maybe it'd help to split them up into main and universe
<dholbach> anyway - I'll post my thoughts about that soon :)
<dholbach> just wanted to let you know
 * wolfger raises hand
<dholbach> did I scare you away now?
<dholbach> wolfger: fire away
<wolfger> What's the best/easiest way to do something useful, as a rank noob?
<dholbach> we have http://wiki.ubuntu.com/MOTU/TODO and http://wiki.ubuntu.com/MOTU/Bugs
<Hobbsee> take a patch, fix it into a debdiff, and subscribe the sponsoring stuff
<Hobbsee> that way, it doesn't require you do to "coding"
<dholbach> what Hobbsee says is a good idea for example
<Hobbsee> (for the easiest)
<wolfger> sounds good
<wolfger> thanks
<dholbach> making sure the patch applies, make sure it builds, make sure it fixes the problem, and submit the debdiff
<dholbach> other than that we have lots of lists with open bugs, some are tagged as 'bitesize' (suitable for new contributors)
<JonReagan> I gotta run folks, thanks for all the help!
<dholbach> but also 'upgrade' bugs (new upstream version), 'ftbfs' bugs for stuff that doesn't build, etc etc :)
<dholbach> have a great day, JonReagan
<dholbach> wolfger: I'm thinking of running BugJams here in Berlin to get working on some of those lists - I think I heard jcastro mentioning something like that about Michigan
<dholbach> are there any more questions?
<dholbach> if not, I'd soon run off to grab some lunch *starving*
<dholbach> wolfger: generally I'd say that fixing existing packages is much easier than packaging stuff from scratch (which seems to attract much more new contributors)
<wolfger> dholbach: great! Yeah, I ran the BugJam here, and jcastro talked me into doing it again for Penguicon
<dholbach> wolfger: woah - nice
<dholbach> I guess that's going to be huge?
<wolfger> I hope so.
<dholbach> I'm sure it's going to be :)
<wolfger> My presentation focused on the easy stuff, showing people that all you really need to help triage is a knowledge of how to work a web browser
<dholbach> that's right
<dholbach> did you chat with bdmurray about that?
<wolfger> no, I haven't
<dholbach> he might be able to give you a list of stuff to work on and some guidelines on the wiki
<dholbach> he's our bugmaster
<dholbach> (hanging out on #ubuntu-bugs all the time)
<wolfger> yes, he's helped me out there more than once
<dholbach> ahh col
<dholbach> cool
<wolfger> didn't know he was "the bugmaster"
<dholbach> he earned the title fair and square
<dholbach> although pedro_ gives him some good competition, I guess :)
<dholbach> ok MOTU Friends - I'll finish the session here today, feel free to ask whatever questions you still have in #ubuntu-motu and thanks for showing up
<dholbach> you guys ROCK :-)
 * dholbach -> lunch :)
<ScottK> Please don't be afraid to ask in #ubuntu-motu.  We're glad to help people learn how to help out.
<warp10> dholbach: thanks, and have a good lunch! :)
<dholbach> ScottK: exactly :)
<ety> hi how can i watch .swf files
<ety> anyone on the room
<ety> anyone on the room
<ety> anyone on the room
#ubuntu-classroom 2008-02-02
<eradicus> where can i find the chat log of the packaging sessions?
#ubuntu-classroom 2009-01-26
<junior> olÃ¡, alguÃ©m estÃ¡ online ?
#ubuntu-classroom 2009-01-27
<d10> hay i need a help on configuring apache to acess local files
<true_mafia> any body there to help me out in creating ubuntu application
<Mamarok> true_mafia: support is in #ubuntu
<yg9002> date -u
<DkySven> hello people
<DkySven> I knew it
<DkySven> the xp cruv who came with fatigue was added at request of Gamigo
<DkySven> curv*
<DkySven> Chilko acts a lot less weird that usual lately
#ubuntu-classroom 2009-01-30
<somaunn> hello y a quelqu'un ?
* 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: How to run a Bug Jam!
* 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: How to run a Bug Jam! | Run 'date -u' in a terminal to find out the UTC time
<andresmujica> go bug jam!!!
<dholbach> hiya andresmujica
<fcestrada> dholbach: hi
<dholbach> hiya fcestrada, hi Hew
<Hew> Hi dholbach :-)
<dholbach> hiya CrownAmbassador
<jpds> Morning dholbach.
<dholbach> hiya selinuxium
<dholbach> hey jpds
<selinuxium> hi dholbach  :)
<selinuxium> I am on a train and may periodically lose connection...
<andresmujica> hi dholbach
<CrownAmbassador> Hiya dholbach!
<dholbach> selinuxium: thanks for joining in :)
<jpds> selinuxium: They'll be logs.
<dholbach> hey Twinkletoes|W
<CrownAmbassador> Thanks for the message in #ubuntu-bugs!
<Twinkletoes|W> dholbach: What's all this about then?
<selinuxium> dholbach: l am hosting the London BugJam... I was looking for someone to take the lead... :)   But no probs looking myself...
<dholbach> Twinkletoes|W: we're gearing up towards https://wiki.ubuntu.com/GlobalBugJam - this will be a session to talk about how we're doing it, what works, what doesn't, etc.
<dholbach> hiya thekorn
<thekorn> hui dholbach
<dholbach> hey savvas
<thekorn> and all other bug jammers
<popey> moo
<dholbach> hey popey!
<savvas> hey :)
<selinuxium> a bit off topic, but will there be a MOTU Jam at any point?
<selinuxium> popey: :)
<dholbach> selinuxium: you mean about packaging stuff etc?
<selinuxium> dholbach: yep  :)
<dholbach> selinuxium: https://wiki.ubuntu.com/MOTU/RunningPackagingJam has some information about that :)
<dholbach> selinuxium: we run them in the Berlin team and it works great
<selinuxium> dholbach: cool
<dholbach> hey Tekno, hey syockit, hiya pedro_ :)
<Tekno> hey
<pedro_> hello folks!
<selinuxium> dholbach: it is a bit far to walk  ;)
<dholbach> selinuxium: definitely :)
<dholbach> hi error404notfound, hi zleap
<pedro_> hah nice nick
<zleap> thanks
<andresmujica> hi pedro
<dholbach> 2 minutes left, time to grab another coffee
<pedro_> hey andresmujica! nice work on the compiz hug day ;-)
 * pedro_ hugs andresmujica
<error404notfound> dholbach: hi
<selinuxium> dholbach: dependingg on how the bug jam goes, I will try and host a packaging jam
<andresmujica> :)  yea !!
 * andresmujica hugs back
<dholbach> selinuxium: PERFECT :)
<dholbach> that's what we like
<syockit> seconds left
<dholbach> hi christoz
<zleap> is there a list of future classroom topics in here
<selinuxium> dholbach: I tried to get a mentor years ago but couldn't find one..
<dholbach> WELCOME EVERYBODY TO ANOTHER EPISODE OF THE GLOBAL BUG JAM CONSPIRACY!
<zleap> i can put a link from the uk south west page
 * selinuxium quietens down
<dholbach> I'm very happy you guys are here - let's do a quick round of introduction and say where we're from and if our team is on https://wiki.ubuntu.com/GlobalBugJam already :-)
 * dholbach is Daniel Holbach from the Berlin team and yes, we're on the page already :)
 * jpds is Jonathan Davies from the UK Team, and we have a London venue.
 * selinuxium is from UK team and the London jam can be found at https://wiki.ubuntu.com/GlobalBugJam/London
 * pedro_ Pedro Villavicencio from the lovely and sunny Chile and the team is also on the page ;-)
 * andresmujica is Andres Mujica from Colombian Team, and yes we're at the wiki page already! 
 * popey is Alan Pope from the UK Team, and likes ponies.
 * InHisName is from Warminster, PA USA is with ubuntu-us-pa  our bugjam is Feb21
<dholbach> come on guys... who else do we have here? :)
<dholbach> hiya ArepaKing
 * fcestrada is Fernando C. Estrada from the Mexico City ;)
<selinuxium> ola!
<stefanlsd> heys, im here representing the bug jam in South Africa
<ArepaKing> Hi Everybody
<dholbach> hey stefanlsd
 * syockit still not in any team...
<dholbach> awesome.... if you only knew how excited I am :)
<misterdasher> misterdasher is James Dasher from the North Carolina team, and we're planning a pre-bugjam howto next Saturday.
<CrownAmbassador> stafanlsd we need to talk!
 * savvas is from Ubuntu-cy, and wants to organise a possible bug jam for 9.04 release party :P
<CrownAmbassador> I'm also from SA and didn't even know we have a team!
 * ArepaKing is Carlos Lerzundy. He is also from the North Carolina team
<dholbach> So how ready is your team for the jam on a scale from 0 to 10? :)
<dholbach> hi k0001
 * Citizenjoefriday is a third from the NC team
<stefanlsd> CrownAmbassador: #ubuntu-za  & http://wiki.ubuntu-za.org/Wiki_Home
<savvas> ubuntu-cy is about 1/10 unfortunately - but we're working on it hehe
<CrownAmbassador> *twilight zone*
<stefanlsd> we also need more planning / people...
<misterdasher> is thinking ubunutu-us-nc is a 1 or 2
<savvas> stefanlsd: yep, that's my concern as well, very few in number :\
<dholbach> savvas, stefanlsd, misterdasher: what's missing? I'd really like us to talk about the problems we're having and how we think we can fix them
<fcestrada> ubuntu-mx is about 0 or 1 if you count I'm here
<selinuxium> we have a venue and attendees, but no one as yet to lead the jam...
<dholbach> fcestrada: definitely 1 :)
<dholbach> ok, looks like we have a few topics already
<misterdasher> dholbach: iirc, no one has participated.
<dholbach> 1) Explanatory Material or a "leader"
<dholbach> 2) "Marketing" :)
<savvas> dholbach: nothing yet on your behalf, I just have to "propagate" contribution ideology to the whole team. We're going fine until now, I hope I can channel my energy to other members
<tuxmaniac> sorry for the interruption and being late. this is Aanjhan from India
<dholbach> hey tuxmaniac!
<misterdasher> we're figuring out how to run our first ever
<dholbach> https://wiki.ubuntu.com/RunningBugJam#Material has a bunch of stuff you and your team can take a look at before kicking it off
<stefanlsd> dholbach: i think I just need to push it harder. I think we have many people who also feel like they cant contribute. (we need to make sure that everyone feels welcome and will be able to do something).   maybe also just make it a social get together also...
<dholbach> there's a presentation somebody can do, about Bugs and Launchpad
<dholbach> there's a screencast about bug triage
<savvas> dholbach: that would make me mostly an observer for now - I just want to see experiences from other teams and stuff like that :)
<dholbach> and lots of links for triage documentation in general
<dholbach> pedro_, popey: is there an overlap between the screencast team and the QA/bugsquad team?
<dholbach> it'd be nice if we could push out a few more screencasts before the event :)
<dholbach> hey robbit
<popey> ok, that can be done
<robbit> Hi!
<pedro_> yup would be nice to have some more inded
<dholbach> popey: I'd be happy to upload them to video.ubuntu.com and blog about it
<CrownAmbassador> thanks stefanlsd
<dholbach> pedro_, popey: do you have an idea about "easy tasks" that could be demonstrated?
<andresmujica> pedro / dholbach:  is the odp presentation in spanish yet?
<dholbach> one question I get all the time is "how can I change the status of the bug?"
<dholbach> andresmujica: no, unfortunately not yet - but it would be AWESOME if it got translated
<dholbach> andresmujica: do you think you could ask in your Loco if somebody was willing to do that?
<dholbach> I'll try to get it translated into German as well
<andresmujica> dholbach: ok, i'm gonna ask for it!! (or do it myself if needed..)
<dholbach> thekorn: are you running a bug jam somewhere too?
<pedro_> right, well that and things like how can i change the package name, what do i need in order to have permissions to change the importance, etc
<dholbach> andresmujica: you're a rock start
<pedro_> would be nice to have that  on the screencast as well
<dholbach> ... star
<andresmujica> at this point there's only one screencast, right?
<dholbach> pedro_: maybe we could do a call for "questions" or "tasks" on the bugsquad list?
<dholbach> andresmujica: yes, unfortunately
<dholbach> we have audio and video interviews with Brian and Jorge about the topic too, but they're very general
<dholbach> hey Daviey
 * Daviey strolls in late.
<Daviey> dholbach: o/
<dholbach> hey x1250_
<dholbach> andresmujica: please let me know how the translation effort goes - I'll blog about it too
<ArepaKing> dholbach: Do you think this screencast can be posted in the bug jam material website? (https://wiki.ubuntu.com/RunningBugJam#Material)
<thekorn> dholbach: well julius and I thought about it some time ago, but no further details until now, will talk to him about it later today
<x1250_> hi dholbach
<dholbach> ArepaKing: definitely, once we have more they should be listed there
<ArepaKing> all right! thank you sir
<tuxmaniac> the running bug jam material is pretty good to answer most of the questions. But i feel its too much information overload.
<dholbach> thekorn: do you have a mailing list for that area? you could ask other people too
<dholbach> tuxmaniac: tell us a bit about your experience - what works well in a bug jam... if you don't want to overload people
<tuxmaniac> if there is one signle presentation which shows in very simple terms to kick of bug triaging instead of reding through all these, that will be great
<pedro_> dholbach: i think so, yes or perhaps ask to the loco teams what they think needs more explanation, the bugsquad already know those things so we might get wrong info imho
<tuxmaniac> because dholbach , people (especially new comers) are not so interested in the RTFM thingi :-) They want to be spoonfed initially. and then the remaining catches up like fire
<dholbach> pedro_: sounds good - I'll add it to my TODO list to ask on loco-contacts
<pedro_> awesome
<dholbach> tuxmaniac: alright... let's talk about how to actually run the bug jam a bit later
<dholbach> do we have good tips for marketing the event?
<tuxmaniac> ok
<dholbach> so what I did in Berlin was mail the Berlin team mailing list and blog about the event a couple of times
<dholbach> also I tried to rope in other people to help a bit with the organisation, so it wasn't me alone :)
<dholbach> I think I heard of other Locos that put up posters in bookshops and universities and LUGs
<dholbach> that might work very well too
<thekorn> dholbach: hmm, don't know, I'm not active in the local scene, julius is, will aks him about it
<dholbach> thekorn: great
<dholbach> popey, pedro_, stefanlsd, tuxmaniac: any other good advice from the marketing department?
<tuxmaniac> dholbach: yes. and not mailing only to Ubuntu-XX loco lists but also to other LUGs around will have additional coverage
<popey> blog / twitter / facebook / identi.ca / use them all
<popey> talk about it often
<stefanlsd> tuxmaniac: yeah, good idea, will get it onto our local lugs...
<dholbach> forums too
<dholbach> that sounds very good already
<popey> yeah
<dholbach> we're now around 3 weeks away from the event, we should definitely ramp up the marketing efforts now :)
<popey> there is a facebook group - i created it a week or so ago
<popey> need people to join and use it
<dholbach> wow
<tuxmaniac> stefanlsd: the thing is not to restrict ourselves with Ubuntu-xx lists. I found out from the past many dont join ubuntu-xx lists but just join the local lugs
<tuxmaniac> popey: wow. linky please
<stefanlsd> tuxmaniac: thanks. put it in my to do list
<popey> i can't right now, being dragged to the pub for lunch
<dholbach> there was a bunch of people saying "we're not very organised yet" - which problems are you guys having at the moment?
<andresmujica> popey: the name at least ;)
<selinuxium_> lucky popey!
<popey> just search facebook for bug jam
 * andresmujica searching
<tuxmaniac> the EPFL lausanne crowd are ardent followers of Ubuntu. we infact distributed Ubuntu cds
<tuxmaniac> http://tinyurl.com/d4vmdh
<tuxmaniac> ^^ facebook
<dholbach> did you all find a venue already?
<Daviey> dholbach: The obv. things are the problems at the momnet - getting venue organised/confirmed / day structure / etc
<tuxmaniac> dholbach: i have to check with the guys back in idnia the scenario :-)
<tuxmaniac> will get things in place by this weekend
<stefanlsd> Still need a fixed venue. I have my office / house as fallback.
<dholbach> office/house as fallback is a good start already :)
 * dholbach remembers the first Berlin release party in my appartment with 40 people :)
<dholbach> nuts :)
<dholbach> Daviey: where does your local LUG meet?
<dholbach> Daviey: is there any university / school nearby that might offer space?
<Daviey> dholbach: A attend a few LUG's... mainly university or cafe 's
<dholbach> or a pub with Wifi
<Daviey> dholbach: I think we have a couple of venue's sorted now \o/
<dholbach> maybe it helps to talk to organisers of those LUGs
<andresmujica> we`re planning a preparation session  for feb7 and the main event at feb21, how can i motivate them to assist to both?... we're about 11 subscribed
<dholbach> most of them will be happy and very pleased to see people getting active about helping out directly in a distribution
<tuxmaniac> on a lighter nte.. a pub with wifi is slightly a bad choice. once i remember we going in to have a good hackathon and the next thing I could remember was everybody calling up each other whether they reached home safe :P
<dholbach> tuxmaniac: haha
<dholbach> andresmujica: did you do a public call for participation in a blog and the mailing lists, etc already?
<tuxmaniac> wait! a flash came through. some people who attend fosdem could do some marketing as well
<dholbach> andresmujica: definitely add your information to https://wiki.ubuntu.com/GlobalBugJam so people who wonder about the event can get back in touch with you
<dholbach> tuxmaniac: sounds good
<tuxmaniac> i am in representing both Fedora and Ubuntu at fosdem :-)
<tuxmaniac> dholbach: may be a reply to the "Me at fosdem" thread on Ubuntu LocoContact list will end up having some result?
<selinuxium> can some one link me to the logs, train journey keeps kicking me off the net...
<dholbach> tuxmaniac: worth trying it :)
<dholbach> selinuxium: http://irclogs.ubuntu.com/2009/01/30/%23ubuntu-classroom.txt
<dholbach> will be 15 minutes delayed
<selinuxium> cheers dholbach
<dholbach> alright
<selinuxium> that is fine
<jpds> (updates hourly).
<andresmujica> ok!, yes, we've got the post -and thread- at mailing list!   https://lists.ubuntu.com/archives/ubuntu-co/2009-January/013340.html
<dholbach> Daviey asked about the organisation or rather day structure
<tuxmaniac> selinuxium: irssi + ssh + screen :-)
<dholbach> let's talk about that a bit now
<dholbach> the most important thing about the whole event is: make it fun
<selinuxium> tuxmaniac:   :P
<dholbach> it really does not matter much how many bugs each loco worked on, but it should have been fun and people should have had a chance to see what it's like
<dholbach> so do we have some experience from the last time in here?
 * selinuxium cancels his order for a riding crop....
<dholbach> tuxmaniac was right in saying "don't overload people"
<tuxmaniac> yes. last time a lot of people were very very enthusiastic during the preparatory sessions
<dholbach> it's perfectly fine to do a short presentation in the beginning to get everybody on the same page
<dholbach> but afterwards it's a good idea to turn off the projector or get away from "in front of the class"
<tuxmaniac> but during the GBJ days I felt the enthu kept dying.. May be because there wasnt specific targets set?
<dholbach> else you'll have the problem that people expect more presentation or more "class" :)
<dholbach> tuxmaniac: specific targets definitely help
<dholbach> pedro_ is our man here who can talk about targets :)
<dholbach> tuxmaniac: also what I found out helps is grouping people
<tuxmaniac> dholbach: like we have during the Hug days right. a set of bugs to be triaged
<dholbach> so they can try to work together on a set of bugs
<tuxmaniac> dholbach: yep. perfect
<stefanlsd> is there a recommended list of targets or tasks.. maybe in levels from beginners to int to advanced?
<tuxmaniac> stefanlsd: exactly what i was coming to nest. the levels also somehow mentioned. or some experienced folks get toghetre and pick up some bugs prior
<dholbach> stefanlsd: https://wiki.ubuntu.com/GlobalBugKam has a few
<tuxmaniac> and throw it on the team
<andresmujica> making metric targets would be to cumbersome?  i've proposed some metrics in our GBJ event.. but don't know if that would be too serious...
 * fcestrada very interested in the stefanlsd's question.
<dholbach> andresmujica: what kind of metrics?
<dholbach> pedro_ is our man here who can talk about targets :)
<pedro_> yeah we have collected some easy tasks on https://wiki.ubuntu.com/Bugs/EasyTasks
<tuxmaniac> dholbach: you scared him away once. dont do that again :P
<pedro_> they are sorted by difficulty
<pedro_> and we also add some examples next to them
<andresmujica> assigning bugs to the right package: 200,   finding duplicates: 10 ... things like that
<pedro_> I'd recommend to start with bugs without a package
<pedro_> those are the ones easier to triage
<tuxmaniac> pedro_: can we have them on the GBJ, runing bug jam material wiki may be? is it out of context there?
<pedro_> tuxmaniac: they are there
<andresmujica> yeap, bugs without package is our main objective...
<pedro_> just scroll down a bit on the GBJ page
<dholbach> tuxmaniac: it might be worth picking just a few of those bugs and say "let's get cracking on these together"
<tuxmaniac> yes
<pedro_> if you have people with more experience you can grab some other bugs like the ones that need to be upstreamed and make jcastro happy
<dholbach> hehe
<pedro_> if you think we should add some other bugs to the list please do contact me
<pedro_> or to dholbach, jcastro
 * dholbach nods
<tuxmaniac> pedro_: sure. i will look into those Science bugs and see
<stefanlsd> pedro_: how about confirming bugs
<dholbach> stefanlsd: definitely good idea too
<pedro_> stefanlsd: yeah definitely
 * pedro_ taking notes
<dholbach> stefanlsd: make sure to people to add as much information to the bugs as possible
<dholbach> pedro_: you need to blog all this! :-)
<tuxmaniac> dholbach: you are slightly faster than me in mailing the list :-)
<pedro_> dholbach: yeah will do it ;-)
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases is a useful guide if people want to actually test and work on jaunty
<dholbach> ...... in a SAFE way :)
<pedro_> hehe
<tuxmaniac> dholbach: thats a very nice thing. may be some people can download the alpha isos and have them ready and distribute during the event
<dholbach> tuxmaniac: sure, why not
<dholbach> do we have any more open questions?
<fcestrada> dholbach: how to identify this kind of easy bugs?, pick a random bug is a good idea, using harvest or what's the way?
<tuxmaniac> so that people dont waste time in getting the isos down during the GBJ. distribute, use the live cd, triage report bugs :-)
<dholbach> fcestrada: only if they actually want to work on fixing the bug
<andresmujica> dholbach: about metrics, what do u think?
<dholbach> fcestrada: I'd say that's more for experienced bug triage people only
<fcestrada> :(
<dholbach> fcestrada: we had people in Berlin who said "What's a bug?" and "What's Launchpad?"
<dholbach> fcestrada: it completely depends on who attends your event
<dholbach> if it's a bunch of hackers or experienced bugsquad members, that's cool - go wild on Harvest and fix bugs :-)
<stefanlsd> Thinking about it, i dont really want people to get bogged down and stuck on really technical difficult bugs...  lets get them excited to go home and carry on doing the other stuff
<stefanlsd> it also pulls the mentors away from all the quick answerable questions for others
<dholbach> andresmujica: https://wiki.ubuntu.com/GlobalBugJam/Stories :-)
<ArepaKing> what is the "other stuff" could you please make some examples?
<dholbach> andresmujica: if you take notes during the event about what you guys did, etc. - it'd be AWESOME if you wrote a small report about it, so we can show the world how much your event ROCKed
<dholbach> ArepaKing: pedro_ can talk about easy bug targets - what we already identified was:
<dholbach>  - take New bugs and try to confirm the issue and add information
<andresmujica> ok, i'll get the idea...  :)
<dholbach>  - take bugs without a package and try to assign them to the right place
<stefanlsd> ArepaKing: I think those easy tasks as dholbach was saying.  Like what is Launchpad. Make your account.  Find bugs without packages, assign those. Add more information. pedro_ showed us https://wiki.ubuntu.com/Bugs/EasyTasks  which i think is great
<ArepaKing> ok.. understood.. thanks!
<dholbach> if you come across other categories of easy bugs, I'm sure pedro_ would appreciate it
<pedro_> btw if you want to start doing some triage for being more well prepared for the GBJ, just take a target from that list (EasyTasks) and drop by #ubuntu-bugs at any time if you have some questions
<dholbach> pedro_: exactly - that's great
<dholbach> definitely let people know that they can easily talk to the rest of the world and get help
<dholbach> ... and have fun
<pedro_> we're running bug days the Thursdays , on those days we focus on a target for example yesterday we did one based on Compiz
<dholbach> ... and find new friends there :)
<stefanlsd> dholbach, pedro_ : i assume we can tell the guys to log onto  #ubuntu-bugs and just ask if they are unsure...
<dholbach> stefanlsd: definitely
<pedro_> and the next one is going to be based on Bugs without a package (bling bling one of the easier tasks)
<stefanlsd> kk. i think thats answered
<tuxmaniac> ArepaKing: another easy task could be to check for bugs reported in Hardy or revious distros and re-ask info whether they still occur in intrepid for further info if the package has had updates
<pedro_> stefanlsd: yes sr
<stefanlsd> dholbach: talk bout 5-a-day!!  :)
<ArepaKing> that is a good suggestion tuxmaniac..
<dholbach> stefanlsd: not yet - next week I plan to rework it with bdmurray
<pedro_> tuxmaniac: might be tricky to collect a list with that, since launchpad doesn't support release versions nor package versions :-(
<dholbach> stefanlsd: but I definitely plan to make some noise about it then :)
<stefanlsd> dholbach: kk. i think it would be awesome to track how people / teams are doing.
<dholbach> pedro_: "filed date" could maybe help? :)
<dholbach> stefanlsd: definitely - that's the plan
<dholbach> stefanlsd: but we want to make it easier and get more data from LP directly
<stefanlsd> and then u need to find a sponsor to sponsor a reward for the person / team :)
<tuxmaniac> pedro_: yeah I know. But i guess it should not be very difficult with the [hardy] tags attached to some bugs that are still in confirmed state and stuff. Yes, lot of manual work. But worth the clearance IMO
<dholbach> stefanlsd: we should ask the guy with the plane about it :-)
<pedro_> dholbach: mm yeah, i guess bdmurray have something like that, will have a look
 * dholbach is VERY VERY VERY excited
<dholbach> Is there any other problems you and your loco are still seeing?
<stefanlsd> dholbach: heh. how about the guy that went to space.  t-shirts would be cool
<dholbach> stefanlsd: that's the one :)
<dholbach> Or do you have other ideas how we could pimp the event a bit more?
<dholbach> Did you all blog enough about it already?
<stefanlsd> I think we just need to put it out there a bit more, make some excitement.
<dholbach> and push other locos into action
<stefanlsd> I also think we need to target it more non techincal
<andresmujica> hmm, i was wondering if the SPANISH/LATAM teams can get together on a channel during the event, you know for spanish fun ;)
<dholbach> I think everybody of us should mail like 5 other Loco leaders to get them to organise a jam :)
<stefanlsd> I think many people are scared its a technical thing.  We need to make the point that regular users can make a big difference and contribute to something that they use everyday
<tuxmaniac> stefanlsd: +1
<pedro_> andresmujica: perhaps at #ubuntu-es ? for general questions would be nice indeed
<dholbach> stefanlsd: good idea - would be nice to show in a blog post "this is an example how easily you can make Ubuntu a better place - this is what we're going to at the Jam"
<fcestrada> andresmujica: that's a great idea, we are a few people, but maybe make a difference if we have an ubuntu-bugs-es irc or something like that.
<andresmujica> yeah, more like #ubuntu-bug-es  as #ubuntu-es is somehow populated
<pedro_> andresmujica, fcestrada yup wanna send an email to the amigos latinos? I'll announce that on my loco team
<dholbach> any more questions? everything settled? does everybody have a clear idea of what needs to happen next? :)
<pedro_> world domination!
<andresmujica> yeap, sure.. to the loco-leaders... :)
<dholbach> ahaha
<stefanlsd> hehe. yeah.  thanks!
<tuxmaniac> pedro_: lol
<Daviey> thanks dholbach
<fcestrada> ubuntu-es is good all the time for general questions, I'm talking to have a channel for this kind of activities, like a latam bug jam contributing to the global bug jam.
<misterdasher> thanks, y'all --
<andresmujica> me again nagging about metris.. last year the target was 1000 bugs..?? according to some blogs i've read??
<dholbach> ok my friends... We're ready to really bring it on!
<pedro_> fcestrada: yes got the idea ;-)
 * tuxmaniac hugs dholbach .. (lets start a dholbach hug party again :P)
 * dholbach hugs y'all back :-)
 * pedro_ hugs the whole channel
<fcestrada> thanks dholbach, you're the man!
<dholbach> I want to see some blogging, more publicity and please: go and nag a few other loco leaders to join in on the fun! :-)
 * andresmujica hugs everyone!!
<dholbach> thanks a bunch everybody
<dholbach> the world definitely needs more people like you
<dholbach> have a great day!
<stefanlsd> :)
<fcestrada> dholbach: thanks, same to you :)
<andresmujica> fcestrada, pedro:  about the channel .... which one??
<fcestrada> I don't know about the name, it's great if not only focus in bugs, maybe mentoring sessions, but maybe an opportunity to involve people who can't assist, feel the emotion of participate in that via irc.
<andresmujica> so maybe it's ok to use #ubuntu-es
<fcestrada> andresmujica: No, ubuntu-es have the focus to general questions about Ubuntu in spanish, maybe something like ubuntu-motu-es or something like refers to involve novice people in the ubuntu development of course, in spanish ;)
<pedro_> andresmujica: gbj-es ?
<fcestrada> pedro_: I don't think so, gbj-es have a very specific (and less intuitive) name, I suggest a general channel for ubuntu bug days, sessions, involve in development, and topics like that.
<pedro_> fcestrada: the channel is going to be used for the gbj isnt?
<pedro_> fcestrada: to be honest i don't care too much about the name, let's use ubuntu-classroom-es then which involve more things like you said
<fcestrada> pedro_: of course used for the gbj, but it's great if we mantain that channel, and not only for one day and lose the contact.
<fcestrada> mmm, I supposed it's very idealistic :P
<pedro_> fcestrada: your call then, let me know about the name when you decided it so can announce it at my loco too ;-)
<fcestrada> Anyway, I need to prepare for the work, 7:12am here. See you guys, and thanks for all! ;)
<fcestrada> pedro_ what's about ubuntu-motu-es? think it about and ping me if you're ok ;) Buen dÃ­a :P
<cfoch> hola
<somaunn> hola
<cfoch> tengo un problema con el emesene
<cfoch> cuando me kiero conectar se pone la ventana de color gris, y no responde
<cfoch> antes me conectaba y ahora ya no
<cfoch> ayudenme porfa
<Mamarok> cfoch: per Italiano, vai sul canale #ubuntu-it
<Mamarok> e para EspaÃ±ol, #ubuntu-es
<syockit> that's not portuguese?
<Mamarok> sorry, mixed up :)
<BUGabundo> jorge asked to come by and say Hi!
<BUGabundo> Fri Jan 30 15:47:00 UTC 2009
<smarter> C'est quoi le/les bouquins de rÃ©fÃ©rence en C?
<smarter> oops, wrong channel, sorry :P
<jcastro> ~15 minute warning!
<istaz> for?
<jcastro> How to Run a Bug Jam
<threethirty> gday all
<_patrickd> morning all
<j1mc> man, there's just so many bugs...
<j1mc> If only someone would hold a session to help us get people together to triage and fix the bugs.
<j1mc> i think that would be a great idea
<_patrickd> but who could do such a wonderful thing
<_patrickd> ?
<j1mc> yeah... i don't know.
#ubuntu-classroom 2009-01-31
<jcastro> Howdy folks!
<robbmunson> howdy jcastro :)
<j1mc> Hi jcastro :)
<nhandler> Hey jcastro
<jcastro> ok, we're going to get started, please shout out what LoCo you're from (or if you're not) and if you plan on running a bug jam!
<txwikinger> hi jcastro
<jcastro> ie. introduce yourselves!
<rick_h_> Ubuntu MI baby!
<robbmunson> Ubuntu LA all the way!
<j1mc> I'm from the ubuntu-chicago team.
<nhandler> I'm with ubuntu-chicago too
<txwikinger> Kitchener/Waterloo LUG .. and formerly SBLUG, Birmingham, UK
<nhaines> Ubuntu California!  We're doing one at SCaLE next month!
<_patrickd> I'm sorta with ubuntu-ie
<jcastro> excellent.
<j1mc> nhaines: sounds great!
<robbmunson> and no, i just came to see "how to do one" if i ever wanted to :)
<jcastro> Well, in this session we're going to be going over how to plan and successfully run a good jam
<jcastro> and share tips and tricks on how to make that easier.
<jcastro> First of all
<jcastro> if you're going to run a jam, you should put it on this list: https://wiki.ubuntu.com/GlobalBugJam
<jcastro> this lets users know that there is a jam in the area and helps us keep track of who is doing what
<jcastro> the second most important thing is this document: https://wiki.ubuntu.com/RunningBugJam
<jcastro> which is basically things we gleaned from the last GBJ and other independant jams from around the world
<jcastro> you are of course encouraged to add your experiences on that document.
<jcastro> One thing that should be clear to everyone though, especially those of you having your first jams ...
<jcastro> the main goal of the GBJ is for local teams to get together
<jcastro> to meet each other, help each other out, and basically help each other improve
<jcastro> so don't get sidetracked by the # of bugs you triage
<jcastro> or if one person is slower than someone else or whatever
<jcastro> Last jam I did ~30 some bugs in a session and my friend did like 5 so he was kind of upset.
<jcastro> the idea is he learned something
<jcastro> so even do we tracks stats and have bug bingo and all that, as long as it's a successful gathering of people at the LoCo then it's all good.
<jcastro> any questions so gar?
<jcastro> er, far?
<j1mc> doing ok here.  :)
<jcastro> also, feel free to jump in and throw out tips
<robbmunson> none from me :)
<jcastro> Ok, if you look at https://wiki.ubuntu.com/RunningBugJam
<jcastro> the toughest part is probably finding a venue
<jcastro> (That 5-a-day PDF is great to print up and hand out as well)
<jcastro> lots of LoCo's shoot for something cheap or free
<jcastro> like a library or university
<jcastro> though really that depends up to your group
<jcastro> some go to pubs, etc. so whatever works for you
<jcastro> The "tutor" person listed there is also important.
<jcastro> there should be someone in the group who has done this before or is willing to learn before the event
<jcastro> So you should encourage your members to maybe hang out in #ubuntu-bugs or participate in a hug day so they can follow along with more experienced people
<jcastro> or they can follow their favorite bugs or whatever to see how other people triage bugs
<jcastro> https://wiki.ubuntu.com/Bugs
<jcastro> that set of pages is the primary set of docs we use to triage bugs.
<jcastro> Pedro has put a bunch of time trying to make it as simple as possible
<jcastro> most people will do "Report" or "Triage"
<jcastro> and the more advanced people can do "Fix a Bug"
<j1mc> is the bug jam more about triaging and fixing?
<jcastro> so you can divide people into groups by skill, or you can do mentoring in pairs, whatever matches your group's skill level
<jcastro> I mostly triage, but not really, any kind of bug work is fine
<jcastro> if you spend all weekend hacking to just fix one really complicated bug then that's great too
<jcastro> https://wiki.ubuntu.com/GlobalBugJam
<jcastro> at the bottom here
<nhaines> Bug jams are good ways for people to get together and learn how to contribute back from friendly people.
<jcastro> we've put lists of bugs sorted by how difficult they are
<jcastro> so, the first one, new bugs with no packages assigned
<jcastro> basically, that's when someone reports "by browser doesn't work" but doesn't assign it to "Firefox"
<jcastro> those are relatively easy
<jcastro> there are also lists for "Bugs marked for expiration"
<jcastro> One can probably spend the whole time going through older bugs asking the original reporter if they still have the same problem
<jcastro> also, along with these lists
<jcastro> groups can sometimes work on something they all have in common
<jcastro> like say "hey, me and my friends all like amarok, let's do our bug jam day on amarok bugs"
<jcastro> so while we do provide these lists of bugs, whatever you're comforable with works best
<jcastro> once the venue is set
<jcastro> promoting the jams is a large key to participation
<jcastro> so on the RunningBugJam page we have some tips and tricks
<jcastro> can anyone think of any more?
<nhandler> You can also keep track of your progress using 5-a-day (which I bet Daniel will talk about)
<jcastro> I have noticed this time around that some Local Teams are asking other teams in their regional areas
<j1mc> prerequisites... getting ssh keys for participants
<jcastro> so you can check out what your local friendly chicago team is up to, etc.
<jcastro> j1mc: where do you see that?
<jcastro> oh, for the 5-a-day thing
<jcastro> right now people are working on making the applet and all that set up unneccesarry
<j1mc> jcastro: it should be there, yeah...
<jcastro> is anyone here not familiar with the 5-a-day program?
<jcastro> ok so if people want to track each bug they work on they can sign up for 5-a-day
<txwikinger> Will there also be a KDE4 plasmoid?
<jcastro> txwikinger: I believe the plan will be just having people join the 5-a-day group
<jcastro> and having something check lp and their group to spit out stats
<jcastro> basically, the user doesn't need an applet or anything anymore
<nhandler> jcastro: So the group will be revived? I thought it was only for development now
<txwikinger> Ah
<jcastro> nhandler: yes, but it's not finished and bdmurray and dholbach are working on it
<jcastro> it should be ready in time for the GBJ
<cfoch> hola
<cfoch> aqui sera la charla???
<nhandler> jcastro: Awesome. I'm looking forward to seeing the finished product
<jcastro> also, though we are talking about the Global Bug Jam right now, locos can have jams anytime they want
<jcastro> for example the Berlin LoCo runs bug jams on a regular basis
<jcastro> the global bug jam is just when we all do it together, for great justice.
<jcastro> also, another key component is post-jam things
<jcastro> so you'll want to blog about
<txwikinger> beer?
<jcastro> take pictures, put and tag them online, etc.
<jcastro> of course. :D
<j1mc> txwikinger: unless you have ppl under 21 there... then may need to reconsider beer.
<jcastro> that way you can capture the fun so that next time around you can use the pictures in your marketing materials to show people how much fun it is
<txwikinger> j1mc: that depends on the country ;)
<j1mc> txwikinger: right.  :)
<jcastro> also you should be prepared for the random person who saw there are ubuntu people gathering and just randomly shows up
<jcastro> so you can also use it as a means to attract new people
<jcastro> remember the key goal is loco participation and growth
 * robbmunson loves the help so new people are a definate +1 :)
<jcastro> so if you're flooded with a bunch of new users and you spend time helping them instead of fixing bugs then no one will complain. :D
<cfoch> One moment
<cfoch> can somebody speak me in spanish??
<jcastro> I unfortunately do not remember any of my spanish
<txwikinger> un poquito
<erichammond> Is there any sort of graph on launchpad which shows the total number of bug changes per hour/day?  It would be nice to see the activity reflected during a GBJ.
<jcastro> other resources we have
<nhandler> erichammond: I think bdmurray has some graphs on his people.ubuntu.com page, but I'm not sure
<jcastro> erichammond: not current, but we do have this: http://daniel.holba.ch/5-a-day-stats/
<jcastro> during the jam you'll notice all the new tags and teams moving up the lists
<jcastro> as well as groups
<jcastro> I suspect Club Ubuntu will have a strong showing once again
<j1mc> are those stats in real time?
<nhandler> j1mc: It is a cronjob
<j1mc> :)
<jcastro> 10 minutes I believe?
<robbmunson> jcastro, i think so
<jcastro> note that club ubuntu is usually a bunch of people who aren't near LoCos
<cfoch> i have created a new comunity the 25/01/09
<jcastro> so even if you're not meeting up with someone you can still participate
<jcastro> on the main GBJ page we also have a GlobalBugJam.pdf
<jcastro> you can print that out and give it to people who participate
<jcastro> also, new this year are a bunch of instructional videos
<jcastro> you might want to ask participants to watch the video before the event
<jcastro> or you could show it at the event
<jcastro> you should also tell people that they should get a launchpad account before the event
<jcastro> that will save you some time in the long run
<jcastro> also, as you can see ... the california people are having an event during SCaLE
<jcastro> we encourage local teams to use events as an opportunity to run a jam
<jcastro> any more questions?
<jcastro> you guys are too easy. :D
<jcastro> One of my favorite pages is this one: https://wiki.ubuntu.com/Bugs/HowToTriage
<j1mc> i feel like ubuntu-chicago has a good start... we just need to make things come together.  this will be our first one.
<jcastro> triaging bugs is a skill that can get rusty
<jcastro> I myself constantly need to refer to the documentation or people
<jcastro> That's what makes 5-a-day great, it keeps you sharp for things like this
<jcastro> so you might use the GBJ to learn how to do a good job
<cfoch> can somebody give me a link about how to organize a Ubuntu global Bug Jam in IRC, in spanish???
<jcastro> and then do a few a day
<jcastro> I will find someone to do a translation of this page
<jcastro> we should get something up in multiple languages
<cfoch> ok
<jcastro> any other recommendation for these pages?
<jcastro> we've tried to make them as simple as we can
<jcastro> ok, I will send a mail to see if we can get the page translated into major languages.
<j1mc> jcastro: the material sections look helpful.  thanks.
<jcastro> j1mc: if a LoCo makes something we encourage them to just throw it on there
<jcastro> one thing that might be fun would be a big bug bingo board
<j1mc> cool
<cfoch> my email is: cfoch@live.com, if you get a translation, send me a email
<jcastro> like on a whiteboard or projector
<nhandler> j1mc: Adding a section to the wiki that outlines some of the things that you should do as an individual before the jam might be a good idea
<nhandler> * jcastro
<jcastro> ok
<jcastro> things like "get your lp account", etc.
<jcastro> any other tips or tricks you guys would like to share?
<jcastro> rick_h_?
<nhandler> jcastro: We have the greasemonkey scripts for Firefox that make Launchpad more usable
<jcastro> ah right
<jcastro> nhandler: it might be a good idea to link those up at the bottom of the GBJ page, after the 5-a-day
<nhandler> https://edge.launchpad.net/launchpad-gm-scripts
<rick_h_> jcastro: sorry, I've actually not done a bug jam with you guys.
<jcastro> heh
<jcastro> one thing we found useful
<jcastro> is someone sets up a laptop on the projector with a browser open
<jcastro> and when someone gets "stuck" or doesn't know what to do
<jcastro> they yell out the number, and someone loads it up
<jcastro> and then they discuss the bug and what possible ways to proceed
<jcastro> the nice thing is, if the group still can't figure it out, one person can ask on #ubuntu-bugs during the jam
<jcastro> and then when they get the answer they can share it with the group
<jcastro> I found this really useful because it makes it an open discussion
<jcastro> so one person will say "someone should tell the reporter to add this log" or whatever
<jcastro> then that way everyone knows the information
<jcastro> also, there are certain bugs that have a certain workflow
<jcastro> (one sec, searching for it)
<nhandler> Another thing that might be useful to LOCOs that decide to try and patch bugs (or are doing other work in a terminal) is http://blog.bodhizazen.net/linux/shared-terminal-sessions-over-ssh/. That blog post by bodhizazen explains how to set up a computer so that people can connect via ssh to a read-only shell
<jcastro> so for example for X bugs there's a certain way to do them
<jcastro> https://help.ubuntu.com/community/DebuggingXAutoconfiguration
<jcastro> that would save you some time
<jcastro> also ...
<jcastro> https://wiki.ubuntu.com/BugSquad/KnowledgeBase
<nhandler> https://wiki.ubuntu.com/Bugs/Responses also saves time for some bugs
<jcastro> this will basically give you so much information you won't know what to do with. :D
<jcastro> but generally speaking if you just follow the triage guide and have people follow along then that will be fine
<jcastro> any other questions?
<nhandler> Nope
<jcastro> wow
<jcastro> well, you can ask questions on the loco-contacts mailing list
<jcastro> you can also mail me directly at jorge@ubuntu.com
<jcastro> I encourage you to hang out in #ubuntu-bugs
<jcastro> and reach out to other groups doing the Jam to share ideas and best practices!
<nhandler> I would also recommend looking at some triaged bugs on Launchpad. You can learn a lot from them
<jcastro> as you can see we don't have as many sign ups for the GBJ as we do locos - so get the word out!
<nhandler> Thanks a lot for giving this session Jorge
<jcastro> get other groups to sign up!
<jcastro> something a little competition helps
<jcastro> for example I am confident that the michigan team will demolish chicago. :p
 * nhandler refrains from commenting
<jcastro> heh
<jcastro> ok thanks everyone for coming!
<jcastro> I appreciate you taking the time!
 * jcastro runs out for some brazilian food
<rhdun> ooh, where?
<nhandler> Is someone adding these logs to the wiki?
<jcastro> nhandler: might be a good idea
<jcastro> nhandler: or mail them to me, I need to consolidate with daniel's logs anyway
<txwikinger> bon appetite, jcastro
<nhandler> jcastro: Sure thing. I'll send you a copy
<jcastro> rhdun: this place called Gaucho Brazilian Steakhouse
<jcastro> sounds yummu
<mvaliyav_> 6.182
<error404notfound> can someone name me a very light and simple text editor with numbering, and syntax highlighting, nothing else, coz my gedit is getting really heavy and giving problems
<Dykam> geeting heavy?
<Dykam> getting
<error404notfound> oopss, wrong channel :p
<error404notfound> Dykam: yup, you are right..
<Dykam> reboot gedit... how is it possible for a static program to... become heavy
<istaz> error404notfound: leafpad
<error404notfound> istaz: I have got to geany...
<error404notfound> liked it..
<istaz> ok
<error404notfound> Dykam: nope, there are other issues like it always opens a file with a name of 0 or a local cell number whenever I open it without any file, same is issue with firefox, I have its home set to about;blank but when I run firefox it goes to http://0/ or http://alocalcellnumber/
<Dykam> about:blank I hope
<error404notfound> yup, sorry, too many typos, its about:blank..
<Dykam> :P
<error404notfound> anybody here who is a django developer?
#ubuntu-classroom 2009-02-01
<easwar> \o talsemgeest
<talsemgeest> Heya easwar
<easwar> so you are alive in #uf-beginners
<easwar> :)
<talsemgeest> I only just came online, and I have to leave soon too...
<easwar> talsemgeest, hmm
<talsemgeest> easwar, Hmm?
<talsemgeest> Yeah, I'm sorry, I'm going to have to miss your lesson. :(
<easwar> talsemgeest, no problem
<easwar> you probably know how to deal with Ubiquity's partitioner and GParted
<talsemgeest> Haha, yeah. I was hoping I could help you out a bit, but it is my first day back at school tomorrow, and it is 10:35PM now
<talsemgeest> So it is best for me not to stay up...
<easwar> talsemgeest, hmm
<easwar> cool
<easwar> no problem
<easwar> Who's a Ubuntu member?
<easwar> We need someone to be able to make this channel moderated for the Beginners Team-Education Focus Group session 4 hours from now
<ibuclaw> asd
<ibuclaw> :)
<easwar> cool
<forestpixie> all done then
<easwar> yeah
<ibuclaw> /voice name
<ibuclaw> to voice them when moderated
<ibuclaw> and /devoice name
<ibuclaw> I think
<ibuclaw> you'll figure it out soon enough. I'm just going off memory
<forestpixie> try again easwar and I'll voice ibuclaw
<easwar> forestpixie, go for it
<ibuclaw> :)
<easwar> ibuclaw, say something\
<forestpixie> I did - see
<easwar> done
<easwar> cool
<easwar> ibuclaw, say something again
<ibuclaw> no
<ibuclaw> I don't want to
<ibuclaw> meanie :)
<easwar> ok
<ibuclaw> anyways, I'm off to work
<easwar> forestpixie, /mode +m to moderate,/mode -m to unmoderate
<easwar> bbye ibuclaw
<easwar>  /voice nick to voice,/devoice nick for removing voice
<forestpixie> yep I got it
<easwar> forestpixie, gotta reboot for the kernel update,be back in a bit
<forestpixie> k
<easwar> give me ops before you go forestpixie
<easwar> or we will be stuck with no ops at all
<easwar> \o PartyBoi2
<PartyBoi2> hey easwar
<easwar> PartyBoi2, Ubuntu member?
<PartyBoi2> easwar, I am not a ubuntu member why?
<easwar> PartyBoi2, coz only Ubuntu members can take or give ops in this channel
<easwar> and suppose I and forestpixie do something stupid and remove our ops,we will need a member to give it back to us
<PartyBoi2> sorry, can't help you there :)
<forestpixie> you've got ops - just don't leave till we've done :)
<easwar> forestpixie, I won't of my own volition
<easwar> but God forbid,if there's a power cut......
<jpds> If you need someone, just ask us in #ubuntu-irc.
<easwar> jpds, for Ubuntu members?
<jpds> easwar: Well, the op team is there and we're generally members.
<easwar> jpds, thanks then
<easwar> will keep that in mind
<easwar> :)
<easwar> :D
<jpds> Anytime.
<easwar> :)
<easwar> forestpixie, such accidents are why we need an Ubuntu member nearby ;)
<easwar> nick timeouts etc
<forestpixie> hi - how many people have turned up for the Partitioning - Part One session ?
<forestpixie> I'll ask again - how many people have turned up for the Partitioning - Part One session ?
<forestpixie> the person running the session has some power cut issues and has just left the building
<PartyBoi2> I have forestpixie
<forestpixie> lol
<PartyBoi2> so when will we be starting?
<PartyBoi2> what is happening forestpixie?
<forestpixie> it seems that there's no-one here for it - if there are I'll try and run it on the fly
<forestpixie> we can postpone it if necessary
<PartyBoi2> maybe that might be an option since easwar is not here
<forestpixie> indeed
<forestpixie> I'l' wait till 13:50 UTC and cancel then if he still cut off
<PartyBoi2> ok, hopefully others will turn up in the meantime or raise their hand to let you know they are here for the Partitioning session
<forestpixie> :)
<forestpixie> ok - assuming that no-one is here for it and as eawar is still missing I'll postpone the session
<PartyBoi2> ok forestpixie, thanks for your time anyway and hopefully more will turn up next time as well as easwar
<forestpixie> :)
<unutbu> Is it true that IDE drives can have up to 63 partitions?
<forestpixie> yea afaik  - but only 4 primaries - including a extended which can have numerous logicals
<unutbu> I read recently that since IDE drives now use the same driver as SATA drives, they can now only support 15
<forestpixie> I did see something similar myself, and tbh I've not tried
<forestpixie> I've not looked into it in any depth since - not needing to do so
<easwar> Are we started?
<unutbu> Okay, thanks forestpixie
<forestpixie> no we cancelled there was no-one here for it
<forestpixie> other than unutbu asking a question just now :)
<easwar> no one?
<forestpixie> nope
 * easwar is quite licky then
<easwar> *lucky
<forestpixie> glad you noticed that typo :)
<easwar> forestpixie, hmm?
<easwar> what would licky mean?
<forestpixie> puppies can be licky :)
 * easwar doesn't get it
<forestpixie> easwar: unutbu asked  I read recently that since IDE drives now use the same driver as SATA drives, they can now only support 15
<easwar> 15 partitions?
<forestpixie> I read the same somewhere too
<easwar> well,that is news to me
<easwar> BTW, what was the message you received when I quit?
<unutbu> try it, we'll tell you
<easwar> unutbu, I can't
<easwar> unutbu, that was an unintentional quit because of power failure
<forestpixie> easwar has quit (Read error: 60 (Operation timed out))
<easwar> hm
<easwar> unutbu, well,where did you read this?
<easwar> that SATA drivers force IDE drives to have a max of 15 partitions?
 * easwar is kinda happy,as well as sad
<unutbu> Um, it was on ubuntuforums a day or two ago
 * easwar hasn't seen it
<forestpixie> that's where I saw it too I think
<unutbu> http://www.uluga.ubuntuforums.org/showpost.php?p=6644988&postcount=8
<easwar> hmm,citations needed
<forestpixie> http://tldp.org/HOWTO/html_single/Partition/#logical
<forestpixie> perhaps it's so - I'll play with an old hdd and let you know unutbu what I find out :)
<unutbu> Oh good. Thank you very much.
<easwar> ah,not that
<forestpixie> won't be 'very' soon but I'll pm you on the forum :)
<easwar> I meant where is it that Linux uses IDE drives using SATA drivers?
<unutbu> no problem; take your time :)
<forestpixie> heh - it won't be till week or two - I got my session to think about for next saturday - but if no-one turns up I'll look then lol
<pleia2> it's fine to postpone, but just be aware that some people join the channel knowing they can't be here, but intend to read the logs :)
<pleia2> plus, logs are posted online after for folks who couldn't make it - so even a session that only has a couple attendees is still useful
<forestpixie> mmm ok
<easwar> pleia2, zilch attendees
<pleia2> ah, I thought PartyBoi2 and unutbu were here for it :)
<forestpixie> partyboi2 was here keeping me company and I wasn't sure about unutbu
<easwar> pleia2, nope, PartyBoi2 doesn't need to
<easwar> and I'm also unsure about unutbu
<forestpixie> but I'll bear it in mind next week pleia2
<easwar> forestpixie, they don't attend sessions,and later create threads with Partitioning problem for dual boot
<easwar> and crying faces
<easwar> lol
 * easwar will have a field day increasing his post count at the next Ubuntu release(again)
<easwar> forestpixie, you can deop yourself
<zpowers> I'm sorry to intterupt, but I'd find it difficult to believe that IDE and SATA disk would use the same driver, due to the nature of the disk(one being parallel the other serial). What unutbu may be refering to is the consolidation of unix device names for IDE and SCSI devices in the linux kernel(ie IDE drives are no longer being named hd[a-z] but rather all drives are now using the name sd[a-z])
 * easwar too
<forestpixie> yea I believe he is - but whether it makes a physical difference to howmany logicals can be created I've no idea as I've not attempted to do so ever
 * easwar too
<easwar> any people here for the partitioning session?
<zpowers> I'd think the number of paritions is limited much more by the capabilities what the MBR and BIOS than the Linux(or any other) kernel
<unutbu> zpowers: See the link forestpixie referenced: http://tldp.org/HOWTO/html_single/Partition/#logical
<easwar> unutbu, that doesn't prove that IDE drives now onwards can only have 15 partitions as opposed to 63 earlier
<unutbu> Yes, I agree, with that easwar
<unutbu> zpowers was saying the limitation was due to MBR or BIOS. The tldp link suggests that it is a limitation of linux
<easwar> unutbu, plus the post that was referenced in the Ubuntu forums has a disclaimer that he may be wrog
<easwar> *wrong
<unutbu> Yes, I know that the source was himself uncertain. I would like to check this, but I have no IDE drive
<zpowers> Its also unlcear wether this limit is 15 per primary volume, or 15 in total
<zpowers> I have an IDE drive in use at home
<easwar> unutbu, I have a PATA drive
<easwar> similar,IIRC,to an IDE
#ubuntu-classroom 2010-02-01
<dubey> but gives me error : The PPP daemon has died: pppd options error (exit code = 2)
#ubuntu-classroom 2010-02-02
* pleia2 changed the topic of #ubuntu-classroom to: Ubuntu Classroom || Support in #ubuntu || https://wiki.ubuntu.com/Classroom || https://wiki.ubuntu.com/Packaging/Training || Upcoming: Fri 26 Feb 2010 @ TBD: Bugs Q&A; Thu 4 March 2010 @ 17:00 UTC: Adopt an Upstream || Run 'date -u' in a terminal to find out the UTC time | Ask questions in #ubuntu-classroom-chat
<Dan_E> !test
<ubottu> hrm?
#ubuntu-classroom 2010-02-03
* ChanServ changed the topic of #ubuntu-classroom to: Ubuntu Classroom || Support in #ubuntu || https://wiki.ubuntu.com/Classroom || https://wiki.ubuntu.com/Packaging/Training || Upcoming: Sat 27 Feb 2010 @ 00:00 UTC : Bugs Q&A; Thu 4 March 2010 @ 17:00 UTC: Adopt an Upstream || Run 'date -u' in a terminal to find out the UTC time | Ask questions in #ubuntu-classroom-chat
<kali1> i am new to linux
<kali1> anybody help me
<kali1> is there any channel for india
<Severity1> hi kalil
<tsimpson> !in
<ubottu> #ubuntu-in is the channel for Ubuntu in India
<kali1> thanx
<thisfred> mw
#ubuntu-classroom 2010-02-05
<twinsenx> date -u
<nigel_nb> twinsenx, in your terminal
<twinsenx> yep thnx
<alphacharlie_> hi everyone.i'v written a shell script n i want  to copy it to bin so that i can use it as command.but 'cp script-name ~/bin' this isn't working.i used chmod 755 to define access to script.then tried to copy it.not working.any idea, how to do it?.
<maxb> This channel is used for scheduled presentations. For ad-hoc support, use #ubuntu.
#ubuntu-classroom 2010-02-07
<sciencehelp> can sum 1 hel me
<sciencehelp> can sum1 finish dis sentecne for me plz    concentrated acids are more hazardous than dilute acids
<sciencehelp> fuk use
#ubuntu-classroom 2011-01-31
<funeralfog> ohai
<funeralfog> some1 can help me?
<funeralfog> #!/bin/bash while true; do for i in /home/sbasti25/documents/proxy.txt; do curl -d/--data; done curl http://pyweg.xeross.nl/refer/11 sleep 1 done
<funeralfog> there is a problem in this source. but i cant figure out what it is
#ubuntu-classroom 2011-02-03
<fear> no lesson today?
#ubuntu-classroom 2011-02-04
<GauravButola> Hello guys
<GauravButola> Does someone hold classes here?
<pleia2> yes, but there is nothing currently on the schedule
<GauravButola> ple
<GauravButola> ohhh
<jono> hey
<jono> Please ask your questions in #ubuntu-classroom-chat
* 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 || Current Session: Q&amp\;A w/ Pete Graner, Kernel Engineering Manager - Instructors: pgraner
<jono> and I will paste them in here for pgraner
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/02/04/%23ubuntu-classroom.html following the conclusion of the session.
<jono> Please only ask kernel questions, and I will paste those for pgraner
<jono> alrighty folks, ask your kernel questions in #ubuntu-classroom-chat!
<jono> <UndiFineD> QUESTION: what is the impact on performance on the BLK removal ?
<jono> pgraner, ^
<pgraner> UndiFineD, should be a positive impact, and will make things more maintainable long term
<pgraner> UndiFineD, will be more noticeable on multi-core boxes
<pgraner> next
<jono> <kim0> QUESTION: Does Ubuntu server have certain tweaks applied to its kernel vs desktop
<pgraner> kim0, the only real tweaks are a few config settings and the increase on the number of CPUs the kernel supports
<pgraner> kim0, and the default IO scheduler is Deadline
<pgraner> next
<jono> <OkDucky> question: why does the performance of ubuntu (10.10) reduce a fair bit when under heavy hdd load? is there work being done to improve this? (it could just be my hardware of course..)
<pgraner> OkDucky, the IO Scheduler for 2.6.38 has been revamped so you should start to see better performance
<pgraner> next
<jono> <Taek> Question : How exactly does the glorified 200 lines kernel patch will benefit in 11.04
<jono> pgraner, ^
<pgraner> Taek, That is the auto cgroup stuff, isolate session tasks, it helps balance the load and will help increase performance
<pgraner> jono, sorry takes a bit to type this
<jono> :-)
<pgraner> Tach, bottom line is you will see a benefit on heavy IO
<pgraner> next
<jono> <m4n1sh> Question: What about btrfs? When is it going to be in a usable situation fit for default install?
<pgraner> m4n1sh, Post 11.04 we are expecting it to shore up to be a default, right now its in the installer but you have to manually select it
<pgraner> next
<jono> <sebsebseb> QUESTION:  What are the main features of the next kernel?
<pgraner> jono, look at kernelnewbies.org for the 2.6.38 kernel, way to many to list here
<pgraner> next
<jono> <Jay-Cee> QUESTION: Any improvements with btrfs performance?
<pgraner> sebsebseb, also look at the A2 release notes some more info there as well
<pgraner> Jay-Cee, file deletion is noticeable, but as with any dev system things are in flux
<pgraner> s/noticeable/noticeably faster/
<pgraner> next
<jono> <Tach> QUESTION: will there be any fixes with the issues with input of some joysticks being detected as mouse input. An example of such an issue is here: https://bugs.launchpad.net/ubuntu/+source/hal/+bug/421812
<pgraner> Tach, not sure this is an edev issue with X, not kernel per se
<pgraner> next
<jono> <m4n1sh> Question: Lennart posted a 2 line solution for the glorified 200 lines patch for kernel. Was Lennart's solution better than that of kernel?
<pgraner> m4n1sh, Lennart's solution had a limited use case and was not general purpose unfortunately
<pgraner> next
<jono> <m4n1sh> Question:  I heard that installing ubuntu using btrfs as FS takes some hours to install. Is it true? Any special reason for this problem (provided it is true)
<pgraner> m4n1sh, that used to be the case, more recent versions of the kernel have fixed that specific issue afaik
<pgraner> next
<jono> <kim0> QUESTION: How does the server's kernel compare to other enterprise distros' kernels , i.e. does the team regularly sync drivers for Enterprise grade cards (SAS, NICs, LOMs...)
<pgraner> kim0, So this is a multipart answer so bear with me while I type it out
<pgraner> We have a pkg call LBM that get updates on a few drivers (LBM == Linux Backport Modules)
<pgraner> We also have for LTS releases backported kernels that have the latest in upstream hardware enablement
<pgraner> the kernels are call LTS Backport Kernels and are basically the latest release kernel running on the last LTS
<pgraner> Keep in mind this is NOT A DESKTOP feature
<pgraner> it is only supported on the server flavor
<pgraner> so yes we have some level between the two to refresh drivers for servers
<pgraner> next
<jono> <m4n1sh> Question: The problems with suspend/resume/hibernate lies in which part of the kernel? Is the situation improving?
<pgraner> m4n1sh, the issue isn't really with the kernel, it lies with the system BIOS, most are broken, specifically within the ACPI portion of the BIOS.
<pgraner> we have a tool call fwts (in universe) that will test your bios and tell you what is broken
<pgraner> run that if you are having issues then attach the out put when you file a bug
<pgraner> it will help us determine if its a true kernel issue (rare) or a broken BIOS
<pgraner> next
<jono> <doctormo> QUESTION: What should you do if a kernel bug makes ubuntu unstable for a target machine? downgrade kernel or downgrade os?
<pgraner> doctormo, downgrade the kernel, way easier
<pgraner> next
<jono> <Taek> QUESTION: Is there plans or even talk about having a system update without having to restart or install third party software such as ksplice.
<pgraner> Taek, the kernel will support kplice however we have no plans to do such a thing, there is already a commercial venture
<pgraner> that does that
<pgraner> next
<jono> <sebsebseb> QUESTION: Do you think that Ubuntu Desktop might use Ksplice in the future?
<pgraner> sebsebseb, No as stated in the last question
<pgraner> next
<jono> <doctormo> QUESTION: Is there any plan to help move packages from module-assistant to dkms in debian/ubuntu?
<pgraner> doctormo, no there are no plans to do so, dkms is our preferred method for out of tree drivers
<pgraner> next
<jono> <GauravButola> QUESTION : There are wirless modems (wireless broadband data cards) and TV tuner cards, which do not get detected by Ubuntu at all. What can I expect in 11.04 in this respect.
<pgraner> GauravButola, depending on the device there are several reasons why it may or may not be supported in Ubuntu
<pgraner> the biggest reason is that the firmware is not available or there is not a driver
<pgraner> if the firmware is available and we don't have it file a bug and we will see what we can do to get it into the distro
<pgraner> as far as what to expect, there is better support based on bugs and user feedback.
<pgraner> next
<jono> <doctormo> QUESTION: Does hard coding usb and pci ids into the kernel driver code make enabeling hardware that would work, but for a new id, more difficult?
<pgraner> doctormo, It is harder but its the only way we have right now, device tree should fix this problem in the future but its not ready for prime time on X86
<pgraner> next
<jono> <sebsebseb> QUESTION: I don't really know much about USB 3.0, but when is Ubuntu likely to support it?
<pgraner> sebsebseb, it entered the kernel in 2.6.35 iirc and has been in ubuntu
<pgraner> sebsebseb, older ubuntu kernels will get support as it bubbles into the stable tree from upstream
<pgraner> next
<jono> <doctormo> QUESTION: Are there any automated kernel speed tests happening in order to improve perforance in the kernel?
<pgraner> doctormo, not currently, there are plans but that is more of a QA question (hint ask marjo on his turn)
<pgraner> however there are other doing it
<pgraner> next
<jono> <sebsebseb> QUESTION: Do you think Ubuntu 11.10 will use BTRFS by default, if so why?
<jono> that was the last question - any final questions? ask them in #ubuntu-classroom-chat !!
<pgraner> sebsebseb, at this point we have no idea, that will be determined based on stability at UDS
<pgraner> next
<jono> ok, we are all out
<pgraner> Great thanks everyone!
<jono> if there are no more questions in the next minute or so, we will wrap up
<pgraner> Hope it was helpful
<jono> OK, it's a wrap!
<jono> thanks everyone, and thanks pgraner for taking the time today :-)
<pgraner> Thanks I'm out!
<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 ||
#ubuntu-classroom 2011-02-05
<i4ba1_> excuse me
<maco> there's no class going on here right now
<i4ba1_> i read on https://wiki.ubuntu.com/BeginnersTeam/FocusGroups/Development/Academy
<i4ba1_> there is class c++
 * maco clicks
<i4ba1_> on 15:00
<i4ba1_> but i think there is a differetn time
<maco> 15:00 isn't for another 9 hours
<maco> oh come on webpage, load fasterer
<i4ba1_> time 15:00 for country what?
<i4ba1_> because in my country
<maco> it''s UTC
<i4ba1_> oh
<maco> like, my timezone is Eastern US which is -05:00 which means i take UTC and subtract 5 hours to get local time
<ToyKeeper> That page says "hour / utc" in the time column...  UTC.
<maco> if you're in india, im sorry about your half-hour wackitude
<i4ba1_> i'm in indonesia
<maco> (if you're not:  india is 5 and a half hours off of UTC)
<ToyKeeper> If you have an ubuntu or debian system, the 'gworldclock' package is useful for tracking these things.
<maco> (which is just WEIRD)
<nigelb> maco: haha, you gotta pull us on the half hour wackitude don't ya? ;)
<maco> nigelb: yes
<maco> nigelb: though that one timezone that's got a :45? they win
<nigelb> There is a timezone with :45?
<nigelb> Ok, they win hands down
<maco> yes
<nigelb> there are other time zones with :30 too
<maco> only winninger thing would be like... :37
<maco> (which doesnt, afaik, exist)
<nigelb> Divided state of maco.
<maco> i4ba1__: how's that network doing?
<i4ba1__> down again
<nigelb> Anyway, jokes apart. Lets get off the classroom channel, its logged for classes.
<maco> i4ba1__: you got all the important bits
<i4ba1__> so i must wait 9 hour
<maco> yes
<i4ba1__> it mean 22:00 pm in mycountry
<maco> if thats too late for you, it will be logged and posted on the wiki for you to read later
<nmvictor> what are we being taught today?
<maco> in 7 hours, C++
<tsimpson> there's a link to the google calendar in the topic
<nmvictor> tsimpson, thanks
<platina> hy
<niRin> hiho
<niRin> #ubuntu-classroom-chat
<niRin> humm
#ubuntu-classroom 2011-02-06
<seidos> jmarsden: dpkg -l compiz cool!
<seidos> just learned that
<seidos> oops...wrong room o_o
<jmarsden> try in #ubuntu-beginners-team :)
 * seidos dies of embarrassment
<xaji> hello, i am planning to subscribe to a mobile service, they offer internet within the package, the smartphone i am going to purchase has wifi, my old laptop also has wifi in, can is it possible to surf the web from my computer by sharing internet over wifi without router??
<xaji> any help please!!
<xaji> i have ubuntu netbook on my laptop.
<xaji> 107 in da room, nobody says back hello!
<xaji> hell----OOOO
<xaji> heeeeeeeeeeeeeeey
<xaji> help please
<xaji> hello
<xaji> tfooo 3la bachar!!!
#ubuntu-classroom 2012-01-30
<blackshirt> :D
<dcantir_> hello, what is this stuff about ? i'm first time here
#ubuntu-classroom 2012-01-31
<royd> help load
<royd> part
<ingenium> re
<superZoom> hi all
<benonsoftware> Hello superZoom
<superZoom> looking forward for this session
<superZoom> excited!!! what about you ???
<benonsoftware> sadly I will not be able to attend
 * benonsoftware is running a session :P
<superZoom> how silly i am ;-)
<benonsoftware> What?
<superZoom> i mean your running a session and I am asking you about attaining  it
<benonsoftware> :P
<superZoom> is this session going to be IRC only??? I mean no screen share or Remote Desktop view ??
<superZoom> or Voice ??
<benonsoftware> No sorry
<calmpitbull> Hi all
<Gligorijan> hello ubuntu!
<stas> stas2
<tehr> when does the next session start?
<dholbach> tehr, https://wiki.ubuntu.com/UbuntuDeveloperWeek â 15:00 UTC
<dholbach> which is in roughly 3h30m
<tehr> thnx dholbach
<simmel> dholbach: You are *too* nice = )
<dholbach> no, I'm not :)
<tsega> @dholbach great didn't miss it
<meetingology> tsega: Error: "dholbach" is not a valid command.
<tsega> great didn't miss it
<jrzabott> hellow...
<jrzabott> Someone, please, can help me, how did the development week works?
<aquarius> jrzabott, heya. Developer Week is a series of online talks, done in this channel, starting later on today.
<aquarius> jrzabott, you should join both this channel and #ubuntu-classroom-chat
<aquarius> Once Developer Week starts, only the speaker is allowed to talk in here, but anyone can talk, ask questions, or discuss the talk in #ubuntu-classroom-chat
<aquarius> the text of each of the talks is also published after the week is over, if you miss any talks.
<aquarius> jrzabott, the person running Developer Week is dholbach, who is lovely and helpful.
<jrzabott> Cool!!! Thanks everybody... i'm using the ircII, and i'm a little bit lost...  How can I join the other channel? just /join #channel
<dholbach> check out https://wiki.ubuntu.com/UbuntuDeveloperWeek and the links in there
<jrzabott> I never used Irc in linux before... LOL... don't know any client.
<dholbach> yeah, just /join #ubuntu-classroom-chat
<mohitkumar> why does sometime shared drive feature does not work ?
<aquarius> mohitkumar, the best place to ask technical questions is in #ubuntu -- this channel is really for giving talks about Ubuntu at specific times, so there aren't many people in it who could help.
<medberry> dholbach, are the back to back 30 minute sessions really the same content (or is it more like an hour long session?)
<dholbach> medberry, an hour long
<medberry> thanks.
<ET1> hello
<umituzun> Hi there
<amigokaran> What time is the first session starting?
<Atlantic777> 15:00 UTC
<Palmwedler> 15:00 UTC
<fecub> 15
<dholbach> in around one hour
<amigokaran> Awesome, thanks!
<dholbach> if you type    date; date -u    in a terminal, you will get your current time and UTC time
<umituzun> thanks too
<palladin35y> i'm early right ?
<dragly> palladin35y, sorry, no - all the good cookies are already eaten
<umituzun> yeah right
<dragly> palladin35y, but the session hasn't started yet, no ;)
<palladin35y> oh man no cookies
<palladin35y> thanks  dragly
<toni> 1 more hour. I suggest new commers (like me) to read this: https://wiki.ubuntu.com/IRC/Guidelines?action=show&redirect=IrcGuidelines
<galileo_> exit
<zgr> hey guys shows start in 48 min?
<Rbitch> when the class is supposed to start?
<LyzardKing> 50 minutes
<LyzardKing> more or less
<Rbitch> thank ya :)
<yuanfei> Too late for me in China...
<kai1> exit
<devkorcvince> a big classroom we have here hope i can see my seatmate lol [kablam coffee mode]...
<jrzabott> da;date -u
<konor> date -u
<konor> da;date -u
<konor> :)\
<dholbach> konor, jrzabott: open a terminal window, then type it in there
<jrzabott> kkk
<jrzabott> i've opened... bt te focus hasn't changed.
<jrzabott> sometimes it happens here. LOL
<jrzabott> sorry everybody.
<palladin35y> np man
<amigokaran> Hey, can anyone give an brief description of how this class will be conducted on IRC?
<tejaswidp> check the wiki?
<kbmonkey> ttps://wiki.ubuntu.com/UbuntuDeveloperWeek/JoiningIn
<dholbach> amigokaran, I'll give a quick introduction when we start
<amigokaran> Ok awesome that will help
<dholbach> WELCOME EVERYBODY TO UBUNTU DEVELOPER WEEK!
<dholbach> First of all a few introductory and organisational bits before we get started with out first session.
<Sherlock_> 212
<dholbach> Here's how this whole event is going to work:
<dholbach> in #ubuntu-classroom the presenter will hold the session, explain and demo everything
<dholbach> in #ubuntu-classroom-chat we all can chat and ask questions
<dholbach> so if you haven't joined #ubuntu-classroom-chat yet, please do so
<dholbach> also if you ask questions, please make sure you prefix them with QUESTION:
<dholbach> QUESTION: What music do you like?
<dholbach> etc. :)
<dholbach> also if you have any problems following the session, you can ask in #ubuntu-classroom-chat where we have lots of experience and helpful people who will sort you out :)
<dholbach> Alright, here we go with Session 1!
<dholbach> My name is Daniel Holbach, I have been involved in Ubuntu since the second release and always loved the community, with a particular focus on development things.
<dholbach> In the next hour I'll give you a first introduction to Ubuntu development
<dholbach> and in the following session, also an hour, I'll help you set up a development environment on your machine
<dholbach> if you have any questions, please ask in #ubuntu-classroom-chat
<dholbach> also tell me if something was unclear or if I'm going too fast :)
<dholbach> something I forgot earlier which is asked very often: yes, we will post the logs on https://wiki.ubuntu.com/UbuntuDeveloperWeek once the sessions are over, so if you can't make it to a session, you can still read it later on :)
<dholbach> <bjhaid> dholbach: would training here be relevant for linux-mint?? since its built on ubuntu?
<dholbach> bjhaid, yes, the vast majority of the content of the sessions will be applicable to all Debian and Ubuntu derivatives
<dholbach> some of the infrastructure bits will likely be different
<dholbach> Let's get cracking. :-)
<dholbach> Ubuntu is made up of thousands of different components, written in many different programming languages.
<dholbach> very component - be it a software library, a tool or a graphical application - is available as a source package.
<dholbach> Source packages in most cases consist of two parts: the actual source code and metadata. Metadata includes the dependencies of the package, copyright and licensing information, and instructions on how to build the package.
<dholbach> Once this source package is compiled, the build process provides binary packages, which are the .deb files users can install.
<dholbach> This means we never deal with binary or compiled code, this is "open source" software after all. :)
<dholbach> Every time a new version of an application is released, or when someone makes a change to the source code that goes into Ubuntu, the source package must be uploaded to Launchpadâs build machines to be compiled.
<dholbach> The resulting binary packages then are distributed to the archive and its mirrors in different countries. The URLs in /etc/apt/sources.list point to an archive or mirror.
<dholbach> Every day CD images are built for a selection of different Ubuntu flavours. Ubuntu Desktop, Ubuntu Server, Kubuntu and others specify a list of required packages that get on the CD. These CD images are then used for installation tests and provide the feedback for further release planning.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Ubuntu Development - Instructors: dholbach
<dholbach> <jrzabott> QUESTION: how important/useful is Python for Ubuntu development? It is a language that I decided to dedicate all my skills and learning.
<dholbach> jrzabott, It is important and is used a lot. Still there are many other languages used, C, C++, Perl and others for example.
<dholbach> Any more questions up until here?
<dholbach> Alright, let's move on then - I'll talk a bit about release cycle now.
<dholbach> Ubuntuâs development is very much dependent on the current stage of the release cycle.
<dholbach> We release a new version of Ubuntu every six months, which is only possible because we have established strict freeze dates.
<dholbach> With every freeze date that is reached developers are expected to make fewer, less intrusive changes.
<dholbach> If you have a look at https://wiki.ubuntu.com/PrecisePangolin/ReleaseSchedule you can see the release schedule for the 12.04 (precise) cycle.
<dholbach> Feature Freeze is the first big freeze date after the first half of the cycle has passed.
<dholbach> We are still roughly 2 weeks away from it.
<dholbach> At this stage features must be largely implemented. The rest of the cycle is supposed to be focused on fixing bugs.
<dholbach> After that the user interface, then the documentation, the kernel, etc. are frozen, then the beta release is put out which receives a lot of testing.
<dholbach> From the beta release onwards, only critical bugs get fixed and a release candidate release is made and if it does not contain any serious problems, it becomes the final release.
<ClassBot> i_can_bot_maybe_ asked: when I install an application from the software center are the sources downloaded and then built or are they built and then downloaded?
<dholbach> i_can_bot_maybe_, no, if you install a package in software-center, it's only the .deb (binary) packages installed
<dholbach> the source still is available from Launchpad and mirrors as well
<dholbach> I'll cover in the second session how to get the source for packages
<ClassBot> jrzabott asked: can we abandon C, with the Cpython use?
<dholbach> jrzabott, I doubt it - I doubt the kernel developers (among others) would be happy to switch. ;-)
<ClassBot> kbmonkey asked: For Debian-based distros, who don't rely on Launchpad, the source goes into the deb mirrors instead?
<dholbach> kbmonkey, exactly - Debian for example uses ftp.<countrycode>.debian.org mirrors
<ClassBot> kyoushuu asked: ââAre translations affected by the Feature Freeze?
<dholbach> kyoushuu, no - strings for translations are subject of release freezes a bit later
<dholbach> luckily we'll have a session about internationalisation (i18n) later this week! :-)
<dholbach> ... with more juicy details
<ClassBot> se4n_ asked: Why store binaries in .debs for all platforms when the source could be put in a .deb and compiled on the end users machine?
<dholbach> se4n_, the problem is that you would have to 1) install all the source headers and development tools on all the machines in the world and 2) with some packaging taking several hours to build it's just not practicable
<ClassBot> vikram360 asked: I was reading online that since ubuntu is supported largely by a corporation, developers are pressured into meeting deadlines i.e the dates are adhered to extremely strongly, and this sometimes leads to a somewhat shaky codebase, could someone please comment on this
<dholbach> vikram360, that's not quite accurate :-)
<dholbach> vikram360, as I mentioned before, we have freeze dates and they are agreed on a long time in advance already
<dholbach> so if you have a look at the Ubuntu wiki you will find preliminary freeze/release dates for the next few releases already
<dholbach> also it doesn't make a difference if you work for Canonical or not, these freeze dates are what counts
<dholbach> if you have good enough reasons to have to get an exception the release team might give you one
<dholbach> also there's a release team meeting every single week
<dholbach> so these things should not come "out of the blue" to you
<ClassBot> ashickur-noor asked: i18n, is this is a new method? I know 10n
<dholbach> ashickur-noor, i18n is just short for internationalisation
<ClassBot> yak12 asked: ââWhy does ubuntu have such a short release schedule?
<dholbach> yak12, personally I feel Ubuntu has proven in the last few years (with just one slipped release date), that 6 months work out quite well
<dholbach> it's a good compromise between allowing time for new features, but also making sure that there's focus on getting a product out there
<dholbach> alright, let's crack on :)
<dholbach> Thousands of source packages, billions of lines of code, hundreds of contributors require a lot of communication and planning to maintain high standards of quality.
<dholbach> At the beginning of each release cycle we have the Ubuntu Developer Summit where developers and contributors come together to plan the features of the next releases.
<dholbach> Every feature is discussed by its stakeholders and a specification is written that contains detailed information about its assumptions, implementation, the necessary changes in other places, how to test it and so on.
<dholbach> This is all done in an open and transparent fashion, so even if you can not attend the event in person, you can participate remotely and listen to a streamcast, chat with attendants and subscribe to changes of specifications, so you are always up to date.
<dholbach> Not every single change can be discussed in a meeting though, particularly because Ubuntu relies on changes that are done in other projects.
<dholbach> That is why contributors to Ubuntu constantly stay in touch.
<dholbach> Most teams or projects use dedicated mailing lists to avoid too much unrelated noise.
<dholbach> For more immediate coordination, developers and contributors use Internet Relay Chat (IRC). All discussions are open and public.
<ClassBot> UbuntuFlo asked: ââis there any chance to see ubuntu becoming a rolling-release-distribution â or at least a dedicated derivat
<dholbach> UbuntuFlo, I have no idea how that's supposed to work - the 1 million dollar question is: how do you both do great feature development and give it good testing - also: you'll have to shove out terrabytes of updates to millions of users
<dholbach> it sounds like an interesting theoretical experiment, but maybe I haven't read a practical proposal yet :)
<ClassBot> kyoushuu asked: ââHow can we participate remotely to the Ubuntu Dev Summit?
<dholbach> kyoushuu, http://uds.ubuntu.com/participate/remote/ (there's IRC rooms, voice feeds, mail updates, and the like)
<dholbach> Another important tool regarding communication is bug reports. Whenever a defect is found in a package or piece of infrastructure, a bug report is filed in Launchpad.
<dholbach> All information is collected in that report and its importance, status and assignee updated when necessary. This makes it an effective tool to stay on top of bugs in a package or project and organise the workload.
<dholbach> And we will have lots of sessions this week about how to deal with bug reports and how to fix them. It's going to be awesome!
<dholbach> Most of the software available through Ubuntu is not written by Ubuntu developers themselves. Most of it is written by developers of other Open Source projects and then integrated into Ubuntu.
<dholbach> These projects are called âUpstreamsâ, because their source code flows into Ubuntu, where we âjustâ integrate it.
<dholbach> The relationship to Upstreams is critically important to Ubuntu. It is not just code that Ubuntu gets from Upstreams, but it is also that Upstreams get users, bug reports and patches from Ubuntu (and other distributions).
<dholbach> The most important Upstream for Ubuntu is Debian. Debian is the distribution that Ubuntu is based on and many of the design decisions regarding the packaging infrastructure are made there.
<dholbach> Traditionally, Debian has always had dedicated maintainers for every single package or dedicated maintenance teams. In Ubuntu there are teams that have an interest in a subset of packages too, and naturally every developer has a special area of expertise, but participation (and upload rights) generally is open to everyone who demonstrates ability and willingness.
<dholbach> The great thing is: we will also have sessions about how to work with and work in Debian this week. So you'll be covered there as well! :)
<ClassBot> ashickur-noor asked: Is there any chance that Ubuntu become Commercial like RHL?
<dholbach> ashickur-noor, There is commercial support for Ubuntu, yes. But if ask if Ubuntu will one day cost money so you can use it, no.
<ClassBot> pawel_st asked: ââSince you have to support ~3 past releases (and not only the current one), how do you keep track of what needs to be updated & where (and who is doing this?). This seems like a HUGE task. I suppose you have to track CVEs, debian bug database etc..
<dholbach> without taking too much content away from other sessions: the great thing about launchpad is: it can track bugs in multiple places
<dholbach> so let's say we just find out that an application has been broken in a seldom used use cases since the last 3 releases and that it's also broken in Debian and upstream
<dholbach> Launchpad can track cases like this easily and also will give us updates about bug reports in Debian (or other distros) and upstream :)
<dholbach> but I agree with you: it's quite a bit of work to maintain stable releases
<ClassBot> _rahmat_ asked: i'm new in ubuntu development where should I start?
<dholbach> _rahmat_, I hope that by the end of Ubuntu Developer Week you should have a good idea of what you can do, how it works and how you can help out
<dholbach> I'll also share some more links by the end of my session :)
<ClassBot> tejaswidp asked: how different is debian sid from ubuntu?
<dholbach> a great question :)
<dholbach> if you go back to the release cycle overview I gave earlier
<dholbach> up until Debian Import Freeze we automatically sync code from unstable (given that we are working on an LTS release now, we sync from testing instead)
<dholbach> this is done as a measure to let the code solidify
<dholbach> also in other parts you will notice that Ubuntu is "ahead of Debian" in terms of newer versions
<dholbach> it always depends on the development focuses of the two, when they plan to release, what the release goals are, etc
<dholbach> so I can't give you concrete numbers, but I feel we're doing a much much better job at staying in sync
<ClassBot> Aj2012 asked: For upstream project, how bug reports are reported to original authors. Who fixes them?
<dholbach> Aj2012, bug reports are forwarded to upstream projects manually, after we collected all the necessary information
<dholbach> sometimes you will find that Ubuntu contributors forward patches to upstream, sometimes you will see that they are fixed upstream first
<ClassBot> ashickur-noor asked: I want to be a developer, from where I can start?
<dholbach> ashickur-noor, you're exactly right here - more links later
<ClassBot> raywang asked: could we have a pdf document like to track all of these, so that we can review and learn from it.
<dholbach> raywang, yes, I'll give out some links later on
<ClassBot> jincreator asked: If Debian is one upstream of Ubuntu, can some packages in Ubuntu be upstream of Debian?
<dholbach> jincreator, yes, this has happened a couple of times already - something originated in Ubuntu, then was forwarded to Debian and got maintained there or Ubuntu stayed upstream
<ClassBot> vikram360 asked: why did ubuntu choose to go with launchpad and bazaar rather than something like bugzilla and git/mercurial?
<dholbach> vikram360, Launchpad gives us many many benefits (like the automatic bug tracking in other bugzillas), a close integration with our build services, etc
<dholbach> I hope by the end of my 2 sessions it will be a bit clearer what our infrastructure can do for you
<ClassBot> burli_ asked: ââwhat is the preferred language/toolkit, especially if I want to develop lenses or apps for Ubuntu TV/Tablet/Phone? I guess, Python is not the best choice for ARM devices?
<dholbach> burli_, I would suggest you wait until the session about Unity Lenses later on to get a specific answer for the question :)
<dholbach> but yes, python is absolutely acceptable, even on ARM devices
<ClassBot> jincreator asked: Is it possible to get new one from upstream to even "released" Ubuntu? I only see new version of Firefox is landing... If then, what kind of process is needed?
<dholbach> jincreator, yes, it's possible - there's either the "stable release update" process or the "backport" process
<dholbach> you should find explanation for both on the Ubuntu wiki
<ClassBot> Valentin asked: ââWill something like this be realistic someday? http://nrutledge.blogspot.com/p/ubuntu-laptop-concept.html
<dholbach> I'm sorry - I don't have the time to read the blog post now - I still have a bunch of things to go through
<dholbach> maybe I can suggest #ubuntu-design to discuss the question in the meantime
<ClassBot> Aj2012 asked: I have small app. I want to learn packaging to make it available via launchpad. Could you please share beginners guide to learn packaging
<dholbach> Aj2012, yes, I'll share some links about this topic after the session :)
<ClassBot> Niagr asked: Why can't ubuntu receive feature updates?
<dholbach> Niagr, I think I alluded to this earlier already: you have to strike a balance between stability and testing vs. new features - supporting stable releases is hard work when it comes to testing, code review and other things -- it's very expensive to hack on multiple releases at the same time
<dholbach> alright
<dholbach> let's talk a bit about how we would go about getting changes into Ubuntu
<dholbach> Getting a change into Ubuntu as a new contributor is not as daunting as it seems and can be a very rewarding experience. It is not only about learning something new and exciting, but also about sharing the solution and solving a problem for millions of users out there.
<dholbach> Open Source Development happens in a distributed world with different goals and different areas of focus. For example there might be the case that a particular Upstream might be interested in working on a new big feature while Ubuntu, because of the tight release schedule, might be interested in shipping a solid version with just an additional bug fix.
<dholbach> That is why we make use of âDistributed Developmentâ, where code is being worked on in various branches that are merged with each other after code reviews and sufficient discussion.
<dholbach> That's why for example Ubuntu might decide to ship version 1.0 of a particular package, while upstream is working on 2.0 - and just to fix a couple of bugs ship additional patches from the 2.0 works.
<dholbach> you can see how this quickly gets complicated with thousands of packages, thousands of people interacting and each project maintaining multiple releases
<dholbach> The goal always is: finding a solution which everybody benefits from, but that can be hard.
<dholbach> Let's say you wanted to get a fix into Ubuntu - what would you do?
<dholbach> To fix a bug in Ubuntu, you would first get the source code for the package, then work on the fix, document it so it is easy to understand for other developers and users, then build the package to test it.
<dholbach> After you have tested it, you can easily propose the change to be included in the current Ubuntu development release. A developer with upload rights will review it for you and then get it integrated into Ubuntu.
<dholbach> When trying to find a solution it is usually a good idea to check with Upstream and see if the problem (or a possible solution) is known already and, if not, do your best to make the solution a concerted effort.
<dholbach> Additional steps might involve getting the change backported to an older, still supported version of Ubuntu and forwarding it to Upstream.
<dholbach> Any questions about this in particular? :)
<ClassBot> kbmonkey asked: so if I patch a UI bug in say vlc, it would reach Ubuntu in a timely fashion. How can I propose this patch be pushed downstream before that time?
<dholbach> kbmonkey, the short answer is: get the code of the package in Ubuntu, apply the patch, push it to Launchpad, propose it for merge into Ubuntu
<dholbach> we'll have several sessions this week just about this topic, so you can easily find out the specific commands
<dholbach> but yes, in general it's totally possible to get the fix into Ubuntu before an upstream release is made
<dholbach> we have a patch pilots for every day who go and review code contributions
<ClassBot> jrzabott asked: May we have some idea of numbers about the development... For example in the release of 11.04 with unity, i've tried since alpha, and had a lot of bugs... and how many people officially act writing and correct this kind of 'modules' from ubuntu? I'm not sure if i made myself clear.
<dholbach> jrzabott, there's hundreds of people directly uploading and proposing changes for Ubuntu
<dholbach> but there's even more people who work on modules (other open source projects and their software authors)
<dholbach> so it's not quite easy to give a good number which explains everything :)
<ClassBot> s9iper1 asked: bilal is here..can you tell me the merging process when the bug got fixed and than we have to merge the branches is there any guide in ubuntu  fro that or anything?
<ClassBot> There are 10 minutes remaining in the current session.
<dholbach> s9iper1, hey Bilal - yes, I'll share the links later on - basically you want to: bzr branch <branch>; <edit and fix>; bzr commit -m <message>; bzr push <location>; bzr lp-open; <click on "propose for merging">
<dholbach> but as I said: we'll have more sessions about this
<dholbach> AND I'll share links later on :)
<ClassBot> jacopoL asked: How can I decide when it is better to propose a patch upstream and when to propose it to Ubuntu?
<dholbach> jacopoL, great question!
<dholbach> for example if you have a typo fix somewhere - as it's not something critical, you can just forward the fix to the upstream authors and trust that Ubuntu will get the fix with the next release "for free"
<dholbach> if we have a crash in an important application just a few weeks before release: get it into Ubuntu (and then forward the fix upstream)
<dholbach> severity of the problem and time in the release process are guiding factors I would say
<ClassBot> fecub_ asked: where can i do all this things, in the launchpad? a developer with upload rights where i can find them?
<dholbach> fecub_, if you use the method I described earlier (push change to Launchpad, propose for merging), developers with upload rights will be notified and the fix will end up in a review queue
<dholbach> but as I said: more links later and we'll have separate sessions about Ubuntu Distributed Development (UDD) and bug fixing, bug fixing, bug fixing :)
<ClassBot> _rahmat_ asked: is this session logged? where is the log located? thanks
<dholbach> _rahmat_, yes - the logs will be put up later on at https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dholbach> but also you can find them on irclogs.ubuntu.com
<dholbach> alright, to conclude this first session, here's what it takes to get involved with Ubuntu development
<dholbach> The most important requirements for success in Ubuntu development are: having a knack for âmaking things work again,â not being afraid to read documentation and ask questions, being a team player and enjoying some detective work.
<ClassBot> There are 5 minutes remaining in the current session.
<dholbach> You don't need to be a C/Perl/Java/C++/Python hero. If you have some of the qualities above, you're right here. :-)
<dholbach> Good places to ask your questions are ubuntu-motu@lists.ubuntu.com and #ubuntu-motu on irc.freenode.net. You will easily find a lot of new friends and people with the same passion that you have: making the world a better place by making better Open Source software.
<ClassBot> tejaswidp asked: Why was such a drastic change made to the ui by bringing in unity? (I don't know if)
<dholbach> tejaswidp, Unity suits a lot of use-cases on a variety of devices.
<dholbach> and I don't feel this session is the best place to debate about it
<dholbach> instead I would propose we take 3 minutes break and get back fresh for session 2 :)
<dholbach> thanks everyone - see you in 3 minutes with fresh tea, water or whatever else you might prefer. :)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting set up for Ubuntu development - Instructors: dholbach
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<dholbach> alright my friends
<dholbach> welcome back to session 2 at UDW
<dholbach> for those of you who just joined: please make sure you also join #ubuntu-classroom-chat so you can ask questions there
<dholbach> also make sure you prefix them with QUESTIONS:, ie:
<dholbach> QUESTION: What kind of music do you like?
<dholbach> This session will be about getting your development environment set up.
<dholbach> but let's first clear out our queue of questions from the last session
<dholbach> ok, it seems ClassBot forgot the questions - let me get them from the backlog - one sec
<dholbach> <UbuntuFlo> QUESTION: ââdholbach: what version of ubuntu are you working with (private/job)? are you always using the actual development-version?
<dholbach> UbuntuFlo, I usually upgrade to the development version early on.
<dholbach> Incidentally we have a session this week about how you can easily install the dev version without having to break your current system - so stay tuned for that :)
<dholbach> <Aj2012> QUESTION: Ubuntu ships with few default set of libraries. Where can I find the recommendation about them? I feel that if my application rely more those, then ultimately it would result in fewer dependency and less more packages to download while installing my app.
<dholbach> Aj2012, we will have a session later today with an Ubuntu Technology overview which should answer a lot of this question already
<dholbach> additionally I could suggest to check out developer.ubuntu.com with documentation about libraries you can most easily use
<dholbach> <alco> QUESTION: what's the best way of requesting a mentor? I tried motu-mentoring-reception@reponses.net but didn't get a reply
<dholbach> alco, unfortunately our mentoring team is defunct at the moment - we got more requests in than we could handle
<dholbach> that's the bad news
<dholbach> the good news is: we have better documentation than ever (links later on)
<dholbach> AND:
<dholbach> you can join #ubuntu-motu where we have lots of very helpful people who can get you started
<dholbach> <kanliot> QUESTION: anything wrong with using netbeans?
<dholbach> kanliot, nothing wrong at all - the Java bits might require some specific packaging and the user to install Java libraries afterwards (if you want to package your Java application)
<dholbach> but if Java is what you are comfortable with: use it :)
<dholbach> Ok, I hope I got all questions in the queue, so let's get cracking getting our development environment set up.
<ClassBot> Ceno asked: Where can I read a log of the 3 o'clock session?
<dholbach> Ceno, we will put up the logs later on at https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dholbach> if you need them earlier, check out irclogs.ubuntu.com
<dholbach> There are a number of things you need to do to get started developing for Ubuntu. This article is designed to get your computer set up so that you can start working with packages, and upload your packages to Ubuntuâs hosting platform, Launchpad.
<dholbach> Hereâs what weâll cover:
<dholbach>  - Installing packaging-related software. This includes:
<dholbach>   - Ubuntu-specific packaging utilities
<dholbach>   - Encryption software so your work can be verified as being done by you
<dholbach>   - Additional encryption software so you can securely transfer files
<dholbach>  - Creating and configuring your account on Launchpad
<dholbach>  - Setting up your development environment to help you do local builds of packages, interact with other developers, and propose your changes on Launchpad.
<dholbach> So as I mentioned earlier: it's advisable to run the current development release if that's what you are working on
<dholbach> but if you don't have it running right now: no big deal
<dholbach> you can easily just retrace your steps later on
<dholbach> and as I said: there's a session about running the development release later this week
<dholbach> There are a number of tools that will make your life as an Ubuntu developer much easier.
<dholbach> If you run 11.10 or 12.04, run this command:
<dholbach>   sudo apt-get install packaging-dev
<dholbach> If you run an older release, run this command instead:
<dholbach>   sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file
<dholbach> This will obviously take some time, but I'll just keep on talking :)
<dholbach> This command will install the following software:
<dholbach>  - gnupg â GNU Privacy Guard contains tools you will need to create a cryptographic key with which you will sign files you want to upload to Launchpad.
<dholbach>  - pbuilder â a tool to do a reproducible builds of a package in a clean and isolated environment.
<dholbach>  - ubuntu-dev-tools (and devscripts, a direct dependency) â a collection of tools that make many packaging tasks easier.
<dholbach>  - bzr-builddeb (and bzr, a dependency) â distributed version control with Bazaar, a new way of working with packages for Ubuntu that will make it easy for many developers to collaborate and work on the same code while keeping it trivial to merge each others work.
<dholbach>  - apt-file provides an easy way to find the binary package that contains a given file.
<ClassBot> google_ asked: can we use ubuntu in virtual box for ubuntu development?
<dholbach> google_, yes, definitely - it's one of the "safe" ways to run the development release
<dholbach> Tomorrow 18:00 UTC will be a session called "Running the development release"
<ClassBot> lukestuts asked: Can you recommend a good introduction to packaging and setting up your own PPA?
<dholbach> lukestuts, yes - I'll share some links at the end of the session
<ClassBot> Kvrmurthy asked: What topics are covered till now?
<dholbach> Kvrmurthy, in the session I did before I covered the basics of Ubuntu development (an overview over all the moving parts) and now we'll set up our development environment
<ClassBot> dnewkirk asked: While we need to be testing packages and fixes in the actual release, how valuable is this before, say, beta? The toolchain changes of course, but it seems problematic as the alphas have a lot of turmoil especially for non-LTS releases...
<dholbach> dnewkirk, testing all the time is super important - of course I wouldn't ask my dad, mom, sister or brother to do it - they have other things to do and want a stable system
<dholbach> but for those of us who enjoy Ubuntu and want to spare some time contributing to it, it makes sense to go and test as early as possible :)
<dholbach> ... in a safe way, like a VM, as I mentioned earlier
<ClassBot> kbmonkey asked: I run 11.04, but enabled backports and installed packaging-dev. This will do just the same?
<dholbach> kbmonkey, if there's a package called packaging-dev and  you can install it, you should be all set
<ClassBot> fantasti1001 asked: can anyone who doesn't use ubuntu be ubuntu developer?
<dholbach> fantasti1001, it's a bit tough to develop Ubuntu if you don't use it - I'd say that if you use a VM to develop, you are an Ubuntu user though
<dholbach> alright, let's crack on :)
<dholbach> = Create your GPG key =
<dholbach> If you have a GPG key already created, skip these instructions, you just need one.
<dholbach> GPG stands for GNU Privacy Guard and it implements the OpenPGP standard which allows you to sign and encrypt messages and files. This is useful for a number of purposes. In our case it is important that you can sign files with your key so they can be identified as something that you worked on. If you upload a source package to Launchpad, it will only accept the package if it can absolutely determine who uploaded the package.
<dholbach> To generate a new GPG key, run:
<dholbach>   gpg --gen-key
<dholbach> GPG will first ask you which kind of key you want to generate. Choosing the default (RSA and DSA) is fine. Next it will ask you about the keysize. The default (currently 2048) is fine, but 4096 is more secure.
<dholbach> Afterward, it will ask you if you want it to expire the key at some stage. It is safe to say â0â, which means the key will never expire. The last questions will be about your name and email address.
<dholbach> Just pick the ones you are going to use for Ubuntu development here, you can add additional email addresses later on. Adding a comment is not necessary. Then you will have to set a passphrase, choose a safe one (a passphrase is just a password which is allowed to include spaces).
<dholbach> Now GPG will create a key for you, which can take a little bit of time; it needs random bytes, so if you give the system some work to do it will be just fine. Move the cursor around, type some paragraphs of random text, load some web page.
<dholbach> ... or just continue listening to this session - just leave the terminal sitting there and doing its thing. :)
<dholbach> = Create your SSH key =
<dholbach> Again: if you have a SSH key already generated, skip these instructions. :)
<dholbach> SSH stands for Secure Shell, and it is a protocol that allows you to exchange data in a secure way over a network. It is common to use SSH to access and open a shell on another computer, and to use it to securely transfer files. For our purposes, we will mainly be using SSH to securely upload source packages to Launchpad.
<dholbach> If gpg is still sitting there creating your GPG key, just open another terminal window or tab.
<dholbach> To generate an SSH key, enter:
<dholbach>   ssh-keygen -t rsa
<dholbach> The default file name usually makes sense, so you can just leave it as it is. For security purposes, it is recommended that you use a passphrase.
<dholbach> Any questions so far?
<ClassBot> kanliot asked: WHY DOES ssh need a key?  what does it protect?
<dholbach> kanliot, to establish a safe connection (like SSH does), you need a public and private key to do proper encryption
<dholbach> ssh is for example used if you push branches to Launchpad
<dholbach> Alright... everything clear so far? All going according to plan?
<dholbach> If not, hop into #ubuntu-classroom-chat and ask your question there. :)
<ClassBot> jacopoL asked: Are there any requirements about using your real name instead of a nickname when uploading to Launchpad?
<dholbach> jacopoL, I believe there's no strict requirement for using your real name, but it's what very close 100% in Ubuntu development do
<ClassBot> gaurav__ asked: Can I change my GPG key in future if I want to?
<dholbach> gaurav__, yes, you can add email address IDs to it, you can revoke it, add a new one, etc
<dholbach> ah, coming back to the real name question:
<dholbach> I think it's usually good and natural to publish good work you do under your own name - for example can it be a great referral when looking for jobs, etc
<dholbach> Moving on...
<dholbach> = Set up pbuilder =
<dholbach> pbuilder allows you to build packages locally on your machine. It serves a couple of purposes:
<dholbach>  - The build will be done in a minimal and clean environment. This helps you make sure your builds succeed in a reproducible way, but without modifying your local system
<dholbach>  - There is no need to install all necessary build dependencies locally
<dholbach>  - You can set up multiple instances for various Ubuntu and Debian releases
<dholbach> Setting pbuilder up is very easy, just run:
<dholbach>   pbuilder-dist <release> create
<dholbach> in our case:
<dholbach>   pbuilder-dist precise create
<dholbach> This will take a while as it will download all the necessary packages for a âminimal installationâ. These will be cached though.
<dholbach> so again: if you have pbuilder already installed, skip this part - also: if it takes longer, just leave the terminal open and the tool doings its thing
<dholbach> The great thing is: we are going to have a session about pbuilder later this week: Thu 2nd Feb - 16:30 UTC - "Building locally with pbuilder"
<ClassBot> arcimboldo asked: is it possible to use pbuilder on a debian to compile ubuntu packages?
<dholbach> arcimboldo, yes and vice versa
<dholbach> Let's go back to
<dholbach> = Your GPG key =
<dholbach> Once the command is done, you will get a message similar to this one:
<dholbach> pub   4096R/43CDE61D 2010-12-06
<dholbach>       Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
<dholbach> uid                  Daniel Holbach <dh@mailempfang.de>
<dholbach> sub   4096R/51FBE68C 2010-12-06
<dholbach> In the case above 43CDE61D is the key ID.
<dholbach> Next, you need to upload the public part of your key to a keyserver so the world can identify messages and files as yours. To do so, enter:
<dholbach>   gpg --send-keys <KEY ID>
<dholbach> If you get an error message about no specified keyserver, do this instead:
<dholbach>   gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>
<dholbach> This will send your key to one keyserver, but a network of keyservers will automatically sync the key between themselves. Once this syncing is complete, your signed public key will be ready to verify your contributions around the world.
<ClassBot> laza36 asked: ââAre there gpg keys that are too old? I have one that was certified, but it's from 1999
<dholbach> laza36, the encryption used 1999 might be a bit weak by now - I would suggest some reading on the internets
<ClassBot> Ceno asked: can one person registered in launchpad have multiple GPG keys associated with him?
<dholbach> Ceno, yes :)
<dholbach> which leads us to our next topic :)
<dholbach> = Get set up to work with Launchpad =
<dholbach> With a basic local configuration in place, your next step will be to configure your system to work with Launchpad. Here's what we will do:
<dholbach>  - Find out what Launchpad is and create a Launchpad account
<dholbach>  - Upload your GPG and SSH keys to Launchpad
<dholbach>  - Configure Bazaar to work with Launchpad
<dholbach>  - Configure Bash to work with Bazaar
<dholbach> Launchpad is the central piece of infrastructure we use in Ubuntu. It not only stores our packages and our code, but also things like translations, bug reports, and information about the people who work on Ubuntu and their team memberships. You will also use Launchpad to publish your proposed fixes, and get other Ubuntu developers to review and sponsor them.
<dholbach> ... where "sponsor" means: upload packages in your stead, until you have upload rights yourself :)
<dholbach> You will need to register with Launchpad and provide a minimal amount of information. This will allow you to download and upload code, submit bug reports, and more.
<dholbach> Besides hosting Ubuntu, Launchpad can host any Free Software project.
<ClassBot> vikram360 asked: how do i get past the postfix configuration window when installing pbuilder, neither the keyboard not the mouse seem to be working for me.
<dholbach> vikram360, hum, I didn't have that happening to me - can you just press Enter to continue with the installation - can anyone help vikram360 in #ubuntu-classroom-chat?
<ClassBot> burli_13 asked: ââhow I should handle keys in general? I have several computers an I make a fresh installation every release. Should I create new keys for each computer? Or can I use one key everywhere?
<dholbach> burli_13, GPG key I copy over (just copy ~/.gnupg/) for SSH I create ssh keys for every machine
<dholbach> Launchpad can easily deal with multiple SSH and GPG keys though
<ClassBot> nava asked: what is best programming language for writting app for ubuntu ? (which do you suggest ?)
<dholbach> nava, I personally use Python for almost everything
<dholbach> but it depends - if you want something dealing very closely with hardware, you might want to use C
<dholbach> for web apps, you might want to use PHP (Python is possible there too)
<dholbach> there's many options
<dholbach> developers.ubuntu.com might help also :)
<ClassBot> nava asked: i hear canonical is writing a sdk for ubuntu tablet,tv, phone and also desktop is it true ? if yes what is ubuntu sdk language ?
<dholbach> nava, you know much more than I do :)
<dholbach> I don't know what's in the cards - the only thing I do now, is that developer.ubuntu.com is a beautiful site with lots of good docs about writing apps for Ubuntu :)
<dholbach> and it's up and running NOW :)
<ClassBot> alco asked: which is the most appropriate Python version for Ubuntu devel today? 2.7? 3.x?
<dholbach> alco, 3.x and 3.7 are both installed on a default system, with 2.7 still being used in lots of places, the future is 3.x though
<dholbach> alright, let's crack on :)
<dholbach> If you haven't set up an Launchpad account yet, go to https://launchpad.net/+login
<dholbach> Launchpadâs registration process will ask you to choose a display name. It is encouraged for you to use your real name here so that your Ubuntu developer colleagues will be able to get to know you better.
<dholbach> When you register a new account, Launchpad will send you an email with a link you need to open in your browser in order to verify your email address. If you donât receive it, check in your spam folder.
<dholbach> I doubt we have the time to go through all the steps now, but here's where you can upload your GPG and SSH keys once you have your account set up:
<dholbach> https://launchpad.net/~/+editpgpkeys
<dholbach> https://launchpad.net/~/+editsshkeys
<dholbach> (it's all rather self-explanatory and will just take a few minutes all in all)
<dholbach> Bazaar is the tool we use to store code changes in a logical way, to exchange proposed changes and merge them, even if development is done concurrently. It is used for the new Ubuntu Distributed Development method of working with Ubuntu packages.
<dholbach> To tell Bazaar who you are, simply run:
<dholbach>   bzr whoami "Bob Dobbs <subgenius@example.com>"
<dholbach>   bzr launchpad-login subgenius
<dholbach> whoami will tell Bazaar which name and email address it should use for your commit messages. With launchpad-login you set your Launchpad ID. This way code that you publish in Launchpad will be associated with you.
<dholbach> Note: If you can not remember the ID, go to https://launchpad.net/~ and see where it redirects you. The part after the â~â in the URL is your Launchpad ID.)
<ClassBot> vrubium asked: how can i guarante that an app for ubuntu is compatible wiht debian?
<dholbach> vrubium, if you have written the app already, you can set up a debian virtual machine and test it in there
<dholbach> if you plan to write it, it might make sense to check that all the libraries and modules you use are in Debian as well
<dholbach> Now let's go and configure our shell
<dholbach> Similar to Bazaar, the Debian/Ubuntu packaging tools need to learn about you as well. Simply open your ~/.bashrc in a text editor and add something like this to the bottom of it:
<dholbach> export DEBFULLNAME="Bob Dobbs"
<dholbach> export DEBEMAIL="subgenius@example.com"
<dholbach> Now save the file and either restart your terminal or run:
<dholbach>   source ~/.bashrc
<dholbach> (If you do not use the default shell, which is bash, please edit the configuration file for that shell accordingly.)
<dholbach> If all the steps above succeeded, you're done and you're up and running.
<dholbach> :-)
<dholbach> Any questions up until now?
<ClassBot> Kvrmurthy asked: in bzr whoam i @example means "@launchpad" or my email "@gmail"?
<dholbach> ClassBot, the email address you want to use for Ubuntu development
<ClassBot> jrzabott asked: Do you have a tutorial in somewhere in the web, to configure the softwares, the enviromente, launchpad bazaar and etc, and a tutorial, right?
<dholbach> yes, finally: links to docs!
<dholbach> there's one link you need: http://developer.ubuntu.com/packaging/
<dholbach> also if you want to stay on top of what's going on in the Ubuntu development world, follow:
<dholbach> http://twitter.com/ubuntudev http://identi.ca/ubuntudev http://facebook.com/ubuntudev http://gplus.to/ubuntudev
<dholbach> (one of them should be enough ;-))
<ClassBot> kanliot asked: is there a specific ubuntu wiki page for this lecture?
<dholbach> kanliot, the link above should get you all set
<ClassBot> Ceno asked: bazaar is version control , similar do git right? Imagining we already have a software project using git what would be the best approach? ditch git and use bazaar instead? put our project in github and treat it as an upstream project?
<ClassBot> There are 10 minutes remaining in the current session.
<dholbach> Ceno, yes, bazaar is a version control system like git and many others - one of the great advantages of it (and I'm talking here as a almost 100% user of Bazaar, so take it with a grain of salt): its ease of use and its tight integration with Launchpad
<dholbach> if you're happy with what you're using right now for your software development, keep on using it - there's no obligation to switch
<dholbach> but try it out and see for yourself - I never felt like I was missing anything :-)
<dholbach> In addition to the links above, I would like to mention #ubuntu-motu and ubuntu-motu@lists.ubuntu.com again
<dholbach> these are places where you can very easily find helpful and clever people and after a while: good friends
<dholbach> don't hesitate to ask your questions
<dholbach> Any more questions before I turn the mic over to mhall119? :)
<ClassBot> Atlantic777 asked: what about building .deb packages if we don't use debian-like distro? Should we just install an Ubuntu-dev into VM and make the package there?
<dholbach> Atlantic777, a virtual machine is probably the easiest approach, a chroot might work for mere package building too
<ClassBot> laza36 asked: ââHow can/is there some way/need that I test my SSH and gpg key that I just imported into launchpad?
<ClassBot> There are 5 minutes remaining in the current session.
<dholbach> laza36, ssh <launchpad id>@bazaar.launchpad.net
<ClassBot> Kvrmurthy asked: export DEBFULLNAME="Bob Dobbs"
<dholbach> Kvrmurthy, hum
<dholbach> it was part of the commands supposed to be added to the bottom of your ~/.bashrc file
<ClassBot> Ceno asked: this session has covered how to set up the environment. will there be a session explaining how to make a source package from our code and then send it to launchpad?
<dholbach> Ceno, yes, there'll be Ubuntu Distributed Development tomorrow at 19:00 UTC
<dholbach> there will also be many session about fixing bugs in Ubuntu this week, where it will also be used
<ClassBot> jincreator asked: If I submit bug, request merge, ... and no answers from everyone for long time, what can I do?
<dholbach> jincreator, join in #ubuntu-motu and ask
<ClassBot> Kvrmurthy asked: export DEBFULLNAME="Bob Dobbs" export DEBEMAIL="subgenius@example.com" is this part of installation in ubuntu?  or answer to somebody's question?
<dholbach> Kvrmurthy, ah yes - it's supposed to go at the bottom of your ~/.bashrc file
<dholbach> alright my friends
<dholbach> you all are awesome
<dholbach> thanks a lot for joining Ubuntu Developer Week
<dholbach> Bookmark http://developer.ubuntu.com/packaging/ - follow @ubuntudev - join #ubuntu-motu - let's help making Ubuntu better and the world a better place.
<dholbach> Next up is Michael "mhall119" Hall who will give you the "Ubuntu Technology overview".
<mhall119> hi everybody!
<mhall119> so this is going to be a short session, only 30 minutes
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu Technology overview - Instructors: mhall119
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<mhall119> Most of what I'll be talking about here will be covered in more detail in other sessions
<mhall119> so Ubuntu as a development platform provide a number of unique features that, as an application developer, you will probably want to work with
<mhall119> I'm sure you all know Unity, the default desktop shell since Ubuntu 11.04
<mhall119> but Unity is more than just a desktop, it's also a development platform that your apps can integrate with
<mhall119> The launcher will use normal .desktop files, but you can also add what are called "QuickLists", a set of options for your application that are made available through the Unity interface
<mhall119> your app doesn't even nee to be running
<mhall119> for example, Thunderbird has QuickList items for composing a new email, or opening the address book
<mhall119> in the Dash we have Lenses which let users quickly find content, both on their computer and off the internet
<mhall119> we ship a set of default lenses, but it's easy to add your own, or even provide an additional "scope" to feed content from your application into any of the existing lenses
<mhall119> there are currently over 50 lenses and scopes being developed for Unity
<mhall119> Like QuickLists, your lenses and scopes will be available to users even when your application isn't running
<mhall119> it's all integrated into the desktop
<mhall119> in the top panel of Unity we have application indicators
<mhall119> Indicators provide a more useful and user-friendly interface to application that are running, but may not have an active window
<mhall119> they also let us group similar functionality and information
<mhall119> for example, all your message notifications are available in the messaging indicator
<mhall119> and you can control your speaker volume and music playback from the sound indicator
<mhall119> all of these provide APIs that your application can use
<ClassBot> pawel_st asked: ââIf I'm not mistaken, the current lens architecture & API assume all lenses are daemons. This has implications when more and more lenses are added to the system. What was the rationale for this architecture? Is there an alternate approach?
<mhall119> so the rationale for keeping them separate is that we don't want a problem in one of them to crash everything else
<mhall119> right now if a lens or scope crashes, everything else keeps working, and Unity will reload the daemon process for that one lens and try it again
<mhall119> join #ubuntu-unity if you want to discuss more technical details about the implementation
<ClassBot> satanselbow asked: Is this section about developing for Ubuntu or Unity?
<mhall119> this session is giving an overview of Ubuntu's technologies (of which Unity is a big one), that you are likely to encounter during the rest of the week
<ClassBot> jincreator asked: Why indicator-applet need whitelist? It's really hard for people to add their applications at indicator.
<mhall119> we want to move everything to using application indicators, but some apps haven't yet upgraded and are still using the gnome systray icons
<mhall119> for those that need a systray icon, you can whitelist them so they are displayed in Unity
<mhall119> !q
<ClassBot> laza36 asked: ââWhat's an example for a scope that gets installed as a default?
<mhall119> the default lenses are for Applications, Files and Music
<mhall119> the Music lens will show both local music, and things available for purchase through the U1 music store
<mhall119> there are also scopes written by community members that will feed music options from services like Spotify into the Music lens
<mhall119> One of the main advantages of lenses is that they allow other people to write scopes to feed results into them
<ClassBot> Kvrmurthy asked: What are lens and scopes?
<mhall119> https://wiki.ubuntu.com/Unity/Lenses and https://wiki.ubuntu.com/Unity/Lenses/Guidelines give a pretty detailed description
<mhall119> but the short answer is that Lenses display content, and Scopes supply content
<mhall119> lenses will be discussed in much more detail at 1900
<mhall119> I encourage you to stick around for that
<mhall119> Many of you have probably seen the new HUD prototype
<mhall119> Since Unity is exporting application menus over DBus to display them in the top panel, that also means we can use that data for other interesting things
<mhall119> which is what the HUD does, allowing you to search for menu action without having to know where they are
<ClassBot> calmpitbull asked: just got in :) what is the best way to start programing my own lens, and where to start
<mhall119> calmpitbull: stick around for the 1900 UTC session and they will cover all of that
<mhall119> outside of Unity we also have the Ubuntu One cloud syncing service
<ClassBot> There are 10 minutes remaining in the current session.
<mhall119> Ubuntu One lets users sync files between multiple computers, but it also provide an API for application developers to use
<mhall119> for example, the Tomboy notes application uses Ubuntu One to sync it's note data
<mhall119> and there is a new API in the works for syncing key-value data, called the U1DB
<mhall119> there will be a session on Thursday covering both of those
<mhall119> then we have the Software Center and http://developer.ubuntu.com, which provide application developers an easier way of distributing their application on Ubuntu
<mhall119> there is even support for selling commercial applications through the Software Center
<mhall119> and we have a dedicated Application Review Board (ARB) that will help you with that process
<ClassBot> nava asked: we know unity is API for all (tablet,tv,phone) and also we know all mobile OS have a sdk , what about ubuntu ?
<mhall119> So this collection of technologies, together with the foundation of Ubuntu itself, will essentially be your SDK
<mhall119> we have tools such as Quickly that will get you started and automate a lot of the work around packaging
<mhall119> Ubuntu does not force you into specific programming languages or toolkits though, you can use whatever you're comfortable with as long as it's available on Ubuntu
<ClassBot> There are 5 minutes remaining in the current session.
<mhall119> and best of all, All of these APIs are going to be the same, whether it's Ubuntu on desktop, TV, tablet or phone, you don't need to learn different technology
<ClassBot> jrzabott asked: I used both synapse, like the unity menu... but i still have the feeling that synapse is more efective for the commom and home user... it have more speed, and it is lighter... If we put more daemons, lens, scopes and etc... i'm affraid it get worse... what do ya think?
<mhall119> I'm not familiar with synapse, so I don't really have an opinion
<ClassBot> rich3 asked: You mentioned Dbus.  what is dbus?
<mhall119> DBus is a low-level messaging system, it allow different processes to communicate with eachother, without being tied to eachother
<mhall119> For example, Scopes and Lenses get a DBus message from the Dash when you enter a search, and then they send DBus messages back to the Dash with their results
<ClassBot> pawel_st asked: ââis lens/scopes api stable/going to be stabilized with 12.04; will backwards compatibility be maintained from now, or is it still a moving target?
<mhall119> the lens API had to be changed between Oneiric (11.10) and Precise (12.04), because the original way of doing thing wasn't going to be efficient enough
<mhall119> but the new API should be all but set in stone
<mhall119> the changes to the API, by the way, were not very drastic
<mhall119> I was able to update my code in just a couple of hours
<ClassBot> nava asked: we have tv with unity 2d (Qt) ,is Qt main language for also mobile and tablet ? or sth. else
<mhall119> Both Qt and GTK are first-class toolkits in Ubuntu
<mhall119> The TV demo was done in Qt and Unity-2d, but that won't matter from the perspective of an application or lense developer
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: What's new in Edubuntu - Instructors: highvoltage
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<highvoltage> thanks mhall119!
<highvoltage> I'll be talking a little bit about Unity lenses as well
<highvoltage> Welcome everyone to the "What's new in Edubuntu" session!
<highvoltage> I'd like to give a really quick intro to what Edubuntu is
<highvoltage> since many people are unfamiliar with the project
<highvoltage> Firstly, there's the DVD that we produce every six months with some customizations and additional software that might be relevant in Education.
<highvoltage> It follows the Ubuntu release cycle and we're very committed to doing things the Ubuntu way
<highvoltage> One of our main goals is to produce a system that's easy to install and maintain in environments where people don't necessarily have lots of system administration skills available.
<highvoltage> my involvement in Edubuntu came about installing computer labs in South Africa a few years back
<highvoltage> we were using K12LTSP (a Fedora-based distribution) that had similar goals that Edubuntu has today
<highvoltage> seeing what a turn-key system could do in schools was amazing. If a teacher can install their own system and have it up and running within minutes, it makes a *huge* difference
<highvoltage> On the Edubuntu DVD we include LTSP (a thin client implementation for Linux), educational suites like gcompris, kde-edu, tux4kids and more.
<highvoltage> We also include some system administration tools that make managing a classroom or educational environment easier.
<highvoltage> Secondly, Edubuntu is also a project that's bigger than that. We aim to get software packaged into Ubuntu and also help maintain it.
<highvoltage> There are also other Ubuntu projects that work and help us out on this
<highvoltage> Most notably, the Kubuntu team who maintains the kde-edu suite and also the MOTU team who helps maintain educational software and games in Universe.
<highvoltage> It's also worth mentioning Debian- that's where most of our packages come from. Recently we've also been collaborating more and more with Debian-Edu, they are doing some really great work.
<highvoltage> The Edubuntu team is small, at any time we have around 2-8 contributors with varying involvement.
<highvoltage> Some people are only around for about a month a year, but we value their contribution while we have it. We value any contributions even if it's just once-off.
<highvoltage> So, I hope that gives you somewhat of an idea of the Edubuntu project
<highvoltage> so on to the topic of what's new?
<highvoltage> wubi - install Edubuntu from Windows
<highvoltage> this is a somewhat old Ubuntu feature that we're getting now
<highvoltage> we couldn't use it before since we used the text-based installer
<highvoltage> it basically allows you to install Edubuntu from an existing Windows system.
<highvoltage> since it's not that exciting I'll swiftly move on :)
<highvoltage> installer - sssd integration
<highvoltage> One of the biggest things we'd like to achieve in Edubuntu is make it as easy and as turn-key as possible in any environment.
<highvoltage> One of the ways we do this is by adding to the default installer so that users have some specific control and out of the box configuration for some things.
<highvoltage> In this release cycle, we're adding an installation step for SSSD. SSSD stands for Systems Security Services Daemon. What it allows you to do is integrate easily with an existing LDAP or Active Directory (AD) solution.
<highvoltage> This would make Edubuntu really easy to integrate into existing schools which already has centralized authentication.
<ClassBot> burli_ asked: ââwhich DE is used by Edubuntu?
<highvoltage> so the Desktop Environment
<highvoltage> we offer both Unity and Gnome Fallback (or sometimes called classic Gnome)
<highvoltage> Unity is great and has some features I'm going to discuss a little bit later
<highvoltage> we need Gnome Fallback for thin client setups since most of the other alternatives are very resource hungry on the network
<highvoltage> some older machines also don't work with Unity yet
<highvoltage> that actually brings me to my next point...
<highvoltage> unity lenses - something we want to do more of
<highvoltage> one of our goals for 12.04 is also to figure out how we can better use unity lenses
<highvoltage> I didn't realise I'd be following a session on it :)
<highvoltage> if you missed the previous session, check out this page:
<highvoltage> http://askubuntu.com/questions/38772/what-lenses-for-unity-are-available
<highvoltage> it gives a nice overview of what Unity lenses are and which ones are available.
<highvoltage> we want to get in touch with educators and find out what kind of functionality could be useful to them
<highvoltage> and then adapt it to unity lenses
<highvoltage> having quick and easy access to information and activities could work tremendously well
<highvoltage> we'll soon be doing a call for ideas for that on the edubuntu blog and try to reach out to educators via other means
<highvoltage> if you'd like to get involved and even want to help work on the lenses themselves, please get in touch!
<ClassBot> kbmonkey asked: Was there ever talk of merging Edubuntu and Skolelinux, the Debian Edu distro?
<highvoltage> Not specifically. There are some very similar goals between the projects though.
<highvoltage> Recently we've been collaborating more and more.
<highvoltage> Skolelinus does some really great work on the server. They already have centralized auth.
<highvoltage> In Edubuntu we abandoned the server part to focus more on the desktop
<highvoltage> Remember the authentication improvements I mentioned earlier?
<highvoltage> some of that also includes making Edubuntu easier to integrate in a debian-edu environment
<highvoltage> we're looking at more ways to collaborate, and the debian-edu people are amazing. but I don't think it's even technically possible for a merge
<highvoltage> so I doubt that would ever happen
<highvoltage> weblive - try edubuntu online
<highvoltage> we have a service called weblive, it allows you to try Edubuntu from within your browser:
<highvoltage> http://edubuntu.org/weblive
<highvoltage> recently it gained some new features
<highvoltage> instead of loading a full-blown session, you can also launch specific apps to demo it
<highvoltage> Edubuntu also has a great feature that other derivatives don't
<highvoltage> in Software Center, when you have an apps page loaded, you can click on "try it" and it will automatically spawn a weblive session for you with that app
<highvoltage> the weblive feature is really popular, we also have a user that uses it every single day since we launched it!
<highvoltage> epoptes - classroom administration
<highvoltage> epoptes is a new tool that helps you administrate a classroom.
<highvoltage> That is, see what's going on on a user's desktop, blank all the screens, broadcast what's happening on the teacher desktop, etc.
<highvoltage> it's really cool and I think it's an essential tool in any educational environment
<ClassBot> There are 10 minutes remaining in the current session.
<highvoltage> It's being integrated into Edubuntu 12.04. It's developed by alkisg,
<highvoltage> one of the Edubuntu developers and is also used actively in schools in Greece already.
<highvoltage> since I'm short on time I'll just post the link to it instead of babbling about it :)
<highvoltage> You can read more about it at http://www.epoptes.org/
<highvoltage> Edubuntu LTS
<highvoltage> Edubuntu 12.04 will be the first Edubuntu with official LTS status. It will be supported for 5 years
<highvoltage> We're also updating the LTSP installer and the ltsp live script to be more user friendly and support more languages
<highvoltage> language support is really great in Edubuntu. AFAIK we're the only derivative to ship all the language packs.
<highvoltage> On to the future
<highvoltage> I've covered quite a bit of our current work
<highvoltage> but I'd like to talk a bit about one of our goals past 12.04
<highvoltage> Edubuntu on ARM
<highvoltage> We want to have an ARM release for Edubuntu. Some people suggested the pandaboard - http://pandaboard.org/
<highvoltage> unfortunately it's not really a consumer device
<highvoltage> Personally, I'm more interested in targetting something like the Eee pad transformer: http://za.asus.com/Eee/
<highvoltage> It's a beautiful and powerful tablet machine that comes with a keyboard dock turning it into a fully fledged laptop. it also ads more battery power. It's a great educational device.
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> Saviq asked: have you thought about the raspberry pi? it's supposed to be very small and cheap
<highvoltage> the raspberry pi looks really nice
<highvoltage> but it can't really handle a fully fledged Ubuntu Desktop session
<highvoltage> officially Ubuntu won't even be supporting the raspberry pi (unfortunately)
<highvoltage> but it certainly has many possible educational uses
<highvoltage> The challenge with the Eee transformer is that they are all bootloader locked
<highvoltage> and very hard to unlock
<highvoltage> so we'd have to somehow convince the manufacturers that we'd like it to be possible for someone to install Edubuntu on it
<highvoltage> Since we're running out of time, I'd just like to remind everyone that we have Edubuntu meetings on the last Wednesday of every month in #ubuntu-meeting
<highvoltage> you can check the Ubuntu website if you're unsure of the dates
<ClassBot> burli asked: so you will bring Edubuntu to tablets?
<highvoltage> burli_: yes. that's certainly the future goal
<highvoltage> the work that's going into the Ubuntu touch framework and also Unity is gradually making it easier
<highvoltage> tablets are *huge* in schools and we don't quite want to miss that
<highvoltage> we'd also like to integrate what's happning on the tablet with Edubuntu Desktops
<highvoltage> we have no idea how yet, but it's a dream we'll persue :)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu TV - what's what - Instructors: mhall119, saviq
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<Saviq> hello all, mhall119, here?
<mhall119> yes
<mhall119> hello again everybody!
<mhall119> this session we're going to be talking about getting involved in the Ubuntu TV development
<mhall119> there's been a lot of interest and talk going around since our demo at CES earlier in the month
<mhall119> all of the code from the demo is available on Launchpad, but it's just that: a demo
<mhall119> the task now is converting it from demo code into real code, and you can be involved in that
<ClassBot> fantasti1001 asked: What's ubuntu TV ?
<Saviq> maybe I can chip in here for a second
<mhall119> sure
<Saviq> I prepared a FAQ from all the questions I could find in my history of #ubuntu-tv and ubuntu-tv@lists.launchpad.net
<Saviq> it's available on the Ubuntu wiki: https://wiki.ubuntu.com/UbuntuTV/Contributing#FAQ
<Saviq> and we're here to answer anything not covered in there and help you guys with getting involved
<Saviq> mhall119, back to you
<mhall119> you can also learn about Ubuntu TV here: http://www.ubuntu.com/tv
<mhall119> but the short answer is: It's the goal of making Ubuntu the best platform for TV manufacturers to use on the upcoming wave of Smart TVs
<mhall119> it has a modified Unity interface that is designed to work when you're sitting 10 feet away, using a remote control
<mhall119> but under the hood, it will be the same Ubuntu platform, with the same Unity APIs
<mhall119> which means everything make for the desktop will be available to you
<mhall119> it will also tie into moving streaming services and stores to let you rent or buy movies
<mhall119> and work with PVR hardware and software to let you watch and record broadcast and cable television
<ClassBot> fantasti1001 asked: How remote control works?
<Saviq> that's my cue
<Saviq> fantasti1001, we're not doing anything special for remotes
<Saviq> we're supporting all the standard media keys some keyboards have
<Saviq> but that also means you can easily use Bluetooth remotes
<Saviq> or IR ones like MCE, by just plugging them in right now
<Saviq> 'cause they generate standard key events now
<mhall119> as a platform, we should support as many viable options as the hardware manufacturers may want to ship
<Saviq> LIRC is the "old" or "advanced" way to handle remotes, and there's no plan to support that in Ubuntu TV right now
<mhall119> ultimately the choice of specific hardware will be up to the OEMs
<Saviq> but as mhall119 said - if that's what's going to be required - that's what we'll do
<ClassBot> burli asked: so it will be posible to install any software?
<Saviq> burli isn't here, but I'll answer anyway
<Saviq> burli, oh yes he's here, xchat's playing games on me
<Saviq> burli, that, again, depends on the way it's going to be deployed
<Saviq> in theory any software can be installed as it's going to be standard Ubuntu
<Saviq> but most GUI applications are not suitable for a 10-foot interface
<ClassBot> ashickur-noor asked: What is difference between Ubuntu TV and Ubuntu Desktop?
<Saviq> so it will only make sense to install those that are adapted to a TV interface
<Saviq> ashickur-noor, the demo we showed at CES was straight Ubuntu 11.10 with a variant of Unity-2D adapted for TV
<Saviq> ashickur-noor, but the target of Ubuntu TV is to be a platform, based on Ubuntu
<mhall119> ideally there will be no difference other than the UI
<Saviq> what will be the difference between a productized Ubuntu TV and Ubuntu Desktop, we'll have to wait and see
<ClassBot> kichkasch asked: ââwhat is the time line for development? When do you expect first devices ... ?
<Saviq> kichkasch, no such decisions have been made yet
<mhall119> so the purpose of the CES demo was to get hardware manufacturers interested
<mhall119> now we are working on partnering with them to build actual products
<mhall119> as with most business-to-business dealings, we won't really know until they're announced
<ClassBot> popey asked: What spec machine do I need to try out Ubuntu TV?
<Saviq> while developing we were using an Acer Revo
<Saviq> which is an Atom + ION box
<Saviq> but we were running happily on a Pandaboard, too
<Saviq> as ARM is a definite target, that's very important for us
<Saviq> hardware video acceleration is a must
<ClassBot> hszu00 asked: ââWill Ubuntu Tv use an onscreen keyboard or one that comes with the remote?
<mhall119> trying to get through as many of these questions as we can before our time isup
<Saviq> hszu00, with the UI we demo'ed search was a central feature
<Saviq> so hardware keyboard on the remote is desirable
<ClassBot> There are 10 minutes remaining in the current session.
<Saviq> but OSK is a possible alternative
<ClassBot> Cantide asked: So it would be possible to use your TV as a computer, essentially?
<mhall119> possible, but probably not desirable
<Saviq> Cantide, using a Ubuntu Desktop on your TV would not be easy
<Saviq> the target is to provide a proper TV, 10-foot experience
<mhall119> remember that even a large-screen TV isn't very big when viewed from across the room
<ClassBot> TwoD asked: I feel the Dash is awkward to use as is, having to switch back and forth between keyboard and mouse, how will that improve if I only have a TV remote?
<Saviq> TwoD, the whole Ubuntu TV is navigable with just 9 buttons
<Saviq> usual directional ones, ok, back and three edge ones
<Saviq> for quickly accessing the sidebar, top bar and launcher
<ClassBot> calmpitbull asked: What is minimun requirement for Ubuntu TV to run smoothly
<Saviq> calmpitbull, as replied earlier - any OpenGL-enabled GPU, preferably with hardware video acceleration
<Saviq> and something like an Atom CPU will be enough
<Saviq> on ARM a Pandaboard seems to cope quite nicely
<ClassBot> s9iper1 asked: can you tell me the merging process when the bug got fixed and than we have to merge the branches is there any guide in ubuntu    or anything?
<Saviq> s9iper1, it's the same as with unity-2d, add a merge request agains lp:ubuntutv
<ClassBot> There are 5 minutes remaining in the current session.
<mhall119> https://wiki.ubuntu.com/UbuntuTV/Contributing has information about how to make contributions of code
<ClassBot> pawel_st asked: âârather than a new release that adds new features every 6 months, like regular unity does. How does it match the development model of normal unity? Is unity for tv going to have a separate development model and provide stripped down version of unity?
<Saviq> pawel_st, that depends on the productized version, nothing I can say right now about that
<ClassBot> BlueCase asked: What's with DRM and HD content? Any discussion on that?
<Saviq> BlueCase, HD content with hardware acceleration is fine, DRM will have to be discussed with content providers that come on board
<ClassBot> sankaranarayanan asked: So are you guys considering support for gesture based control too, for the TV?
<Saviq> sankaranarayanan, there's definitely room for thought there, again - depends on what we will actually be delivering
<ClassBot> pawel_st asked: ââsince smart TVs are network-capable, are you going to automatically install security updates on TVs (with all the associated risks)?
<Saviq> pawel_st, that is a possibility, but will have to be carefully thought out
<Saviq> and will depend on the requirements we need to fill
<ClassBot> sirvinniei asked: How much customabily is possible with ubuntu tv?
<Saviq> sirvinniei, it's open source, that's all the answer I can give you now
<Saviq> wow it looks like half an hour is a very short period of time
<mhall119> it sure is
<Saviq> thanks you all for attending
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%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 || Event: Ubuntu Developer Week - Current Session: Testability and Qt - Intro to automated UX testing for Qt apps - Instructors: greyback
<greyback> Hey all, I'm Gerry Boland, team lead of the Unity 2D project.
<greyback> For something like UbuntuTV to be a success, we need Unity2D to be rock solid!
<greyback> So I'm here to give a short 30 minute session about something almost as exciting: automated testing for Qt apps (and Unity2D)! :D
<greyback> Feel free to ask questions at any time, check the topic for instructions on how to do so.
<greyback> In Unity 2D, we have just introduced an automated User Experience test system, based on a test framework called "Testability Driver" (I'll just call it 'Testability' from now on).
<greyback> With this system, for every bux-fix and new feature, we:
<greyback> 1) automatically verify that all existing tests pass, so nothing is broken and
<greyback> 2) require that new tests are added to prevent regressions, thus in time developing a comprehensive test suite!
<greyback> I want to go into more detail about "Testability" and how everyone can use it.
<greyback> = What does Testability do? =
<greyback> Testability is for Qt-based applications (and Unity 2D is written in Qt, yay!).
<greyback> Its core feature is that it allows inspection of the tree of QObjects in a Qt application while it is running.
<greyback> It can read and write object properties, call methods and slots, verify signals are emitted, as well as faking mouse/keyboard/gesture inputs, grabbing visual outputs, and measure performance.
<greyback> And best of all, Testability is open source and maintained by Nokia!
<greyback> That means everyone can run and contribute tests! :)
<ClassBot> burli asked: is this built in Qt and language independend?
<greyback> burli: yes, it's build into Qt, from version 4.6 I think
<greyback> It works with C++ and QML. If it uses Qt bindings then it will work too
<greyback> To show it off, here is a screengrab of the Testability Visualizer application which allows you to connect to a running application, dig into the QObject tree and investigate what's going on (here, the Unity 2D Launcher):
<greyback> http://i.imgur.com/psi7m.png
<greyback> On the left is an interactive snapshot of the UI, in the centre is the QObject tree which you can navigate, and on the right is the list of the selected QObject's properties, methods and signals you can interact with.
<greyback> On display in that screengrab are some of the attributes of the QDeclarativeImage object which draws the Terminal icon in the launcher (this is defined in QML!) - you can read off the source of the image, the x,y coordinates, width & height, and a whole lot more.
<greyback> All these properties, methods, signals, etc, are scriptable via Ruby. (I'll give a uber-simple example in a minute)
<greyback> Thus we can emulate every interaction that a user can make with the application, and determine the reaction.
<greyback> And all this power comes with almost no changes* to the source code!
<greyback> (* = just need to add object names, see later)
<greyback> This forms the foundation for the Unity 2D User Experience testing suite.
<greyback> = How Testability works =
<ClassBot> TwoD asked: Does Testability include tests for asserting the number of keystrokes/clicks required for completing user task "X" remains sane?
<greyback> TwoD: you write a test, by providing every click and keystroke, and check the behaviour matches what you expect.
<greyback> TwoD: you control the number of clicks
<greyback> Testability works as follows (have a look at this image too, it might help http://tinyurl.com/7dj5jdw):
<greyback> - *any* Qt application using Qt4.6+ can be tested by executing it with the "-testability" switch.
<greyback> - a standalone server "qttasserver" runs in the background.
<greyback> - With the -testability switch, the Qt library tries to load a "libtestability.so" plugin which establishes a connection between the application and qttasserver, giving qttasserver access to the root node of the QObject tree.
<greyback> - qttasserver then climbs the QObject tree, reads all the info it can and converts it to an XML format. It also can receive commands and cause the application to react upon them (click here, type, etc..).
<greyback> - A series of Ruby scripts connect to qttasserver, receive and parse this XML and allow us to script tests and interactions with the application.
<greyback> Then we use Ruby's test runner systems (Test::Unit or Cucumber) to write and run tests
<greyback> [The Unity 2D test framework also includes an extra helper library to control the X server, to control the mouse and keyboard, and to manipulate windows on the desktop. As far as X is concerned, a human is controlling it.]
<greyback> With the ability to fake any form of user input, and directly read the output from the shell applications themselves, we can test almost every behaviour of the application. And as a result, the quality of the experience will only go up!
<ClassBot> calmpitbull asked: What is the best way to get started with programing unity 2d, lenses and scopes
<greyback> calmpitbull: there's a session on Unity and lenses shortly. Lenses are compatible with both Unity and Unity2D
<greyback> calmpitbull: if youdd like to contribute to Unity 2D, please ping me after this presentation. We'd be delighted to have you!
<ClassBot> ashickur-noor asked: What is the best language to put on the Back-end of QT
<greyback> ashickur-noor: (you've gone?) Well I'm a fan of C++ and QML. QML makes UI design and creation really easy
<ClassBot> pawel_st asked: ââTestability seems to be well suited for scenarios where object attributes can be tested... Is there any way you can test if drawing errors etc. occur?
<greyback> pawel_st: Testabiity has access to the QPainter, so whatever Qt thinks is being drawn to screen, Testability can grab. It can then perform visual comparison on images, to check for errors
<greyback> = How to get & use Testability =
<greyback> Unfortunately Testability is not available in Ubuntu's repos just yet, but I have it packaged in a PPA.
<greyback> Installation takes a few steps, so I suggest that interested people consult this wiki page: https://wiki.ubuntu.com/Unity2DTestability
<greyback> Tests are just Ruby scripts, so running tests is just a matter of running a Ruby script!
<greyback> I think it easiest to show how to use Testability with an example ruby script: http://pastebin.com/AWWYYPN8
<ClassBot> There are 10 minutes remaining in the current session.
<greyback> That test checks
<greyback> 1. the Launcher is 65 pixels wide
<greyback> 2. that the Terminal tile has the correct icon
<greyback> There is some boiler-plate code there, but the bits I want to point out are:
<greyback> @app.LauncherView()['width']
<greyback> This causes Testability to search for an object of type "LauncherView()" in the QObject tree, and if found reads its "width" property and returns it (throws exception if not).
<greyback> Then in Ruby, we can check this value matches what we expect (65).
<greyback> The second test does a similar operation, but needs a little more help.
<greyback> As there are many tiles, we need to help Testability to find the exact tile we want. We do this by adding some object names ("main", "Terminal",..) to the C++/QML.
<greyback> By consulting with http://i.imgur.com/psi7m.png, maybe you can see how Testability navigates the tree to find the icon source for the Terminal tile!
<greyback> Once you can track down objects uniquely, you can then start interacting with them, send mouse clicks, set properties, call methods, etc.
<greyback> This power gives you great flexibility in testing your application!
<greyback> = Demo & conclusion =
<greyback> As a demo, here is a video of a part of the Unity 2D test suite in action. On the right is Ubuntu Oneiric running inside VirtualBox, where the Launcher will be tested. On the left is my host machine terminal running the test suite.
<greyback> https://wiki.ubuntu.com/Unity2DTestability?action=AttachFile&do=get&target=testability.ogv
<greyback> Various hide/show tests are being performed, with windows in the way, mouse being controlled, keyboard shortcuts being pressed etc.
<greyback> There's something very strange about watching a desktop doing things when nobody is controlling it!! :)
<ClassBot> Atlantic777 asked: any documentation on how to write good test cases?
<greyback> Atlantic777: there is some at Nokia's website on Testability(https://projects.developer.nokia.com/Testabilitydriver/wiki), and I plan to write my own shortly.
<ClassBot> Saviq asked: there seems to be a split between the application and the tester, can this work across the network?
<greyback> Saviq: yes. In that video above, all the communication between the application and the test machine is via TCP/IP
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> Ceno asked: I see there's no support for 10.04 in the PPA.  Can this be arranged, or since the default 10.04 qt version is bellow 4.6 it doesn't even matter?
<greyback> Ceno: it's my PPA, so if you need it, I can try. Version less than 4.6 can be tested too, they need a few extra lines of code in the application only.
<ClassBot> bjhaid asked: can you please post link to sample test
<greyback> bjhaid: http://pastebin.com/AWWYYPN8 for super-simple test
<greyback> bjhaid: otherwise, check http://bazaar.launchpad.net/~unity-2d-team/unity-2d/trunk/files/head:/tests/
<greyback> Our policy is that every new feature and bug fix in Unity 2D will have a test attached, to ensure no regressions.
<greyback> This will ensure Unity 2D remains reliable, consistent and fast. Thanks to Testability!
<greyback> Thanks for your attention everybody!
<greyback> I've a minute for questions
<ClassBot> pawel_st asked: ââCan it run headless, e.g. for automated integration testing?
<greyback> pawel_st: yes. It should run in Xvfb
<ClassBot> bjhaid asked: any gem required to run the test or it runs on standard ruby modules?
<greyback> bjhaid: just "gem require" is needed for some reason I'm unsure of
<greyback> Ok I'm done. Thanks 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 Developer Week - Current Session: Unity Lenses! - Instructors: davidcalle, mhr3
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<davidcalle> Hello everyone, I'm David CallÃ©
<mhr3> Hi there, i'm Michal Hruby
<davidcalle> We are going to introduce you to Unity lenses, how they work, what they do.
<davidcalle> And... most importantly, how to make them.
<mhr3> so let's get to it
<davidcalle> A lens is basically a plugin for the Dash. To display data to the user.
<davidcalle> And scopes are search engines for the lens, to bring the data.
<ClassBot> calmpitbull asked: What is the best way to get started with programing unity lenses and scopes
<mhr3> calmpitbull, you're just about to learn that :)
<davidcalle> A lens is mostly an architecture
<davidcalle> Categories and filters, used to guide the user through the data
<ClassBot> pawel_st asked: ââI've asked this on one of the previous session, but maybe you can give a more detailed answer here... Why did you choose to have daemons for all lenses? Seems to lead to more and more resources usage as new lenses are added? Why not spawn lenses on demand, or do something similar to be more resource-friendly?
<mhr3> pawel_st, the reason is to be able to easily add and remove lenses
<mhr3> pawel_st, this way one can easily replace the default apps lens with something they like
<mhr3> or any other of course
<mhr3> and the default daemons are very light, so it shouldn't be an issue atm
<ClassBot> gaberlunzie asked: ââare there any obstacles to lens displaying online data? My askubuntu lens turns up empty except for the "Ask a question" action ...
<davidcalle> There shouldn't be any obstacles. It just uses http calls.
<mhr3> gaberlunzie, perhaps a bug in the lens :)
<mhr3> feel free to file it
<ClassBot> pawel_st asked: ââThere is a nice initiative for simplifying lens/scopes development - Singlet project. Are there plans to make it available by default in Ubuntu? Or anything similar?
<mhr3> ok, so let's continue with the session
<davidcalle> Singlet is currently being turned into a Quickly template
<mhr3> once we have a lens that displays data in particular categories and provides filters, we implement scope(s) which provide data
<mhr3> a couple of guidelines about when to implement lenses vs scopes can be found at https://wiki.ubuntu.com/Unity/Lenses/Guidelines
<mhr3> but let's make this more fun and actually look at a sample lens and scope
<mhr3> the unity-lens-sample project on Launchpad has a couple of these available (https://code.launchpad.net/unity-lens-sample/)
<mhr3> so I suppose everyone likes python, so let's take a look at that one
<mhr3> if you want to get it, run `bzr branch lp:~unity-team/unity-lens-sample/python-5.0`
<mhr3> the 5.0 indicates that this lens is for libunity-5.0 (which is in precise)
<mhr3> if you're on oneiric and dont have unity ppas enabled, 4.0 is for you
<mhr3> so, http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-lens-sample is the lens code
<mhr3> and david as the author will explain details :)
<davidcalle> As you can see, the lens code is quite small.
<ClassBot> fantasti1001 asked: what programming language do i need to know to make lenses?
<davidcalle> The first important thing is to declare your lens:
<davidcalle> BUS_NAME = "net.launchpad.lens.sample"
<mhr3> fantasti1001, you can pick python / c / vala (or javascript experimentally)
<davidcalle> The name is rather arbitrary, but it illustrates the purpose of the lens
<davidcalle> fantasti1001, Python, C, Vala, and even Javascript now (which is rather experimental)
<davidcalle> Then, we define a few constants for the lens:
<ClassBot> AlanBell asked: will there be an "accounts" dialog or something for lenses that require authentication credentials to be entered (a bit like Empathy or Gwibber has)
<davidcalle> It's dbus path : self._lens = Unity.Lens.new ("/net/launchpad/lens/sample", "sample")
<davidcalle> We also want to define the search hint (the text in the empty search bar)
<davidcalle> self._lens.props.search_hint = "Search"
<mhr3> AlanBell, that's up to the individual apps right now, ideally they'd integrate with the system's "online account"
<davidcalle> We can also choose to have the lens icon visible in the search bar. If not, it will still be available via its shortcut.
<davidcalle> self._lens.props.visible = True;
<davidcalle> Then, one of the most important thing is to have the lens visible in the Home Dash.
<davidcalle> Or not.
<davidcalle> 		self._lens.props.search_in_global = True;
<davidcalle> If you are looking at the code right now (http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-lens-sample)
<davidcalle> You can see, that we also define the categories, which have a name, an icon, and a renderer.
<davidcalle> The renderer is the way the Dash will display the results.
<mhr3> you can see all the properties here http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.Lens
<davidcalle> Two renderers are currently available : the "vertical" and the "horizontal", they both display an icon, and a text for each result. But the horizontal can also dsiaply a second text called the comment.
<davidcalle> Here, I've defined two categories, using a different renderer.
<davidcalle> The filters are next on our list of things to define. You can find a list in the code.
<davidcalle> http://imagebin.org/index.php?mode=image&id=196573
<mhr3> there you can see the various renderers in action ^^
<davidcalle> Here is a screenshot of our sample lens, using the two renderers (the second one is hidden at the bottom)
<davidcalle> Now that we have a lens. We need a scope to provide the data.
<mhr3> right, but before that, please notice some of the system necessities for getting lens running
<mhr3> at the bottom of the lens sample you can see requesting DBus name
<mhr3> you need to do this, so unity can talk to the lens
<mhr3> and the name need to be equal to what you .lens file says
<mhr3> more details on that can be found at https://wiki.ubuntu.com/Unity/Lenses
<mhr3> or https://wiki.ubuntu.com/mhr3/Lenses (for the latest 5.0 version)
<mhr3> and now, let's take a look at the scope
<mhr3> so here we have it > http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia
<mhr3> this is an example of remote scope, that doesn't live directly inside the lens, but is an external process
<mhr3> you can create scope for any existing lens by just adding your .scope file into the lens directory
<mhr3> more on that again at the wiki mentioned earlier
<mhr3> but let's look at the code
<mhr3> commonality is again the requesting of dbus name, which is necessary for remote scopes
<mhr3> but doesn't need to be there for internal lens scopes
<mhr3> and then you just create a Scope instance ->
<mhr3> self.scope = Unity.Scope.new ("/net/launchpad/scope/information/wikipedia")
<mhr3> you specify a few properties again
<mhr3> like the search-in-global etc
<mhr3> (full list http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.Scope)
<mhr3> and most importantly you connect to the search-changed signal
<mhr3> self.scope.connect ("search-changed", self.on_search_changed)
<mhr3> this mean that everytime the user changes the search string this method will be invoked
<mhr3> and it's where you should do the actual search
<mhr3> the signal has a couple of parameters:
<mhr3> def on_search_changed (self, scope, search, search_type, cancellable):
<mhr3> important is the search, which is a LensSearch instance
<mhr3> http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.LensSearch
<mhr3> and this holds the data about the search
<mhr3> like the actual search_string
<mhr3> the scopes have a two results models which you need to update during the search
<mhr3> the correct results model is always stored in search.results_model
<mhr3> as you can see in http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia#L33
<ClassBot> pawel_st asked: ââIs caching results of lens search possible via the framework, or is this something one needs to implement for his lens?
<mhr3> depends what you want to do
<mhr3> results from previous search are always available in the model
<mhr3> that's why you see model.clear() call here http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia#L35
<mhr3> so it's up to you how are you going to use that
<mhr3> so once we get results for the query the user wants, we append those to the model
<mhr3> as you can see in http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia#L81
<mhr3> the models we are talking about are part of the Dee library (see it's reference @ http://developer.ubuntu.com/api/ubuntu-12.04/python/Dee-1.0.html )
<mhr3> and there's a specific data the model expects
<mhr3> for results it's uri, icon, category id, mimetype, display name, comment and dnd_uri
<mhr3> so you add results to the model and once you're done, you just call search.finished() on the LensSearch instance
<mhr3> the user can then click on any of results
<mhr3> and if you picked some standard uri (like http://...) unity can just launch it in the browser for example
<mhr3> but if your lens is doing something special
<mhr3> you can use your own uris, and if you connect to the activate_uri signal of the scope you'll be notified when the user activated them, so you can do whatever you want
<mhr3> and that's the basics
<mhr3> questions?
<ClassBot> kanliot asked: do lenses require unity and ubuntu?
<davidcalle> They do.
<davidcalle> Not Ubuntu, but at least Unity.
<mhr3> well unity is what controls them
<mhr3> you could implement your own ui
<mhr3> but there's nothing in existence that would do that
<mhr3> not that i know of anyway :)
<davidcalle> If you want to look at various code examples
<davidcalle> https://code.launchpad.net/onehundredscopes
<davidcalle> It's a lot of scopes and lenses branches, doing very different things, from talking to web API, to looking into user folders.
<mhr3> if you're wondering about the changes that were made in latest Unity-5.0 (and therefore really advanced stuff) feel free to look at http://www.grillbar.org/wordpress/?p=585
<ClassBot> Ceno asked: is there any difference in performance between the various languages we can program lens/scopes in?
<ClassBot> There are 10 minutes remaining in the current session.
<mhr3> Ceno, good question
<mhr3> we dont really have any scientific data to suggest one way or the other
<mhr3> of course theoretically languages that don't need garbage collector and such things ought to be faster :)
<mhr3> but mostly the slowest part of lens is talking to a webservice which is slow anyway :)
<mhr3> if they are talking to a webservice of course :)
<ClassBot> mfisch asked: is there a recommended IRC channel where lens-writers can discuss things?
<davidcalle> #ubuntu-unity is the place for that
<mhr3> mfisch, ^^ thats the place
<ClassBot> Ceno asked: I might have missed something, and if I did I apologize, but how do you go from these 2 pieces of code, one for lens one for scope, to actually testing the thing live in Unity?
<mhr3> there's a README file in the directory ;)
<mhr3> basically you copy the .lens and .scope files to specific directories and restart unity
<mhr3> http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/README
<davidcalle> A lens daemon comes with a .lens files, the scope daemon with a .scope file. Their content is pretty much self explicit.
<davidcalle> s/files/file
<ClassBot> There are 5 minutes remaining in the current session.
<davidcalle> They both need to go in /usr/share/unity/lenses/<lens name>
<davidcalle> The daemons can be anywhere.
<davidcalle> An important thing :
<davidcalle> To start a new lens. You need to restart unity (unity --restart or setsid unity)
<davidcalle> Just once, to make it learn about the new lens.
<ClassBot> mhall119 asked: once I have a lens or scope, how do I get it into Software Center?
<davidcalle> But for the scopes, you just need to restart the lens daemon.
<mhr3> i'm afraid we won't cover software center in this session
<ClassBot> jincreator asked: Is it possible to extract and use lens at user's home directory, not /usr/share/... ?
<davidcalle> mhall119, you package your lens, then submit the package to https://myapps.developer.ubuntu.com
<mhr3> jincreator, unfortunately not, unity only checks /usr/share/unity/lenses directory
<mhr3> Ok, seems like we're out of time, thanks everyone for attending!
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: QA: Automated Testing and Jenkins - Instructors: hggdh
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<davidcalle> Thank you! And come see us if you have any questions
<hggdh> hello. My name is Carlos de-Avillez, and I am a member of the Ubuntu QA team. You can reach me either on IRC (nick: hggdh) or via email to hggdh2@ubuntu.com.
<hggdh> Since beginning of 2010 we have been working on test automation. This meant we had to create our own lab, and prepare it for all we need.
<hggdh> this is, still a Work In Progress ;-)
<hggdh> today I will talk about our usage of Jenkins
<hggdh> http://jenkins-ci.org/
<hggdh> we implemented (er, *are* implementing) Jenkins on two places: an internal one, where the tests are actually executed (in our lab),
<hggdh> and an external one, where results of the tests are visible for all
<hggdh> the internal Jenkins is access-controlled, and out of scope right now
<hggdh> the external one can be reached at https://jenkins.qa.ubuntu.com/
<hggdh> this is, pretty much, what we see internally, but read-only.
<hggdh> We are adding tests as we go, and all Ubuntu development teams are collaborating in making the tests more (and more) inclusive
<hggdh> Jenkins can be seen as a scheduler (it is not only a scheduler, but simpler to get acquainted to)
<hggdh> if you look at the public instance, you will see it has a not-so-big-yet-but-growing list of tabs
<hggdh> in each tab you will see the tests -- in Jenkins parlance, the *jobs* that we currently publish
<hggdh> the very first tab -- "all" -- shows ALL the tests; each other tab gives us a view restricted to an area of interest
<hggdh> so, for example, https://jenkins.qa.ubuntu.com/view/Precise/ shows all tests currently being run for the Precise Pangolin Ubuntu version
<hggdh> (BTW, we will be relying on https://wiki.ubuntu.com/QATeam/AutomatedTesting, https://wiki.ubuntu.com/QATeam/AutomatedTesting/UnderstandingJenkins,
<hggdh> and https://wiki.ubuntu.com/QATeam/AutomatedTesting/UnderstandingJenkinsResults for this talk)
<hggdh> each Jenkins job can have one of four possible final states:
<hggdh> 1 - successful -- represented by a green ball
<hggdh> 2. failed -- represented by a red ball
<hggdh> 3. unstable -- represented by an yellow ball
<hggdh> 4. not-yet-run (or no record surviving in Jenkins) -- represented by a gray ball
<hggdh> apologies for those of you that are -- as I am -- colour-confused
<hggdh> tests are written in a mix of code (usually Python, or shell scripts) and Jenkins setup
<hggdh> Pretty much all the code we use for the tests can be found at https://launchpad.net/ubuntu-server-iso-testing
<hggdh> this is a bazaar branch; commit access to it is, as usual, restricted to members of the Ubuntu Server Iso Testing Developers, a team on Launchpad
<hggdh> https://launchpad.net/~ubuntu-server-iso-testing-dev
<hggdh> please do contribute. You can tweak the current code, and propose changes, via a bazaar merge request
<hggdh> anyway
<hggdh> if we look at the precise-desktop-amd64_default job (https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/)
<hggdh> we will see that it failed
<hggdh> on the Build History (at the left) we can see the last runs, about 30 of them; we can also see that the last two runs failed
<hggdh> run 223 was successful, and 222 was... unstable
<hggdh> if we click on the last run -- 225, url https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/
<hggdh> we will be able to see some more links to data. The most important, usually, is the rawe console output (link at the left). This will give us all output to stdout that was generated by the tests
<hggdh> this does not mean *all* output of the job, just what was sent to stdout
<hggdh> looking at it, we see that the first 130K of data was not shown, and the rest seems to be a system running and just -- pretty much -- renewing IP address via DHCP
<hggdh> looking at near the end, we see this message:
<hggdh> DEBUG:root:Test e40d4cb6-bc3d-4c6d-b618-a30826e5c26e failed to execute within 120 minutes
<hggdh> so... the test fails
<hggdh> (going back to run 225 summary)
<hggdh> at the middle of this screen -- again, I am at https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/
<hggdh> we see a "Build artifacts" link and, under it, a series of other links.
<hggdh> what we are usually interested in is *not* these other links, but what is under the "Build artifacts"
<hggdh> so, drilling down on it (https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/artifact/)
<hggdh> we see a 225/test-results link, and some others. It is the test-results we usually want...
<hggdh> under it we only see a d-i-syslog.log.gz file (er, link). This sort of tells us that the test indeed failed ;-)
<hggdh> (an example of a successful run is at https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/223/artifact/223/test-results/ )\
<ClassBot> diwic asked: You asked for contributions, but assume I've made a change to the branch, how do I go ahead and test it locally before proposing it to be merged? Do I have to set up a local jenkins instance...etc?
<hggdh> hum
<hggdh> yes, you *might*. It would be better to, I mean. We are considering how to set up a test Jenkins, where code changes can be tested without needing the whole shebang
<ClassBot> gang65 asked: How I could look at current job configuration? - I would like to see which scripts it is using...
<hggdh> (sorry for the delay, was battling a login)
<hggdh> yes, this is a good question. There is no way, right now, just tested it. You have to have access to the internal Jenkins to see the configuration. We will work on that
<hggdh> sorry
<hggdh> so, back to looking at errors
<hggdh> the only way to find out what happened on run 225...
<hggdh> go back to build 225 summary page (https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/ )
<hggdh> and look at the 'default' link on the middle of the page, at the 'run_test' on the same page, and at the syslog output
<hggdh> the 'default' shows you the actual test code that is (would) be executed
<hggdh> the 'run_test' is the driver
<hggdh> and the syslog is all that was sent to stdout.
<hggdh> we know the test did not even execute, in this case
<hggdh> so I would start with the syslog, looking for "abnormal" messages
<hggdh> and in the syslog, around line 978, we see a python stacktrace
<hggdh> it may be part of the problem. We would need to review all syslog, and talk with the developers to really find out
<hggdh> an example of a *unstable* execution is in precise-server-i386_dns-server
<hggdh> https://jenkins.qa.ubuntu.com/view/Precise/job/precise-server-i386_dns-server/76
<hggdh> drilling down on the build artifacts, we see an interesting link:
<hggdh> (actually two)
<hggdh> https://jenkins.qa.ubuntu.com/view/Precise/job/precise-server-i386_dns-server/76/artifact/76/test-results/TEST-dns-server.xml
<hggdh> and
<hggdh> https://jenkins.qa.ubuntu.com/view/Precise/job/precise-server-i386_dns-server/76/artifact/76/test-results/dns-server.stderr
<hggdh> the first one, the XML file, is the results Jenkins looks for to determine final status
<ClassBot> There are 10 minutes remaining in the current session.
<hggdh> looking at it, we find that the tests *did* run, but failed
<hggdh> for example, <testcase classname="test.DnsServerTest" name="testResolveTcp" time="0.000">
<hggdh> <skip>Unable to perform external DNS resolution from the QA Lab&#xA;</skip>
<hggdh> </testcase>
<hggdh> looking at the stderr one, we see that a 'netstat -ltnp' showed *NO* DNS server running
<hggdh> ergo, DNS failed
<hggdh> so we would need to look at the full syslog to try to find the error
<hggdh> (I happen to know, it was a package install failure, already corrected)
<hggdh> you can also subscribe to the mailing list that announces Jenkins job results
<hggdh> https://lists.ubuntu.com/mailman/listinfo/ubuntu-testing-notifications
<hggdh> you should receive an email of all Jenkins runs that caused a change of status *from* successful, and all failed runs
<hggdh> this usually runs to about 30 emails per day; a really bad day may have around 100 of them
<ClassBot> There are 5 minutes remaining in the current session.
<hggdh> If you subscribe, I suggest filtering to what you want to know only (either procmail, or local email client filtering)
<hggdh> but we are already out of time...
<hggdh> so. Please go to #ubuntu-testing for any questions you may have, or email ubuntu-qa@lists.ubuntu.com. we all hang the the #ubuntu-testing channel, and we all subscribe to the ubuntu-qa ML
<hggdh> thank you,
<ClassBot> diwic asked: This all seems quite complex (inspecting log files etc). What are the advantages of Jenkins compared to other testing frameworks?
<hggdh> jenkins allows us to set up different environments, from bare-metal to EC2 and KVMs, and gives us a consolidated view of all tests
<hggdh> also, firing off tests can be automated -- checking a bzr branch and firing off on new code, firing off on availability of a new ISO, etc
<hggdh> thank you all again
<hggdh> ..
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Packaging Do's and Don'ts - Instructors: Spamaps
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<SpamapS> Hello! And welcome aspiring, current, and potential packagers!
<SpamapS> The reason for this quick presentation is to disseminate some important Packaging Do's and Don'ts when working in Ubuntu, and when working things back upstream into Debian.
<SpamapS> Some of these are just my opinion, or are the general way that things are done in Ubuntu, and may not be compatible with the policies in every package in Debian and/or Ubuntu, so please as always be courteous when carrying this message forward.
<SpamapS> Also, some required reading, if you want to package software for Debian and/or Ubuntu:
<SpamapS> http://wiki.debian.org/IntroDebianPackaging
<SpamapS> There's also amazing information in here about ways to iterate and develop on packages in a clean and repeatable way:
<SpamapS> http://wiki.debian.org/mk-sbuild
<SpamapS> What not to do:
<SpamapS> * Panic!
<SpamapS> * Use CDBS for new things
<SpamapS> * Use dpatch (or any other patch system other than quilt)
<SpamapS> * Use svn for new things (bzr, git, hg, but please not svn)
<SpamapS> * Create complicated rules files
<SpamapS> CDBS is an old way of doing packages where you include hyper-genericised Makefile rules and then feed in variables to affect the behavior. You are much better off using debhelper.
<SpamapS> You'll find if you use 'dh_make' to create a new package, whatever it uses is a safe and suggested practice.
<SpamapS> dpatch has been deprecated for quilt. quilt is a patch maintenance system meant to help keep patches to upstream source code separate so they can be managed more easily.
<SpamapS> There is some work being done on bzr to add the 'looms' feature so quitl wouldn't be necessary, but I don't know how far along that is.
<SpamapS> I don't like svn, because if the server is down or you are not on the internet, you cannot do multiple changes, they end up stacking up as one giant diff.
<SpamapS> Just recently somebody suggested that bzr-svn or git-svn can be used to talk to svn for push/pull but have a local git/bzr tree, so that may work if you must use SVN for package maintenance.
<SpamapS> Now, WHAT TO DO:
<SpamapS> * As little as possible
<SpamapS> * use dh_make
<SpamapS> * use quilt
<SpamapS> * use VCS for packaging
<SpamapS> * use UDD for Ubuntu specific packaging
<SpamapS> What I mean by as little as possible, is that packaging shouldn't be about forcing your will on users, but rather on bringing upstream's software to users while remaining compliant with policy.
<SpamapS> Sometimes that means patching and moving things around and having default configs, and all of that is good, but the best package gets smaller as upstream gets feedback from packagers.
<SpamapS> skipping a bit.. about VCS ..
<SpamapS> There are multiple ways to use VCS to maintain packaging.
<SpamapS> in Ubuntu, all packages are (or at least should) be available via bzr by doing 'bzr branch ubuntu:packagename'
<SpamapS> Many Debian teams prefer to keep just the debian/ directory in a VCS, be it git or svn or bzr. Check with the maintainer of the package to find out how it is maintained.
<SpamapS> For UDD, the source and debian/ dir are kept together.
<ClassBot> dnewkirk asked: How ought we label the version of a package? I know that it is partly based on the version of the package itself, as well as perhaps including the .git info if other patches are needed. Is there a defined practice for this? I've looked at the wiki, but did not see a general policy for this.
<SpamapS> Package versions are made up of an upstream version, and a debian revision
<SpamapS> The upstream version is generally up to the upstream, and you should try to keep that as consistent with them as possible. Everything after the last - in the version of the package is the Debian revision.
<SpamapS> For Debian, it is just a montonically increasing counter.
<SpamapS> For Ubuntu, we add 'ubuntu#' to note that our version has superseded the debian version
<SpamapS> so if you are packaging foo version 1.2.3 for Debian, its   1.2.3-1  .. but if you are skipping Debian and adding it right into Ubuntu, it is 1.2.3-0ubuntu1
<SpamapS> a debian revision can include many many changes, as long as they are all spelled out in debian/changelog
<ClassBot> Ceno asked: What do VCS and UDD stand for?
<SpamapS> Version Control System
<SpamapS> Ubuntu Distributed Development
<SpamapS> I should have included a link to UDD .. if somebody can fish it out in chat, I'll paste it here as well.
<ClassBot> TiMiDo asked: do you need to have your GPG Sign by any devel Face to face, so they can verify you'r ID
<SpamapS> For Ubuntu, no, we use Launchpad as our trust network, and in theory, you don't need your key to be signed by Ubuntu developers. They just need to trust that your launchpad account is secure and lists the GPG key that is "you"
<SpamapS> For Debian, you do need to have your key signed by an existing Debian Developer, and most will insist on a face to face meeting.
<SpamapS> But if you just do packaging casually, you can have a sponsor sign your packages and upload them for you, which can also help for learning.
<SpamapS> http://developer.ubuntu.com/packaging/html/udd-intro.html
<SpamapS> noneed4anick: yes, thanks!
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> TiMiDo asked: so if i am an ubuntu member i can contribute via launchpad, and of course using bzr so i can update the branch is that it?
<SpamapS> Being an Ubuntu member does not give you upload permissions or permissions to push to the bzr branches that host the packages. So no. You need to apply for those to the Developer Membership Board.
<SpamapS> I wanted to share then, a few helpful tools that have made my life easier in packaging.
<SpamapS> First is sbuild and mk-sbuild, which I mentioned earlier
<SpamapS> these build a working chroot filesystem on your machine that you can use to build packages in an isolated and clean environment.
<SpamapS> mk-sbuild in precise and later has a new flag, --eatmydata, which makes these even faster to use, as it disables the nasty dpkg habit of calling 'fsync' after every filesystem operation.
<SpamapS> I recommend editting /etc/sbuild/sbuild.conf and setting   $purge_session="successful" so that your failed builds will stay around and you can rejoin them with 'schroot -c sessionid'
<SpamapS> you can list the active sessions with 'schroot --all-sessions -l'
<SpamapS> Another one is 'licensecheck2dep5'
<ClassBot> There are 5 minutes remaining in the current session.
<SpamapS> When you are creating a new package, or importing a new upstream version, you need to make sure the source code licensing is well documented.
<SpamapS> you can run 'licensecheck --copyright -r .' in the root of the source and it will tell you all the copyright and licenses it can find (its VERY good at finding them)
<SpamapS> In the cdbs package, there is a helper script, 'licensecheck2dep5' that will take the output of that command, and turn it into an almost-complete debian/copyright file for you.
<ClassBot> jincreator asked: What's different between pbuilder and sbuild?
<SpamapS> jincreator, I used to be a pbuilder user, and now I use sbuild. Their basic premise is the same.. a chroot which you build inside to make things cleaner.
<SpamapS> jincreator: however, sbuild has a few advantages.. the biggest one being that it is what the Ubuntu buildds use, so you are closer to what Ubuntu will use to build your actual package.
<SpamapS> jincreator: there is also the fact that sbuild can make use of btrfs and/or lvm snapshotting to make schroot cleanup faster and less of a disk hog.
<SpamapS> Thats all I have today. If you want to get started packaging, I'd suggest coming to #ubuntu-devel, finding a bug, and working on it with us. Thanks for the excellent questions everyone!!
<cyphermox> Thanks SpamapS :)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer  Week - Current Session: Incorporating upstream changes in Ubuntu - Instructors: cyphermox
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<cyphermox> Hi and welcome to my session!
<cyphermox> My name is Mathieu Trudel and I'm a developer in the Ubuntu Desktop team. Some of the things I'm known for touching are NetworkManager and Evolution :)
<cyphermox> I'll be talking about incorporating upstream changes in Ubuntu. This is something we do relatively often in order to fix bugs that are discovered.
<cyphermox> Since I'm part of the Ubuntu Desktop team, I'll focus on some of the ways we deal with such a task in the team. There are usually slightly different workflows depending on the teams, but most of it comes down to the same.
<cyphermox> I'll go relatively quick for the first part, and answers questions at the end.
<cyphermox> If you miss anything, don't worry, it's all right here: http://people.ubuntu.com/~mathieu-tl/presentations/incorporating_changes_into_Ubuntu.txt
<cyphermox> There are at least three ways by which you can incorporate upstream changes in Ubuntu:
<cyphermox> 1) Taking an brand new version (with a very different version number, or just a "bugfix" release)
<cyphermox> I'll actually let coolbhavi talk about this; he has a session tomorrow, Wednesday Feb 2nd, at 16:00 UTC where he would be covering that. (It's called "How to update a package to the latest upstream version in the repositories")
<cyphermox> In reality, it's the "simplest" way, where you'd upgrade the package to a newer upstream version directly, in the case where that fixes bugs and doesn't have too high a risk of introducing new ones.
<cyphermox> 2) Taking a "snapshot" of an upstream source repository.
<cyphermox> This is similar to taking a brand new version. In this case, you would use packaging tools to generate a new upstream tarball to be used as your "new upstream version". For instance, gnome-pkg-tools knows how to grab source from a git tree.
<cyphermox> Some packages use this often, but as a general rule of thumb, we try to avoid it: using a snapshot of upstream code has a pretty high chance of also including bugs that haven't been discovered or fixed yet. The reason why is pretty simple: if it's not released yet, it's probably still a work in progress.
<cyphermox> All in all though, the process is the same as for a new upstream release, with the added step that you need to make your own tarball.
<cyphermox> and... Any questions so far?
<cyphermox> I'll just assume not and carry on
<cyphermox> 3) Cherry-picking patches from upstream.
<ClassBot> TiMiDo asked: what's the difference between ubuntu-devel and ubuntu-motu teams?
<cyphermox> TiMiDo: there isn't much of a difference, really. the Ubuntu-devel channel and the Ubuntu developers team in general is a superset of all the various development teams. Everybody is interested in development. Then the ubuntu-motu team and channel have a bit more of a specialist task, where they'd look after packages in universe, or unseeded packages, which is a whole lot of things we get from Debian but for which
<cyphermox> there isn't necessarily someone looking after on a day to day basis
<cyphermox> I guess this would be my response
<cyphermox> MOTU is also a great place to ask for help if you're starting to learn about packaging
<cyphermox> We now get to the main subject, a demo of how one would integrate upstream changes (in the form of a patch) into Ubuntu.
<cyphermox> Patches can come from a variety of sources: you could write your own, get it from a bug report upstream, or from a bug report against Fedora, or from Debian. To demonstrate how we would do this, I've chosen an example task. We'll fix a small bug in Evolution, everybody's favorite mail client :)
<cyphermox> I'll take that opportunity to plug the Operation Cleansweep, also know as the Ubuntu Review team. They look at the quality of patches attached to bugs in Launchpad. I haven't prepared anything about this really, but you're welcome to ask me about it. That's who looks at the patch, patch-submitted-upstream, etc. tags on bugs
<cyphermox> back to preparing a patch...
<cyphermox> there's a few key things you'll need first
<cyphermox> - a system running Precise. sorry, I really planned my demo around this, though in reality it's really not a very different process
<cyphermox> - the branch for Evolution (more on this in a minute)
<cyphermox> - build-dependencies for evolution (I'll get to that as well, but if you want to get started: "sudo apt-get build-dep evolution")
<cyphermox> - and you'll also need bazaar, and the builddeb plugin to bazaar ("sudo apt-get install bzr bzr-builddeb").
<cyphermox> With a bit of luck I'm not forgetting any of the pieces :)
<cyphermox> For this, you'll need to have a copy of the evolution packaging branch, which is maintained by the Ubuntu Desktop team. On a fast system, this only takes a few seconds:
<cyphermox> bzr branch lp:~ubuntu-desktop/evolution/ubuntu evolution
<cyphermox> This command basically downloads the source for the evolution package from Launchpad.
<cyphermox> The next step is to get in that directory. You'll notice it only contains a debian/ directory, which is a slightly different, but similar process from using UDD branches (full package branches, coming from lp:ubuntu/package or ubuntu:package, when it's not maintained elsewhere).
<cyphermox> For full package branches (UDD branches), barry will be doing a session about this tomorrow, Wed Feb 1, at 19:00 UTC
<cyphermox> The process is pretty similar, with the difference that the branch contains both the debian/ directory and the full source code for the package
<cyphermox> The way to know what branch to use is generally to rely on the Vcs-Bzr field in the debian/control file. Unfortunately, that field isn't always present or pointing to the right place, and isn't obvious to see before downloading the source anyway. Fortunately, the 'debcheckout' command helps with that.
<cyphermox> debcheckout evolution
<cyphermox> Would yield the same result as the previous command I suggested. If it's not done downloading, let it run, we'll look at other things in the meantime :)
<cyphermox> As a next step, let's go see what kind of bug we could fix: https://bugs.launchpad.net/evolution/+bug/924356
<cyphermox> everybody got this far?
<cyphermox> I've opened this one myself. There's an associated upstream bug (https://bugzilla.gnome.org/show_bug.cgi?id=651221) which was opened by somebody else, and it's actually fixed in a commit upstream. We can then go take that patch and include it in the package.
<cyphermox> Now, the bug report mentions two things: one is an actual patch that we could probably take immediately since it's most likely what was committed, as well as a commit ID. We can get to this commit id: http://git.gnome.org/browse/evolution/commit/?id=3dc8b0b
<cyphermox> (I'm obviously talking about the Gnome Bug report here)
<cyphermox> Looking back at the bug report however, it's mentioned being for 3.3.5 and above, in git branch "master"... This won't affect us now, but sometimes patches for different versions than what we're using could take substancial amounts of rework to apply properly.
<ClassBot> There are 10 minutes remaining in the current session.
<cyphermox> Save the patch (click "(patch)" near the top of the commit page, then Save As), with a name that will make sense to you and to others. The cool thing with this particular form of patch is that it already contains tags along the top that identify its provenance, and is already in the right format to be saved directly in the debian/patches/ directory. This is possible because the evolution package uses quilt to
<cyphermox> maintain patches.
<cyphermox> As a general rule I try to make it clear that a patch from a git tree comes from a git tree, and where exactly it comes from. This one, I'd name something like "git_edit_new_default_email_3dc8b0b.patch". Note the reuse of the commit ID, just so that it's as clear as possible where this comes from.
<cyphermox> When comes time to update the package to a new version, it's (hopefully) easier to tell that a patch coming from git can probably be simply dropped, since it will already have been included in the new release.
<cyphermox> Continuing... In an ideal world there isn't much left to do, but sometimes patches don't quite apply right, or need a bit of changes to do the right thing. Let's see how it goes and add its name to the end of the file 'debian/patches/series'. (Assuming you're in the package's directory)
<cyphermox> echo "git_edit_new_default_email_3dc8b0b.patch" >> debian/patches/series
<cyphermox> Because we're working in version control, we really also need to add the patch file to version control:
<cyphermox> bzr add debian/patches/git_edit_new_default_email_3dc8b0b.patch
<cyphermox> And we'll also add an entry to changelog to describe what we've been doing and to close the bug report. This is usually done using the 'dch' or 'debchange' command; and with the -i switch, which adds a new entry. If you try this now though, you'd see that it adds a new entry, however there's one under it marked UNRELEASED. This is because I had already started work on that package :)
<cyphermox> Let's use "dch -a" instead. A new entry will be added under mine, normally with your name in brackets just above it.
<cyphermox> Add the information about what we've done. We've added a file, so let's name it, and explain what it does and close the bug, all that beside the *:
<cyphermox> debian/patches/git_edit_new_default_email_3dc8b0b.patch: use an account's
<cyphermox> associated email address rather than the default address when editing new
<cyphermox> messages. (LP: #924356)
<cyphermox> Try your best to limit the lines to 80 characters and align the start with the other lines. With this done, let's try to test build the package (you need bzr-builddeb for that, and the build dependencies for evolution, so let's get all of this too)!
<cyphermox> sudo apt-get install bzr-builddeb
<cyphermox> sudo apt-get build-dep evolution
<cyphermox> bzr bd
<cyphermox> Bzr-builddeb will try to build the package, starting with getting the source tarball for you from the archive. If all goes well, you'd have a .deb package at the end of this to use to test your own work.
<cyphermox> I'll take questions again. Don't forget to add QUESTION:  before it, it helps a lot to make sure I see it :
<ClassBot> There are 5 minutes remaining in the current session.
<cyphermox> Once this is done, you'd go ahead and test the same build in a pbuilder or schroot after building a source package (bzr bd -S); and if that goes well too you could commit your changes, release the package, and submit a merge proposal or upload.
<cyphermox> debcommit       # commit my changes
<cyphermox> dch -r          # release to precise (all this does is change UNRELEASED to precise and update the timestamp)
<cyphermox> debcommit -r    # commit the release
<cyphermox> These are the three steps condensed in commands
<cyphermox> With this done, you could push the branch to your launchpad account (name it something that makes sense to you, but it should be under your launchpad ID, and in the evolution project):      bzr push lp:~yourname/evolution/lp924356
<cyphermox> And propose a merge:         bzr lp-propose lp:~ubuntu-desktop/evolution/ubuntu
<cyphermox> From there, a developer will be able to review your changes and upload them.
<cyphermox> I can go in more details for anyone who asks, I don't think there's another session next :)
<cyphermox> Thanks all for attending! :)
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%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 ||
<kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
<kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
<kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
<kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
<kanliot>                                                                                                                                                                                                                                                     
#ubuntu-classroom 2012-02-01
<ysnoi> hello there...
<ysnoi> my first time boot here..
<codepal> ysnoi, welcome - o/
<codepal> !logs
<ClassBot> Logs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/
<ysnoi> hi codepal...I've been disconnected after I use lernid and XChat at the same time...
<codepal> ysnoi, aha - you've learnt something then!
<codepal> don't use both at the same time!
<codepal> :D
<ysnoi> im just curious...1st time here
<codepal> ysnoi, if you want to read  what happened in this class this morning you can visit
<codepal> !logs
<ClassBot> Logs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/
<ysnoi> ok thanks...i'll get to it
<ysnoi> ah..so it's in html and txt file format...got it
<ysnoi> codepal: you have two colors on username...may I know why?
<codepal> ysnoi, maybe because when I speak your nickname it changes.
<codepal> let's try...
<ysnoi> yeah..
<ysnoi> +1
<ysnoi> can i ask anything here?
<ysnoi> like how can I change my username?
<ysnoi> on this chat
<codepal> - /nick someother
<codepal> irc uses '/' to give access to commands
<ysnoi> i don't get it
<ysnoi> - /ysnoi TheYsNoi
<codepal> when u use it correctly with the '/' as  the first thing on a line
<codepal> take off the '-'
<codepal> and space
<ysnoi> - ysnoi TheYsNoi
<pleia2> /nick TheYsNoi
<pleia2> ^^ just that
<ysnoi> haha...
<pleia2> and sessions aren't starting again here for several hours, 15:00 UTC (it's 1:30 UTC now)
<ysnoi> - /ysnoi TheYsNoi
<codepal> pleia2, how'd you do that?
<codepal> escaping '/'
<pleia2> codepal: using irssi: / /command
<pleia2> "/ " escapes commands
<codepal> ah, thanks!
<TheYsNoi> yes...
<TheYsNoi> I got it...
<TheYsNoi> thanks pleia2 and codepal
<codepal> obviously different for different IRC clients...
<codepal> TheYsNoi, in any case, we're glad your getting familiar with IRC
<TheYsNoi> thanks a lot codepal
<codepal> TheYsNoi, do you want a IRC lessson?
<TheYsNoi> i'm using XChat...I was starting to connect to this channel last night but I got connected to mint instead...
<TheYsNoi> until I saw freenode and ubuntu-classroom
<TheYsNoi> IRC lesson?
<deltab> in some you use /say instead
<codepal> TheYsNoi, -- http://en.wikipedia.org/wiki/Wikipedia:IRC/Tutorial -- Take a read, hopefully you'll be able to work out some things for yourself
<codepal> using /msg Chanserv help && /msg Nickserv help
<TheYsNoi> opening now in browser...i'll take a look on it...
<codepal> TheYsNoi, there are many channels on freenode on different topics, just 'remember the rules'
<TheYsNoi> thanks codepal
<deltab> see also  http://freenode.net/  - especially for the quirks of this network
<codepal> yeah, freenode.net needs a web redesign - I hate it
<codepal> http://linuxlibrary.org/command-line/irc-internet-relay-chat/ for a quick, basic run down of commands
<TheYsNoi> ah...so pidgin has also an IRC support
<benonsoftware> Yep
<TheYsNoi> ok..i'll try adding an account..
<TheYsNoi> hey codepal..
<codepal> yeah?
<TheYsNoi> I tried registering my nickname on NickServ as TheYsNoi but the username that arrived on my mail is TheYsNoi1? is this normal?
<TheYsNoi> I hate having 1 on my nick..
<codepal> well maybe you can ignore the registration email ( you don't have to confirm )
<codepal> think hard about your nickname - it defines your first impression with many people.
<codepal> and try again - you still can retry signing up with TheYsNoi,
<codepal> if you want
<TheYsNoi> maybe because when I register my nick on Pidgin, i'm also here as TheYsNoi..
<codepal> that would be it
<codepal> possibly
<codepal> you can register in XChat instead
<TheYsNoi> if so, I  need to logout here and try again...
<codepal> or do that, yeah!
<TheYsNoi> or, i will logout on pidgin and register here
<TheYsNoi> is this server irc.ubuntu.com?
<codepal> it doesn't really matter which server does it?
<TheYsNoi> ah ok..i'll try now..
<codepal> whenever you log in you can get a different server that's still connected to this network
<codepal> lot's of servers make up the freenode network
<TheYsNoi> NickServ REGISTER <pass> <email>
<TheYsNoi> is that correct syntax codepal?
<codepal> yup
<codepal> remember, you can find help on most commands using /msg nickserv help command
<codepal> or /msg chanserv help command
<TheYsNoi> yeah...
<TheYsNoi> i learned that today from you...
<codepal> you might like a cloak which hides your ip address -- so people don't try hacking you -- in the channel #freenode
<codepal> just ask nicely for a cloak
<codepal> also you probably want to learn how to connect via SSL (more securely)
<TheYsNoi> how?
<codepal> which can get complicated....
<codepal> ask in #freenode for help or your IRC clients channel
<codepal> ie #xchat / #pidgin
<codepal> and don't forget you can use www.google.com
<TheYsNoi> yeah...may I get to it one day..
<TheYsNoi> i'm on familiarization now..
<TheYsNoi> it's my rest day today..hehhe
<TheYsNoi> yes..i'm done on registration..
<ysNoi> test
<TheYsNoi> test 2
<TheYsNoi> hello
<Ravemaste> hmnnn...
<Ravemaste> anybody?
<benonsoftware> Hello
<Ravemaste> hi benon
<TheYsNoi> join #ubuntu-release
<kanliot111111111>                                                                                                                                                                                                                                                                                                                                                                                                                                                           
<kanliot111111111>                                                                                                                                                                                                                                                                                                                                                                                                                                                           
<kanliot111111111>                                                                                                                                                                                                                                                                                                                                                                                                                                                           
<kanliot111111111>                                                                                                                                                                                                                                                                                                                                                                                                                                                           
<kanliot111111111>                                                                                                                                                                                                                                                                                         
<ysnoi> anybody?
<metasansana> what is the link to the timetable again?
<metasansana> nevermind
<dpm> Everyone ready for the UDW Day 2?
<palladin35y> metasansana:  is that you ?
<PaoloRotolo> dpm, sure :)
<dholbach> Alright my friends! WELCOME TO DAY 2!
<dholbach> Again a few organisational bits before dpm takes over the stage...
<dholbach> Please make sure you all join #ubuntu-classroom-chat because that's where all the chat and questions go
<dholbach> also please make sure you prefix all your questions with QUESTION, ie
<dholbach> QUESTION: dpm, how much do you like metal music?
<dholbach> you can find the schedule at https://wiki.ubuntu.com/UbuntuDeveloperWeek along with all the logs of the sessions yesterday if you missed them
<dholbach> I hope you have a fantastic time today
<dholbach> big hugs from me
<dpm> (do I really have to answer that question...?)
<dholbach> and I pass on the mic to David "dpm" Planella who talks about "Bringing your app to Ubuntu "
 * dholbach hugs dpm
<dholbach> the stage is yours
<dholbach> :)
 * dpm hugs dholbach while catching the mike
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%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 || Event: Ubuntu Developer Week - Current Session: Bringing your app to Ubuntu - Instructors: dpm
<dpm> Allright, how's everyone doing?
<ryan__> I am doing well.
<dtss> good :)
<yuvilio> awake
<dpm> cool
<dpm> ok, awesome
<dpm> let's wait a minute for stragglers to come in and then we can start
<dpm> I hope you all are enjoying UDW so far...
<dpm> dholbach tells me yesterday was awesome!
<dpm> Anyway, let's get started
<dpm> Hi everyone and welcome to the first session of Ubuntu Developer Week Day 2!
<dpm> During the next hour I'll be talking about how to submit your apps to Ubuntu,
<dpm> so that they get published in the Software Centre
<dpm> to be distributed to millions of users that will surely enjoy your cool software :)
<dpm> But it will not be just a talk: I'll  make sure that there is plenty of time for everyone
<dpm> to participate and ask their questions at the end. However, feel free to interrupt me during the
<dpm> rest of the session if you've got any questions.
<dpm> Just remember to prepend them with QUESTION: on the #ubuntu-classroom-chat channel
<dpm> Throughout the talk I will be referring to different places in the Ubuntu App Developer site,
<dpm> which is the central place for anyone wanting to create and publish their apps in Ubuntu.
<dpm> Here's where it lives:
<dpm>     http://developer.ubuntu.com
<dpm> ... and without further ado ...
<dpm> let's get rolling!
<dpm>  
<dpm> Creating your app
<dpm> =================
<dpm>  
<dpm> Well, the first step is obvious, you have to create your app,
<dpm> which is basically the time when you materialise that cool idea into beautiful software.
<dpm> I will not dwell too much on this subject, as it's beyond the scope of the session,
<dpm> However, I'll just add a couple of tips for app authors.
<dpm> If you're considering writing a new application for Ubuntu, I'd recommend to use
<dpm> the standard set of tools available from the Ubuntu archive.
<dpm> They are an extremely powerful and versatile bunch of tools
<dpm> which will not only put everything you need to write software at your fingertips,
<dpm> but also will help you following good development practices.
<dpm> And they're all Free Software and also free as in free beer!
<dpm> I see we've got a question already, but let me show you something first:
<dpm> You've got an overview of our recommendations to write new apps here:
<dpm>     http://developer.ubuntu.com/get-started/quickly-workflow/
<ClassBot> ryan___ asked: Which programming language do you perfer to use to develop Ubuntu apps?
<dpm> as you can see from the table in the link above, we're currently recommending Python
<dpm> as a language to write new apps
<dpm> What we've also got is a tool called quickly, which puts all those technologies together
<dpm> You can learn more about it here, it's got a nice and short video tutorial
<dpm> to show you how to write a basic functional template for your app in 3 minutes:
<dpm>     http://developer.ubuntu.com/get-started/
<dpm> However, if you've already written an application with another set of tools,
<dpm> or if you do prefer another choice of toolkit, that's also ok!
<dpm> We're providing these recommendations to make it easy for app authors to get started
<dpm> and provide a smooth path for publishing their apps.
<dpm> However, we acknowledge the diversity of the whole Open Source ecosystem,
<dpm> so you can basically submit your apps using your weapon of choice.
<dpm> Just remember that our recommendations will make things easier, though!
<ClassBot> metasansana asked: why phython?
<dpm> we chose quickly because it's an easy to learn high level language, which is open source and it's got first class support in Ubuntu.
<dpm> apart from that, it comes with a rich library of functions to do virtually anything you want
<dpm> Continuing on this subject,
<dpm> also, commercial apps (more on those in a minute) might be written in a completely different set of tools, and we want to be inclusive to them too.
<ClassBot> ryan___ asked: does Quickly support the Microsoft Visual Basic programming language?
<dpm> quickly just puts together a set of tools, it's not an IDE that supports languages, although conceivably could be extended to support other languages
<dpm> however, to answer the question, quickly intendedly only supports python, no Visual Basic
<dpm> ok, moving along
<dpm>  
<dpm> Which types of apps qualify
<dpm> ===========================
<dpm>  
<dpm> There are thousands of apps available in the Ubuntu archive already, which usually get in there through other means.
<dpm> Many of these fall into the category of system software, or big applications that are part of the Ubuntu platform.
<dpm> They are also subject to strict policies to ensure the security and quality of the software,
<dpm> as well as to ensure that they are indeed Free Software and can be distributed with Ubuntu.
<dpm> So in order to differentiate from these archive applications, I'll call the process  we'll be talking about today, "the app developer process".
<dpm> Ultimately though, they are all published through the Software Centre
<dpm> So to answer the first question, these are the 3 broad categories under which apps to be submitted through the app developer process fall:
<dpm> * Paid for apps
<dpm> * Gratis apps with proprietary licenses
<dpm> * Gratis apps with Open Source licenses
<dpm> Notice that as well as open source, we're also embracing commercial applications
<dpm> to give the opportunity to app authors and Canonical to make revenue of application sales.
<dpm> This should give you a rough idea, but ultimately you will need to know the whole
<dpm> details to see if your app qualifies for the app developer process.
<dpm>  
<dpm> - For paid for and gratis+proprietary apps:
<dpm>     http://developer.ubuntu.com/publish/commercial-software-faqs/
<dpm> - For gratis+open source apps:
<dpm>     https://wiki.ubuntu.com/AppReviewBoard/Review/Guidelines
<dpm> Ok, next is where it gets interesting: how to actually submit your app!
<dpm>  
<dpm> 1. Submitting your app
<dpm> ======================
<dpm>  
<dpm> Ok, so all that cleared up, by this point you've already have a working app you'd
<dpm> like the world to see and enjoy.
<dpm> The good news is that we've got an easy, streamlined and web-based process
<dpm> to make it easy for you to to publish, keep track of, monitor and update your apps.
<dpm> For this, we've developed a tool especially for app developers.
<dpm> It's called My Apps and you'll find it on the app developer site:
<dpm>     https://myapps.developer.ubuntu.com
<dpm> You'll see that it's easy and intuitive to use, and the first thing you'll want to do is to sign up for it
<dpm> to enter the Ubuntu app developer programme and start using it straight away :-)
<dpm> Signing up it's free, and again, it's a matter of a couple of minutes.
<dpm> The process is based on Ubuntu's single login,
<dpm> so if you've got an Ubuntu SSO account already, it will be even quicker.
<dpm> Simply go to https://myapps.developer.ubuntu.com, either click on the "Sign in or register" link at the top right hand side
<dpm> or the "Submit a new application" button, and the website will guide you through the process.
<dpm> Before you continue the process of submitting the app though, you might want to read the quickstart guide on:
<dpm>     http://developer.ubuntu.com/publish/
<dpm> It will show you the basic steps you will be following and give you some useful tips along the way.
<dpm> Let's go quickly through them:
<dpm> 1 - Set up your My Apps account - you've already done that :)
<dpm> 2 - Prepare your app's icons and screenshots - you will want your app to be
<dpm> appealing to users, so make sure you've got nice screenshots and icons, in all recommended sizes
<dpm> 3 - Add your application details - here you'll be describing your app and making it easily
<dpm> discoverable in the Software Centre. Make sure the description is clear and use a spell-checker to avoid typos
<dpm> 4 - Choose your price - if your app is paid for, you'll have to decide the price in USD at this point
<dpm> The minimum price is $2.99
<dpm> 5 - Have an archive of your application ready to upload - here's where you upload your actual app to MyApps. More on this in a minute
<dpm> 6 - Your app will be reviewed - before it gets into the wild, your app needs to be reviewed and QAd. More on this in a minute too.
<dpm> So going back on the step of uploading your app,
<dpm> Ideally, you should submit a Debian source package. A Debian source package consists of 3 files (with extensions .dsc, diff.gz, orig.tar.gz), which you should put in a compressed archive (a tarball, zip file, rar...) and upload into My Apps. This will allow reviewers to easily test and publish your app.
<dpm> *However*, there are some important caveats:
<dpm>  * If your app is commercial or proprietary software: we still recommend uploading a Debian source package, but if you are not experienced in packaging you can also upload either your binary executables and all files needed to run your app in a compressed archive, a binary Debian package (.deb), your source code in a compressed archive, and the commercial packagers will package and publish it for you.
<dpm> Very soon we'll have automatic packaging in place, but more details on that when it's all deployed and working
<dpm>  * If your app is Free Software and gratis: we recommend using a Personal Packaging Archive (PPA). You can specify the location of your PPA in the 'Any additional notes for the application reviewer' text box in the Overview tab of your app's entry in My Apps. You can also learn more about PPAs in the packaging section of the Ubuntu App Developer Site
<dpm> developer.ubuntu.com/packaging
<dpm> We've got a few questions coming in, and they're related to reviewing
<dpm> Let me talk a bit about review and then answer them
<dpm>  
<dpm> 2. Reviewing your app
<dpm> =====================
<dpm>  
<dpm> After your application has been submitted, and depending of the type of app, one of two things will happen:
<dpm> * If it's a paid for or a gratis+proprietary app, it will be reviewed by the Canonical reviewers team. If necessary, they will package it for you and QA it. Very soon, though, we'll be able to automatically package those.
<dpm> * If it's a Free Software+gratis app, it will generally be reviewed by a team of volunteers called the Ubuntu App Review Board (ARB)
<dpm> In any case, reviewers will get in touch with you as soon as they start reviewing
<dpm> your app, and you will be notified of any app state changes by e-mail.
<dpm> For all the exact details of an application's lifecycle in My Apps, check out:
<dpm>     http://developer.ubuntu.com/publish/application-states/
<dpm> Now onto the questions:
<ClassBot> cielak asked: I have been interested in the review process for some time, and I would like to somehow help the ARB team. Is there any way I could participate and help them?
<dpm> they'd be delighted to hear that!
<dpm> you can jump into the #ubuntu-arb channel and ask how to help, or you can contact the ARB through e-mail
<dpm> https://wiki.ubuntu.com/AppReviewBoard
<dpm> you'll find all the details there
<ClassBot> ryan___ asked: how long does it take after you submit an application to Ubuntu before it shows up in the Ubuntu Software Centre?
<dpm> it depends on your application, and if it's easy to review and QA, or if it's a commercial app, if it needs to be packaged and it's easy to do
<dpm> it can take from some hours to some days, but it varies on an app by app basis
<dpm> You'll find some more details there: http://askubuntu.com/questions/97272/how-long-does-it-take-to-complete-the-review-stages-in-ubuntu
<ClassBot> dmj726 asked: How will proprietary apps be reviewed for security?
<dpm> apps submitted through the app developer process are not subject to the same security policies of those in the Ubuntu archive
<dpm> let me ask davmor2 to provide some more details in a minute
<ClassBot> Gontxo-Vitoria asked: If I make a app that is foss, i can't not sell it in ubuntu?
<dpm> yes, you can also sell free software apps!
<dpm>     http://developer.ubuntu.com/publish/commercial-software-faqs/ covers that too
<ClassBot> pawel_st asked: As an app author, am I obliged to support all currently supported Ubuntu releases, or can I target a specific (latest) Ubuntu release with my app?
<dpm> we recommend you to support as many releases for the sake of making your app more widely available, but we do not enforce you to do it
<ClassBot> dmj726 asked: I've seen magazine issues and books in the Ubuntu Software Center.  How would one publish something like that through Ubuntu?
<dpm> I'm not sure I understand the question, we already publish them in Ubuntu, which means making them available in the Software Centre!
<dpm> I've got some more details on the security question from davmor2:
<dpm> dmj726 asked: How will proprietary apps be reviewed for security?  reference to this, you are currently limited to which directories you can write to.  However security is strictly the responsibility of the application developer and it is they that become liable for any breach of these ref the developer contracts
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> pawel_st asked: What are acceptance criteria for commercial apps? Is acceptance process transparent? Is this only about packaging quality etc., or are there other criterias such as conformance to patents etc.? Can I get an early draft of my application reviewed against acceptance criteria before investing time and effort into its further development?
<dpm> if it's not covered on http://developer.ubuntu.com/publish/commercial-software-faqs/, then it's on an app-by-app basis. I'd recommend submitting the draft of your application and then reviewers will get in touch with you
<dpm> cwayne asked: how long will an app stay in 'pending review' state for?
<dpm> you can find the details here: http://askubuntu.com/questions/97272/how-long-does-it-take-to-complete-the-review-stages-in-ubuntu
<dpm> any more questions?
<ClassBot> dmj726 asked: Are commercial apps vetted for any sort of quality to avoid malicious apps?
<ClassBot> There are 5 minutes remaining in the current session.
<dpm> <davmor2> dmj726: so there is a developer review and qa steps to pick up on obviously broken/unistallable apps as for malicious this again falls to the liability of the app developer.
<dpm> so if there are no more questions for now, just a quick reminder on how to get help or get in touch
<dpm>  
<dpm>  Getting help
<dpm> ============
<dpm>  
<dpm> If you need any help or if you've got any questions, be it during or before the
<dpm> publishing step, there is an awesome, awesome community of app developers out
<dpm> there just like you, willing to lend a hand
<dpm> Check out:
<dpm> http://developer.ubuntu.com/community/
<dpm> From there, I'd like to highlight:
<dpm> Real-time chat: http://webchat.freenode.net/?channels=ubuntu-app-devel
<dpm> i.e. the #ubuntu-app-devel IRC channel on Freenode
<dpm> Askubuntu: http://www.askubuntu.com/questions/ask?tags=application-development
<dpm> For all your app development related questions
<dpm> Mailing list: https://lists.ubuntu.com/mailman/listinfo/ubuntu-app-devel
<dpm> Also for all your questions and longer discussions
<dpm> And finally, here's an overview on how to stay up to date:
<dpm> http://developer.ubuntu.com/2011/11/building-the-ubuntu-app-development-community-i-communication-channels/
<ClassBot> PaoloRotolo asked: If you have uploaded an app without packaging, after the packaging by review board, can you ask to download the packaged app?
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer  Week - Current Session: How to update a package to the latest upstream version in the repositories - Instructors: coolbhavi
<dpm> For Free Software gratis apps, we currently recommend packaging your application yourself and put it in a PPA
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<coolbhavi> thanks dpm :)
<coolbhavi> Hi all I am Bhavani Shankar a 24 year old ubuntu developer from India and I am going to take you through the process of upgrading packages in the ubuntu archive
<coolbhavi> Before we start a bit of dev environment preparation; Make sure you have packaging-dev package installed if you are running on oneiric :) or please go through the session logs of dholbach's session yesterday :)
<coolbhavi> So lets start :)
<coolbhavi> Upgrading a package generally means upgrading a package to the latest upstream version in the ubuntu archive
<coolbhavi> normally, we would get the update from debian in the form of a merge or a sync, but there are cases when we don't, like for example if debian is in a freeze, or the package is orphaned, or its a native ubuntu maintained package
<coolbhavi> or we simply need it urgently (in case of a RC bugfix, for instance), and then pass the result back to debian
<coolbhavi> So assuming there are no doubts lets move on :)
<coolbhavi> so, we now know we have a new upstream version, first thing to do is to get it
<coolbhavi> We can either download it using wget or uupdate <path to orig tarball>
<coolbhavi> Or if we have a watch file under debian directory in the current package, we can use that giving the command "uscan" at the source tree root
<coolbhavi> (More on debian/watch here http://wiki.debian.org/debian/watch)
<coolbhavi> uscan --verbose would say a bit more about what we are trying to do (in fact uscan calls upon uupdate :) more on uupdate: please see man uupdate)
<coolbhavi> finally, there could be a get-orig-source target in debian/rules that we can use
<coolbhavi> by executing "make -f debian/rules get-orig-source" in the source tree
<coolbhavi> A check here: be careful to read the previous entries of debian/changelog as the previous packager could have mentioned something he did with the previous version of the upstream tarball (like for instance repacking the tarball) which comes in detail later in the session
<coolbhavi> ok, now that we have an upstream tarball, we need to rename it in accordance to our policy foo-1.1.tar.gz will become foo_1.1.orig.tar.gz
<coolbhavi> In the simplest case is if there are no changes to packaging and no changes outside of debian
<coolbhavi> Just untar your tarball, copy the old debian dir to the new source tree, Add a changelog entry and Build the package :)
<coolbhavi> I wish all the updates were so simple :)
<coolbhavi> (Previously prior to dpkg-source version 3.0 if the the previous packager made inline changes instead of using a patch system, (you could check this by checking the old diff.gz), Just making changes inside the debian directory would'nt be enough, you needed to run the patch the present version of the package manually and there you would experience some pain in some changes being obsolete and couldnt apply anymore or you would run uup
<coolbhavi> date ../foo_2.orig.tar.gz in the old version src tree to automate the whole manual process.)
<coolbhavi> But now thanks to dpkg-source version 3.0 which generates a debian-changes-* file while building if there are any changes outside the debian directory and wrt policy 3.9.2 throws out a lintian warning too :)
<coolbhavi> ( More about dpkg-source version 3.0 here: http://wiki.debian.org/Projects/DebSrc3.0)
<coolbhavi> A more complex scenario of updating a package would involve the following checks normally:
<coolbhavi> Checking licenses of all the files in the tarball (licensecheck -r --copyright command)
<coolbhavi> Checking if all the patches in the previous version are perfectly applicable or obsolete
<coolbhavi> Checking if there are new dependencies required for the new version of the package (this is usually reported in upstream ChnageLog, but sometimes you only discover it by looking at upstream autoconf files (or Makefile))
<coolbhavi> Checking if the package installs files in a different manner for instance, any change in file locations (We may need to change our packaging then)
<coolbhavi> Checking if the package has a man page, desktop file, icons et al and we may want to install those or for ex. there is a .desktop file already existing we may want to validate the same. (desktop-file-validate)
<coolbhavi> sometimes upstream changes few things which need you to change compilation flags
<coolbhavi> if upstream is a library particular care has to be taken
<coolbhavi> checking if API/ABI change is reflected in SONAME/version (More on SONAME here: http://en.wikipedia.org/wiki/Soname)
<coolbhavi> (check-symbols command can help you in that)
<coolbhavi> you may need a library transition, which involves perhpas rebuilding many packages already in the archive
<coolbhavi> Perhaps at this point its better to go through a simple example for us to get started hands on :)
<coolbhavi> I hope I am not speeding up the session
<coolbhavi> Okay  lets get started with our hands on :)
<coolbhavi> The package I am using as an example is my own debian package mobile-broadband-provider-info (Which I havent updated in quite sometime due to my schedule of things lately)
<coolbhavi> Type in a terminal mkdir m-b-p-i && cd m-b-p-i &&  dget -x https://launchpad.net/ubuntu/+archive/primary/+files/mobile-broadband-provider-info_20111113-1ubuntu1.dsc
<coolbhavi> Which will download the latest available version in ubuntu i.e 20111113-1ubuntu1 (Note: I'm not using apt-get source mobile-broadband provider info as it will download the respective SRU versions for oneiric,natty,maverick or lucid)
<coolbhavi> I ll wait for sometime now for those who are downloading the package
<coolbhavi> <obounaim> QUESTION: I'm getting an error Validation FAILED!!
<coolbhavi> obounaim, please do gpg --recv-keys <the key ID due to which package is failing to validate>
<coolbhavi> and retry  dget -x https://launchpad.net/ubuntu/+archive/primary/+files/mobile-broadband-provider-info_20111113-1ubuntu1.dsc
<coolbhavi> or simple one pull-lp-source  mobile-broadband-provider-info
<coolbhavi> so assuming everything is fine lets move on
<coolbhavi> now if you do a cd mobile-broadband-provider-info-20111113/ and look in you will find a debian directory and most of our work is concentrated in around the debian directory normally
<coolbhavi> now if you look inside the debian directory you will see a changelog control mobile-broadband-provider-info.docs copyright rules watch files and a source directory
<coolbhavi> <chilicui1> QUESTION: bzr branch lp:ubuntu/mobile-broadband-provider-info  will work?
<coolbhavi> yes it will but m not explaining distributed devel method herr :)
<coolbhavi> its a more conventional explanation here for a start off :)
<coolbhavi> obounaim, QUESTION: i don't have the mobile-broadband-provider-info-20111113/ directory ?
<coolbhavi> Please make sure you extracted the source properly
<coolbhavi> ok so now moving on, inside the source directory you will find a file called format which contains something as "3.0 (quilt)" which specifies that this is a dpkg-source version 3.0 package
<coolbhavi> Now if you look at the watch file it states that its a dummy watch file (which I created to satisfy lintian as the package is maintained and updates are pushed into git and no orig tarball is available for same for a dynamic update (once in 1 month, 2 months))
<coolbhavi> Now since the debian/watch file is unavailable if you take a look at debian/rules file you can see that we have defined a get-orig-source target.
<coolbhavi> Now to parse through the get-orig-source rule you saw in debian/rules, you need to install automake and git-core packages as specified in the debian/rules file
<coolbhavi> assuming there are no doubts at this point, lets move on
<coolbhavi> So, running make -f debian/rules get-orig-source inside mobile-broadband-provider-info-20111113/ directory will download the latest version of the changes in git-head and converts the same to a  tarball mobile-broadband-provider-info-20120201 and untars it creating a directory mobile-broadband-provider-info-20120201 going by the sequence of commands under get-orig-source in debian/rules
<coolbhavi> Now since there are no changes or patches outside the debian directory copy the debian directory from mobile-broadband-provider-info-20111113/ to mobile-broadband-provider-info-20120201/
<coolbhavi> Once done navigate to the debian directory in the new source tree and type dch -i and give a version as 20120201-0ubuntu1 (-0ubuntu1 since this version is not present yet in debian but in ubuntu) targetted to precise since that is the devel version presently
<coolbhavi> (Looks something like mobile-broadband-provider-info (20120201-0ubuntu1) precise; urgency=low)
<coolbhavi> And update the changelog as * Merging upstream version 20120201 from git and make a list of upstream changes mapping the LP bugs closed in the changelog (Changelog writing will be taken up as a seperate topic by myself tomorrow where I'm going to explain changelog writing specifics)
<coolbhavi> <jincreator1> QUESTION: I heard about fakeroot. What's difference between fakeroot debian/rules ~ and make -f debian/rules ~ ?
<ClassBot> There are 10 minutes remaining in the current session.
<coolbhavi> jincreator1, make -f uses make command on debian/rules as a file (see man make) and  fakeroot runs the same command in a env faking root previlages for execution
<coolbhavi> as per my understandingf
<coolbhavi> Once done, Save the file and then type debuild -S -sa (Which builds the package along with the new tarball included)
<coolbhavi> Some steps to gain additional points :)
<coolbhavi> After that a dsc and a changes file will be generated. Use pbuilder to test build the generated dsc file in a pristine environment (A session is coming up on the same tomorrow by tumbleweed)
<coolbhavi> And then do a diff between the old source tree and the new source tree for example bhavani@bhavani-desktop:~/m-b-p-i_1$ diff -Nurb mobile-broadband-provider-info-20111113 mobile-broadband-provider-info-20120201 > m-b-p-i.diff and attach the diff and the new source tarball to the new upstream request bug in LP. (my preferred way as a sponsor!)
<coolbhavi> Once done, Please subscribe the ubuntu-sponsors team to evaluate the same :)
<coolbhavi> Once evaluated the package will be uploaded and a new upstream version lands in ubuntu archives
<ClassBot> There are 5 minutes remaining in the current session.
<coolbhavi> Any more questions?
<coolbhavi> Thanks all of you for turning up :) Please feel free to hang out at #ubuntu-motu or #ubuntu-devel for any questions.
<coolbhavi> You can also catch me up on bhavi@ubuntu.com or facebook.com/bshankar
<coolbhavi> Thanks all again! Thats it from my side :) See you tomorrow!
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Charming Juju - Instructors: m_3
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<m_3> hi all
<m_3> I'm Mark... and I'm a <borat>CharmingGuy</borat>
<m_3> so I'd like to cover:
<m_3> - basic intro to juju and service orchestration
<m_3> - anatomy of a charm
<m_3> rather than concentrate on a single charm, I'll give examples from several different charms for common services that most will be familiar with
<m_3> I'll be chatting here, and using a juju-classroom in ec2 to show examples
<m_3> argh!
<m_3> sorry, conference wifi just cut me off
<m_3> ok, so I was saying you can see examples with either a browser or ssh... lemme paste the url:
<m_3> ec2-107-21-156-68.compute-1.amazonaws.com
<m_3> you can go there in a browser and log in with guest/guest
<m_3> or ssh directly there w/ same user/pass
<m_3> ok, so juju is a new set of devops tools baked into ubuntu server
<m_3> it's a fundamentally new paradigm in devops
<m_3> it's not concerned with just configuring machines or automating that process
<m_3> it takes it to the next level of looking at your entire infrastructure as a set of services
<m_3> services with varied lifecycles that interact with each other
<m_3> examples of services... applications, load balancers, databases, monitors, storage, caches, etc
<m_3> the list goes on and looks different for different people
<m_3> well juju's about maintaining stacks of services within your infrastructure
<m_3> take a simple example
<m_3> gimme a sec to get reconnected to it
<m_3> ok, now in the ec2 instance, you can see a simple stack of services
<m_3> this is what the end-user's view of juju will be
<m_3> juju bootstrap
<m_3> juju deploy [options] service
<m_3> juju add-relation service1 service2
<m_3> juju expose service
<m_3> the last step exposes the service to the outside world (you typically want this to happen ina gated manner)
<m_3> that's a stack that deploys a mongo database, a node.js app, and relates the two
<m_3> there's some additional stuff commented out that hints at where we can go next with this
<m_3> adding extra services and then scaling service units out
<m_3> but that's the basic process
<m_3> bootstrap, deploy, relate, expose
<m_3> so the way juju represents services is through templates we call charms
<m_3> there are charms for all sorts of standard services
<m_3> mongo, ganglia, mediawiki, mysql, etc etc
<m_3> the list is growing every day
<m_3> so these charms "distill" the best-practices of the devops peeps that've been working with those services
<m_3> some charms are simple package type installations
<m_3> some charms are really complex sets of packages, pulls from repos, and templated code
<m_3> so these charms "distill" the best-practices of the devops peeps that've been working with those services
<m_3> sorry, paste-barf
<m_3> the most complex example I can think of at the moment is openstack
<m_3> we've got charms built (nod to adam_g) that deploy openstack on bare-metal clusters using juju
<m_3> we'll start with simple ones in a bit
<m_3> so juju orchestrates services
<m_3> represented as charms
<m_3> it's essentially a low-level eventing framework as we'll see
<m_3> take a look at a more mature stack for a sec (ec2 example)
<m_3> this is a more realistic infrastructure than most examples you deal wth
<m_3> we're going to delve into the anatomy of charms in some detail, but the big picture is that these charms can be combined into larger stacks of services
<m_3> ok, so next is anatomy of a charm
<m_3> I'll pause for questions on juju in general before we do that though
<m_3> #question
<m_3> hmmm... ok, that's not it... I'll check out #ubuntu-classroom-chat
<m_3> I got a "this is going to be over our heads"
<m_3> and a question "what is juju built on"
<m_3> totally not over your heads... wait til you see the charms themselves
<m_3> they can be written in any language
<m_3> and it's got a really great learning curve
<m_3> juju's a basic eventing framework
<m_3> uses twisted in the agents
<m_3> and uses zookeeper to keep track of it all
<m_3> yeah, it's communicating through ssh using std key-injection for most cloud providers
<m_3> it runs on ec2, hpcloud, openstack, almost eucalyptus, lxc, bare-metal
<m_3> so single-server installs are possible
<m_3> just depends on your resources
<m_3> an example... I was just developing more on the mongo-node app
<m_3> typical production stack for that would be haproxy head, dozen node instances, and a 4-instance mongo replset
<m_3> on my local machine, I'll just run a single mongo and a single node instance
<m_3> we'll see how the charms scale out ina sec
<m_3> ok, so great questions
<m_3> let's look at the anatomy of a charm and I think it'll be a little clearer how the events work
<m_3> so think about the configuration for a typical service
<m_3> there' stuff you gotta do to just get it installed on the box
<m_3> sometimes that's super-simple
<m_3> (example)
<m_3> the 'open-port' is a juju primitive
<m_3> sometimes installation isn't so simple
<m_3> juju lets you install services on ubuntu service from packages, of course
<m_3> but it also lets you easily install using other methods
<m_3> like npm
<m_3> or gems
<m_3> if your app needs a version of django or rails that isn't in the repos
<m_3> then you can install it
<m_3> of course you can shoot yourself in the foot
<m_3> we take pains to insure the shared charms in the charmstore are somewhat safe
<m_3> cryptographically verified payloads, peer reviews, tests
<m_3> but ultimately, pretty much anything goes in a juju charm
<m_3> so a charm for a service is just a handful of hooks
<m_3> (see example)
<m_3> install, start, stop, upgrade-charm
<m_3> the hooks in this example are all shell script
<m_3> but they can be written in anything you'd like
<m_3> just need an interpreter/runtime on the instance
<m_3> heck, you could even write them in clojure
<m_3> you just have to make sure the first "install" script bootstraps that executable env
<m_3> binary hooks are cool too
<m_3> although for the official ones in the charm store, we'd need transparency
<m_3> now each service relates to other services
<m_3> this is specified in the metadata for the charm
<m_3> what sort of services can plug in to this one... is specified in the provides and requires interfaces
<m_3> they have to match
<m_3> mysql provides a db:mysql interface
<m_3> other services such as mediawiki consume this with a requires section
<m_3> juju uses these interface definitions (they're loose, you can make up your own) to wire service units together
<m_3> and there are hooks to be called when that happens
<m_3> so let's go over basic lifecycle...
<m_3> juju spins up mysql (juju deploy --repository ~/charms local:mysql)
<m_3> juju spins up mediawiki (..)
<m_3> for each of these services... juju spins up a new instance, calls the "install" and "start" hooks in the respective charms
<ClassBot> There are 10 minutes remaining in the current session.
<m_3> next, we 'juju add-relation mysql mediawiki' and then the magic begins
<m_3> ok, so it's not magic... it's just juju calling the relation hooks for each of those services
<m_3> it also lets these relation hooks talk to each other
<m_3> that's the real win IMO
<m_3> think of the stuff you have to do to set up a service
<m_3> juju separates this into the stuff you have to do for installation
<m_3> and the stuff you have to do for relation
<m_3> it's typically quite isolated... I'm learning
<m_3> installing mediawiki
<m_3> installing mysql
<m_3> but _relating_ them is just:
<m_3> create a new db on mysql
<m_3> hand over the creds to access this db to the other service
<m_3> that's all they really have to know about each other
<m_3> (example)
<m_3> ok, that's more detail than we need
<m_3> simpler example... pgsql
<m_3> there that's it
<m_3> create a user/passwd/db
<ClassBot> There are 5 minutes remaining in the current session.
<m_3> and then "relation-set" is a juju primitive that lets this hook hand the info over to the other end of the relation (mediawiki in this case)
<m_3> mediawiki will have corresponding 'relation-get's where it just saves that out to /etc/mediawiki/...
<m_3> ok, heading to ubuntu-classroom-chat for questions
<m_3> also, if you look at nothing else with juju... totally check out the 'juju debug-hooks' command
<m_3> it opens a tmux session on the service unit and spawns a new session for each hook as it execs (with the hook's exec env)
<m_3> it's cool!
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Running the development release - Instructors: Cariboo907, Effenberg0x0
<m_3> so there's juju.ubuntu.com/Charms to see these in detail
<m_3> yikes... outta time
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<m_3> thanks for your attention!
<Effenberg0x0> Hi everyone, It's a pleasure to be at UDW. Thank you all for being here! My name is Alvaro Leal (my user name is Effenberg0x0). As you are (probably) aware, we'll be talking about runing the Development Release: Ways to do it, common pitfalls, some tips, how stable it is right now, etc.
<Effenberg0x0> So, let me introduce myself first. I have been working in IT for 50% of my life (I'm 32, so that's somewhat relevant for me!). My first job was with Solaris (later SunOS) and I got to try Linux by using Conectiva Linux (later Mandrake/Mandriva) for some years, until I tested Ubuntu in 2005 (Hoary) and never left it. Regarding development, work has requested me to focus on HTML+PHP, C+WinAPI (I've been a Dev-C++ user for a long time) and s
<Effenberg0x0> ome (unnecessarily large) shell (mainly Bash) scripting (prototyping).
<Effenberg0x0> My current job involves providing market intelligence services to some of the largest global IT companies and, in parallel, coordinating tests and developing for research databases analytic software. I've been active in many Linux and general IT forums in my country (Brazil) but, for the last two cycles, I have focused exclusively in UbuntuForums and its Ubuntu+1 area. So, long story short, that's how I got to testing Ubuntu. It's my firs
<Effenberg0x0> t time hosting a session so, please, be nice :)
<Effenberg0x0> Also joining us is Cariboo907, a Forum Admin and Forum Council Member at UbuntuForums. He's been active in the forums for a long time and specifically in the U+1 area for most of the last development cycles. He's here to help and will be answering questions too, so don't feel shy and ask everything you want (relevant to using the development release, please!).
<cariboo907> Hi everyone, I'm sure most of you know me, or of me
<cariboo907> Welcome
<Effenberg0x0> So I have mentioned UbuntuForums and U+1. What is the U+1 area of UbuntuForums? It's a place where a growing group of regulars join to post their perceptions, doubts and workarounds regarding every update to the development release of Ubuntu.
<Effenberg0x0> From day one of every development cycle,  these guys test the installation of the ISOs (Ubuntu flavors - Ubuntu, Kubuntu, Lubuntu mostly and x86/x86_64) and update their OSs many times a day, reporting back to the forum when something goes wrong. Hopefully, the others can help in reproducing the reported behavior and finding out the origin of the problem (sometimes even a workaround).
<cariboo907> !q
<Effenberg0x0> One of the contributions of this team is that they can provide the community with higher value-added and more precise Launchpad bug reports, which potentially makes the work of developers easier. We're also open for receiving specific test tasks from developers and the QA team. And we're ready to provide help to any of you if you happen to encounter any specific problem when using the development releases of Ubuntu.
<Effenberg0x0> I'd like to talk a little about the importance of testing the development release. It's a huge contribution to the community and something mostly anyone can do, as it requires no specific knowledge. The Testing Team has a wiki at https://wiki.ubuntu.com/Testing.
<Effenberg0x0> The activities include ISO Testing, Stable Release Testing, Feature Testing, General Testing, Application Testing, Automated Testing, Laptop Testing and, of course, reporting bugs found during this processes in Launchpad and following up with them. So there are activities for all tastes and skill levels.
<Effenberg0x0> Each activity is not hard or time consuming but, as you can see, all these activities together compose a great load of work, so help is welcomed.
<Effenberg0x0> So, PLEASE :) Be a part of it.
<Effenberg0x0> Among all these activities of the Testing Team, I'd like to mention ISO Testing. As we approach a CD Release (Alpha, Beta, RCs, etc) it is really important to do the ISO testings. There are instruction on ISO Testing procedures at https://wiki.ubuntu.com/Testing/ISO/Procedures and a Testcases Wiki is hosted at https://wiki.ubuntu.com/Testing/ISO/Procedures.
<Effenberg0x0> If all of you could dedicate a couple minutes to go through these links and give some consideration to supporting the Test Team, I would mean a lot to the community.  It's great way to get involved.
<ClassBot> metasansana asked: Effenberg0x0 can you slow down a bit please?
 * Effenberg0x0 will slow down, as requested by ubuntu-classroom users :)
<Effenberg0x0> Enough with the introduction part of it: Let's get down to the business at hand, which is running the development release. I'll be posting a lot of information we prepared and then we'll open for questions. As you know, logs will be available online, so there's no need to take note of URLs, commands or anything right now.
<Effenberg0x0> Ok, lets proceed. We know there's a focus on getting more people into developing software for Ubuntu (see http://developer.ubuntu.com/ and http://www.ubuntu.com/community/get-involved/developers). And considering the growing popularity of this platform, many developers are coding for it now. One of the concerns we see among this group is how they can run the development release without facing serious bugs and breakages.
<Effenberg0x0> Let me start by saying that there is a consensus about the overall stability in the Precise Pangolin cycle.  From its start (with the upload of the toolchain in Oct 13th) to now, only a few users have faced serious breakages that lead to a lockout / reinstall. This is no coincidence. On Nov. 2011, a list of priorities and specs for the Development Releases was created and it included one important rule: Keep releases usable from day to da
<Effenberg0x0> y (see https://blueprints.launchpad.net/ubuntu/+spec/other-p-plusonemaint-priorities and  https://wiki.ubuntu.com/PlusOneMaintenanceTeam/Specs/Priorities).
<Effenberg0x0> So, as you can see, these specs try to make sure you'll have a installable system and buildable packages at any given moment.  So, as developers, you'll also want to take those guidelines under consideration.
<Effenberg0x0> Of course, it is not bulletproof and we do face some updates that eventually break this or that . But, most of the time,  PP has been succeeding into keeping the system viable enough for its use and test. While this is ***absolutely not recommended at all***, many users are working with PP in their production machines.
 * Effenberg0x0 is running it right now: xchat, vmware-player x 4 VMs, Eclipse Juno, about 20 firefix tabs, rhythmbox, Nixnote, Thunderbird and everything is fine (uptime is more than 5 days)
<Effenberg0x0> firefix=firefox :)
<Effenberg0x0> Then what are the options to use PP safely? We'll discuss a few as every user/developer will generally choose what fits its preferences best. They are numbered from 1 (less risky) to 5 (more risky).
<Effenberg0x0> Some are obvious to most people, some are not. But it's important to mention them.
<ClassBot> kanliot asked: I'm used to lubuntu.  is the PP testing, and reporting the same for Lubuntu?  Or is the schedule a little differnt?]
<cariboo907> Seeing as Lubuntu is now an official part of the Ubuntu family reporting and scheduling is the same
<cariboo907> for all versions, except for kubuntu which has it's own bug tracker
<Effenberg0x0> kanliot, they host a page with specific info for testing Lubuntu: https://wiki.ubuntu.com/Lubuntu/Testing
<Effenberg0x0> So, proceeding with the common ways to test Ubuntu and its flavors:
<Effenberg0x0> 1) Separate PC: Considering you have an extra PC that fits the specs to run the development release (see https://wiki.ubuntu.com/DesktopExperienceTeam/UnityHardwareRequirements and https://wiki.edubuntu.org/DemystifyingUnityGraphicsHardwareRequirements) this is the safest choice. You can run your favorite IDE in your main PC, remotely access the test machine via Samba, SSH, FTP, NFS, Git, SVN, or any other protocol and even run remote GDB
<Effenberg0x0>  sessions. There's extensive documentation in doing all of those in the Ubuntu Online documentation. In the case of PP Server, you can also consider using a Cloud Service Provider.
<Effenberg0x0> This is the "ideal" way, of course. But not everyone has extra machines at their disposal.
<ClassBot> There are 10 minutes remaining in the current session.
<Effenberg0x0> 2) Virtual Machines: During the last two cycles many people have adopted VirtualBox and VMWare-Player as platforms for testing the development release. There's some discussion as to how valid these tests are, since the Operating System is actually accessing virtualized (and not real) hardware. But, if you, as a developer, does not need to access hardware in a low level (and that's generally the case), you can test using a VM just fine.
<Effenberg0x0> ABout VMs:
<Effenberg0x0> A Virtual Machine with  1 or 2 GB of RAM and about 30GB of dynamic disk space is more than enough to test both Unity and unity-2D desktops, as well as the other flavors such as Lubuntu and Kubuntu. Installing VirtualBox is easy, as all you have to do is sudo apt-get install virtualbox. In the case of VMWare-Player, you need to download the VMWare-Player bundle (a binary file) from VMWare website, chmod it +x and run its install procedure.
<Effenberg0x0>  VMWare does have some problems compiling its Kernel modules in the 3.2.x kernel series. But I have made patches available to it, as well as instructions on how to use these patches, and they are posted at UbuntuForums U+1 area. Just search for +Effenberg0x0 +VMWare +Patch and apply the patches if you need to. I can help anyone that falls into trouble installing VMWare-Player on Kernel 3.2.0, just post something at that thread @ UbuntuFor
<Effenberg0x0> ums..
<ClassBot> obounaim asked: do you i always need to download the last ISO to test or doing updates will be fine ?
<Effenberg0x0> And also its important to mention test drive
<Effenberg0x0> obiwlan, DOing the updates is fine for testing instalation, applications.
<Effenberg0x0> BUt if you want to test the ISO itsef, you have to download it
<Effenberg0x0> Something that not everybody knows: Ubuntu has its own testing application, named TestDrive. It is available via Software Center. You can install it using sudo apt-get install testdrive. It downloads/syncs the requested Ubuntu release ISO and starts a Qemu / VirtualBox VM so you can test the latest Ubuntu in an easy and safe way. I recommend using VirtualBox for a single reason: It is capable of OpenGL acceleration. So, it allows you test
<Effenberg0x0>  Unity. Running Qemu and VMWare Player will only allow you to run Unity-2D in the VMs. Ubuntu has great documentation for all these options. Check https://help.ubuntu.com/community/VirtualBox, https://help.ubuntu.com/community/VMware/Player and https://launchpad.net/testdrive.
<Effenberg0x0> Test drive can actually download the images, sync them to the latest, and create the testing VM for you.
<Effenberg0x0> just sudo apt-get install testdrive to try it
<Effenberg0x0> 3)  Separate HDD: Also one of the safest options. We all know it's easy to install Ubuntu to a secondary drive, which can be an internal / external HDD and even an USB/eSATA unit. Ubuntu setup is very easy and clear in how to do this, but information is also available in the documentation. See https://help.ubuntu.com/community/InstallingANewHardDrive for example.
<Effenberg0x0> 4) Separate HDD Partition: This means you'll have your standard OS installed to /dev/sda1 and PP installed to /dev/sda3 (for example). Same as when using a separate HDD, it should be dealt properly by Ubuntu install. There's no mystery to it.
<ClassBot> metasansana asked: what about kvm for virtulisation?
<Effenberg0x0> These two ways above have absolutely no mystery: Ubuntu default install handles it normally. But of course, they are ore risky than runing it in a separate PC or VM.
<cariboo907> kvm or any of ther vms work well
<Effenberg0x0> metasansana: You can use KVM too, but if you'd like to see Unity effects, AFAIK, you have to use VirtualBox, as it provides some hardware acceleration.
<ClassBot> There are 5 minutes remaining in the current session.
<Effenberg0x0> 4) Separate HDD Partition: This means you'll have your standard OS installed to /dev/sda1 and PP installed to /dev/sda3 (for example). Same as when using a separate HDD, it should be dealt properly by Ubuntu install. There's no mystery to it.
<Effenberg0x0> oops
<Effenberg0x0> Another important tip: Few people are familiar with ZSync. It allows you to sync your current image file to the new daily ISO at every time. Only the changed parts of the image will be downloaded, saving time and bandwidth. All the info on how to use ZSync is at https://help.ubuntu.com/community/ZsyncCdImage . After installing ZSync, all you have to do is run something like zsync http://cdimage.ubuntu.com/daily-live/current/precise-deskto
<Effenberg0x0> p-i386.iso.zsync to have your ISO updated. It really helps a lot. RSync can also be used, and the URL above has the (easy) instructions on how to do it in a single command.
<Effenberg0x0> This is actually what most people do, as you can save a lot of time and bandwidth for downloading the daily ISOs
<Effenberg0x0> (and it's how testdrive works too - syncyng the ISO)
<Effenberg0x0> Ok, I'll post now some of the main tips we have for running the development release. We're almost out of time, so excuse for pasting it relly quick. It will be available in logs for you on those who cuoldn't be here today.
<Effenberg0x0> We'll answer questions in the ubuntu-classroom-chat channel after this session.
<Effenberg0x0> 1. The most important thing: Backup. Always. And do it to a safe and external media. Backing up data to the same partition in use in the installation is too risky. Use an external HDD, a USB drive, a separate partition, a network drive, anything. But NEVER forget to backup. It doesn't really matter if you use dejadup, backintime, or tar and rsync, as long as you manage to keep your important data safe. I have created my own bash script to
<Effenberg0x0>  backup stuff I find relevant and rsync it to a network storage, and added it to a cron schedule. But the tools I mentioned have GUI options that allow anyone to easily create a proper backup config and schedule.
<ClassBot> kanliot asked: so i could install lubuntu from the image every day, and use it?
<cariboo907> oops
<cariboo907> kanilot you could if you wanted to
<cariboo907> but there really is no need just do daily updates using the software center synaptic of the command line
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Working with Debian - Instructors: tumbleweed
<cariboo907> or the command line
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<cariboo907> thanks everyone
<tumbleweed> Hi everyone, I'm Stefano Rivera, an Ubuntu MOTU and Debian Developer
<tumbleweed> I live in South Africa, and have been actively working on Ubuntu & Debian for 3 years or so
<tumbleweed> I'm here to talking to you about Working with Debian
<tumbleweed> This is a short session (30 mins) so I've prepared some notes and will go fast. Maybe there'll be time for examples at the end, probably not
<tumbleweed> Laney will take a second session on doing work for Ubuntu *in* Debian, later tonight
<tumbleweed> Reminder to please ask any questions in #ubuntu-classroom-chat, and start them with QUESTION:
<tumbleweed> In fact, if you're listening, please wave in #ubuntu-classroom-chat, so I know how full the room is :)
<tumbleweed> == Why work with Debian? ==
<tumbleweed> err
<tumbleweed> Right, that's the formalities, let's get moving
 * tumbleweed waves to Kerbero, from my LoCo team :)
<tumbleweed> If you followed dholbach's introductory sessions yesterday, you'll know that Ubuntu is largely (~75%) unmodified Debian source packages, rebuilt
<tumbleweed> We like to keep it this way, because we don't actually have that many developers (~170 with upload rights, compared to Debian's ~900), and it makes sense to avoid duplicating work
<tumbleweed> You may not think of yourself as a Debian user, and you probably want to spend your time improving Ubuntu, not Debian, but improving Debian improves Ubuntu.
<tumbleweed> So, where possible, when issues affect both Debian and Ubuntu, we like to get them fixed in Debian and let the fix flow to Ubuntu
<tumbleweed> If it's too urgent for that in Ubuntu, we can fix it directly in Ubuntu, until the next Debian version brings the fix
<tumbleweed> Or if bringing in the next Debian version would bring in some undesired bits (e.g. after Feature Freeze, bring in new features), we can apply the fix directly in Ubuntu, and get the new version from Debian next cycle
<tumbleweed> debian and ubuntu don't have synchronised release cycles, so this kind of thing happens quite often
<tumbleweed> have I  convinced everyone why you should care about debian, and submit patches there (or even upstream, when possible)?
<tumbleweed> I hope so
<tumbleweed> == Maintainership ==
<tumbleweed> That's the motivation, now for a little discussion on the differences in culture between Debian and Ubuntu
<tumbleweed> In Debian, every package has a maintainer who (hopefully) cares for it. The maintainer gets e-mail for all the bugs filed against the package, and is responsible for looking after it
<tumbleweed> In Ubuntu, we don't have strong maintainership, anyone can upload any package without having to ask anyone else (except for some core packages, where we have people / teams that know them really well and probably want to talk to you first)
<tumbleweed> (ok, obviously you need upload rights to upload in debian or ubuntu, but both distributions have sponsorship proceses for new developers without upload rights. And we all started there)
<tumbleweed> Debian also has some teams (they are becoming more common), but every package will also have a human maintaining it
<tumbleweed> You can see who maintains a package by looking it up in the Package Tracking System (PTS) (or by doing an apt-cache showsrc)
<tumbleweed> The PTS URL is http://packages.qa.debian.org/SRC_PACKAGE_NAME
<tumbleweed> I'm referring to source packages everywhere, because that's what developers deal with. Source packages build binary packages, we fix the bugs in the source packages.
<tumbleweed> e.g. here are some packages I maintain:
<tumbleweed>  http://packages.qa.debian.org/beautifulsoup
<tumbleweed>  http://packages.qa.debian.org/pypy
<tumbleweed> You can see links to the equivalent Ubuntu pages in Launchpad, in the Ubuntu box on the right: http://pad.lv/u/beautifulsoup http://pad.lv/u/pypy
<tumbleweed> any questions about that? anyone never come across source packages before?
<ClassBot> kanliot asked: i've never submitted a patch to a maintainer.  what do i need to put in the email
<tumbleweed> right, good question
<tumbleweed> it depends a little on what the patch is for
<tumbleweed> if it's a packaging change, you should say why it's necessary
<tumbleweed> if it's an issue that only affects Ubuntu, not Debian, you should probably say so, and mark the bug minor/wishlist (the maintainer has no obligation to care about Ubuntu :P )
<tumbleweed> generally, it should asy everything that a good bug report usually says (google for how to write a good bug report)
<tumbleweed> what causes the problem, what the problem is, how you propose fixing it
<ClassBot> obounaim asked: where can i find packages to maintain?
<tumbleweed> if you want to take over maintainance of packages yourself, you can look at the list of orphaned packages
<tumbleweed> http://wnpp.debian.net/
<tumbleweed> packages which are "O" are orphaned
<tumbleweed> "RFH" is a request for help, such as help triaging bugs
<tumbleweed> or help co-maintaining it
<tumbleweed> almost all big packages need help like that, all the time
<tumbleweed> "RFA" is request for adoption. The current maintainer would like to hand it over to someone, but still cares enough, not to orphan it
<tumbleweed> and of coures, anyone can propose to bring in new packages, and maintain them
<tumbleweed> see the debian new maintainers guide for more details on that bit
<ClassBot> Ceno asked: I'm developing a free software application and intend to directly support Ubuntu by providing a PPA. Should I register as a maintainer and put together a package and publish for debian first and then somehow create a PPA where I treat my software as an external, upstream project?
<tumbleweed> Ceno: I don't see how that's directly relevant to working with Debian
<tumbleweed> but if you want to get your package into Ubuntu eventually (rather than just keep it in a PPA)
<tumbleweed> then getting into debian is a very good idea
<tumbleweed> Debian is generally a better distribution for maintaining ones onwn packages (the strong maintainership I mentioned)
<ClassBot> metasansana asked: Are there any copyright or legal issues to be aware of when becomming the maintainer for a package?
<tumbleweed> metasansana: You are effectively the person responsible for it
<tumbleweed> it's up to you as the maintainer to review that everything within the package meets the Debian Free Software Guidelines
<tumbleweed> I've never heard of anyone being sued for screwing up there, but packages certainly get removed fro containing non-free bits
<tumbleweed> (the ftp-masters do a licencing check, but it's only a check)
<tumbleweed> hope that answers that
<ClassBot> obounaim asked: What about Ubuntu where can i find packages to maintain?
<tumbleweed> most packages in Ubuntu could use some love
<tumbleweed> pick something that has lots of open bugs, and go through them
<tumbleweed> harvest.ubuntu.com is a great place to find things
<tumbleweed> subscribes to bugs from packages that you care about
<tumbleweed> *subscribe
<tumbleweed> ok, let's press on
<tumbleweed> == Debian's Bug Tracker ==
<tumbleweed> If you look at the top right hand corner of a PTS page, you'll see a bugs box, this gets you to the right bit of Debian's Bug Tracking System (BTS)
<tumbleweed> they're broken down into totals by severity
<tumbleweed> most packages have very few bugs, so the "all" link is what you want
<tumbleweed> You can also go directly to http://bugs.debian.org/src:SRC_PACKGAGE_NAME or http://bugs.debian.org/BUG_NUMBER
<tumbleweed> Unlike Launchpad (although it also has e-mail support), the BTS is driven *entirely* by e-mail
<tumbleweed> You don't have to register for anything
<ClassBot> There are 10 minutes remaining in the current session.
<tumbleweed> you don't need any special permissions
<tumbleweed> you can just e-mail any bug
<tumbleweed> Each bug is filed by sending a specially formated to e-mail to the BTS, and all comments are just replies to the bug's e-mail address.
<tumbleweed> Here's an example: http://bugs.debian.org/505442
<tumbleweed> You can see that I replied to the bug and included some commands to modify the bug (and I CC-ed a special address that parses those commands)
<tumbleweed> You can find out more about the gorey details here: http://www.debian.org/Bugs/ or in last year's UDW session by Rhonda: https://wiki.ubuntu.com/MeetingLogs/devweek1103/GettingYourFixesIntoDebian
<tumbleweed> most of the time, you don't need the fancy bits, and can just reply to e-mail
<tumbleweed> Debian users report bugs with the "reportbug" tool. You should probably use that, or our "submittodebian" tool (in ubuntu-dev-tools)
<tumbleweed> To modify bugs, you may want to use the "bts" tool (in devscripts) (and, if you use mutt, bts show -m is pure awesome)
<tumbleweed> You'll need to set up a way for these tools to send e-mail
<tumbleweed> The first time you run submittodebian, it'll set up a working .reportbugrc that sends directly to the BTS, but you may want to edit that to use your normal SMTP server...
<tumbleweed> == Examples! ==
<tumbleweed> OK, that was the high level overview. Let's squeeze in an example, and any last questions
<tumbleweed> bug 840709:
<tumbleweed> pah, there's no ubottu here
<tumbleweed> http://pad.lv/840709
<tumbleweed> This bug is just a fix for some spelling errors in a package description.
<tumbleweed> If we fixed that directly in Ubuntu, we'd have to carry that change, and merge it into new versions of the package whenever they came from Debian
<tumbleweed> That takes effort, and isn't really worth it in this case
<tumbleweed> So, what the submitter did, was to forward the bug to Debian
<tumbleweed> He downloaded the package source, made the change, and then ran submittodebian
<tumbleweed> This automatically generated a debdiff, and fired up reportbug
<tumbleweed> It's a very handy tool! :)
<tumbleweed> Once he had the bug number (you get it by e-mail), he linked the debian bug to the Ubuntu one, to ease tracking
<ClassBot> There are 5 minutes remaining in the current session.
<tumbleweed> Now we wait for the debian maintainer to apply that patch, and we'll get it for free :)
<tumbleweed> last questions?
<tumbleweed> (you can see the link to the forwarded bug, at the top, it's an extra bug task on "conduit (Debian)"
<tumbleweed> OK, hope that wasn't too fast and people were able to learn something
<tumbleweed> if you need any help in dealing with Debian, as an Ubuntu Developer / contributor, stick your nose into #debian-ubuntu on irc.oftc.net (Debian's IRC network)
<tumbleweed> there are a fair number of people who know Debian & Ubuntu in there
<tumbleweed> also, most of #ubuntu-motu can probably help out
<ClassBot> kanliot asked: if this is as easy as you say, how come its so damn hard for me
<tumbleweed> ^ I love that question!
<tumbleweed> everything is probably quite hard the first time one does it
<tumbleweed> it gets easier :)
<tumbleweed> I can't really say much more without details, but I'm happy to help, if you ask me afterwards
<ClassBot> metasansana asked: you mentioned ~75% so what would be the main diff between ubuntu and debian software
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu Distributed Development - Instructors: barry
<tumbleweed> IIRC about 10% is minor changes (e.g. small bug fixes or dealing with the slightly different environment)
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<barry> hello everyone.  welcome to today's class on ubuntu distributed development (udd).  this is an hour-long class so hopefully we'll be able to get to everyone's questions.  i'll start here in just a minute.  don't forget to join #ubuntu-classroom-chat to ask your questions, prefaced with QUESTION:
<barry> okay, let's get started
<barry> first a little bit of background
<barry> here is the online documentation for udd. note however that it's slightly out of date at the moment.  i just merged a branch that updated a lot of information we're going to cover today, but it hasn't hit the web yet
<barry> http://developer.ubuntu.com/packaging/html/index.html
<barry> hopefully it will very soon now, but you can always grab the ubuntu packaging guide branch and build the html yourself.  ask a question in #u-c-c if you want details on that
<barry> i'm not really planning on covering packaging basics, hopefully you are all familiar with that.  i'm also not going to cover the traditional "apt-get source" way of doing packaging.  it's not strictly necessary that you know about that, but it might help for mapping the traditional way with the udd way.
<barry> if not, don't worry, you can pretty much do everything in udd these days
<barry> okay, so what is udd?
<barry> udd uses launchpad and the bazaar dvcs to do package development.  it has many advantages over the traditional apt-get source way (imho), and while there are still a few warts in the process, the tools are really fantastic these days thanks to the great bzr and lp teams
<barry> i'll also mention that most of what i'll discuss will be focused on using precise as the dev platform.  you can use oneiric, but you will want to get the latest bzr and bzr-builddeb packages from the bzr ppa if you do.  precise has some really great improvements that will make your life easier
<barry> so...
<barry> as you probably know, launchpad keeps bzr branches for all the packages in the ubuntu archive, and also all the packages in the debian archive.  we call these 'source branches'
<barry> lp runs a package importer process so whenever someone uploads a new version of a package, the importer will grab that and update the source branch for the package.  it works in 98% or so of cases.  the importer has some problems with a few packages, but at least now the tools will tell you if that's the case (and then you can drop down to the traditional way for those small number of problematic cases)
<barry> launchpad has source branches not just for the current in-development version of ubuntu and debian, but also for most older versions as well.  e.g. oneiric, lucid, squeeze, etc.
<barry> note that these source branches are distinct from any upstream branches lp may be tracking.  the source branches have the full unpacked source of the upstream as it exists in the ubuntu archive, along with the debian/ directory that is the packaging goodness.
<barry> the source branches also have the full history of the package, both in individual bzr revisions, and as bzr tags for easier access.
<barry> udd then is using these source branches to fix bugs, update to newer upstream versions, merge in new debian versions, build source packages for uploading, etc.  i.e. we now do everything with bazaar
<barry> any questions so far?
<barry> okay then
<barry> so let's say you want to fix a bug in tomboy using udd.  let's start by grabbing the source branch for tomboy in precise
<barry> i always find it useful to do my work in a bzr shared repo.  this amortizes the cost of doing the initial branching.  i personally like a shared repo per package
<barry> so, cd to someplace where you're going to do your work and then type `bzr init-repo tomboy`
<barry> then cd into the tomboy directory
<barry> bzr has a very nice shortcut for accessing the source branches for any package in the in-development version of ubuntu (i.e. precise).  just do this to grab the tomboy source branch:
<barry> bzr branch ubuntu:tomboy precise
<barry> you will end up with a `precise` directory containing the source branch
<barry> as the branching happens, notice two very useful things:
<barry> Most recent Ubuntu version: 1.8.0-1ubuntu1.2
<barry> Packaging branch status: CURRENT
<barry> bzr prints both those lines to your console
<barry> what that is telling you is that the most recent ubuntu version of tomboy (i.e. in precise) is 1.8.0-1ubuntu1.2 *and* that the packaging branch is up-to-date with the state of the archive
<barry> this is great because it means we can use udd to do our development
<barry> remember above i mentioned that the package importer sometimes has problems?  you would see a different message above if the tomboy branch was out of date
<ClassBot> jincreator asked: In common package, is maintainer the only one who can edit package?
<ClassBot> kanliot asked: i think i know what a bzr repo is, but what's a shared repo?
<barry> kanliot: a shared repo is just a parent directory that contains all the bazaar revision metadata.  it's nice to use because let's say you want to make a change to tomboy as described above.  when you do that in a shared repo, 99.9% of the revisions are going to be shared by your two branches.  all that shared metadata lives in the parent directory's .bzr directory.  so using a shared repo makes it super cheap to branch and merge
<barry> kanliot: hopefully that answers your question.  if not ask again, and i can dig up some bzr docos that explain it better
<barry> okay, depending on your bandwidth, you hopefully have the precise source branch for tomboy
<barry> i'll just mention a couple of things.  notice we used the ubuntu: prefix?  well, there's also a debianlp: prefix which can get the current debian version of the package (in wheezy, a.k.a. the in-development version)
<barry> if we wanted to get the lucid version of a package we would use
<barry> ubuntu:lucid/tomboy or abbreviated ubuntu:l/tomboy
<barry> abbreviations don't work for debian branches, but you can still do things like
<barry> debianlp:squeeze/tomboy to get the squeeze version of the package
<barry> okay, let's get back to our example
<barry> we've got the precise version of tomboy and now we want to create a branch to work on our fix.  let's say we're working on bug 12345.  we might do something like this:
<barry> bzr branch precise bug-12345
<barry> that should go really fast in a shared repo
<barry> go ahead and cd into bug-12345 and ls
<barry> you will see all the upstream source code, plus a debian directory
<barry> the debian dir contains all the packaging stuff of course
<barry> if we did nothing else, we could build a source package for local building and testing, by doing this:
<barry> bzr bd -S
<barry> this is roughly equivalent to debuild -S
<barry> we can also do normal package development stuff like
<barry> dch -i
<barry> and so on
<barry> a quick word about package systems
<barry> er, s/package/patch/
<barry> if you're an experienced packager you know that in general, we prefer to provide fixes to packages using a patch system, quilt being the most popular and recommended these days
<barry> the important thing to remember is that source branches already have all the patches applied
<barry> so once you get a source branch, you're ready to dig right in
<barry> it's equivalent to having already done `quilt push -a`
<barry> this generally makes things much nicer, but there are a few small gotchas we'll hopefully have time to get to
<barry> inside your bug-12345 branch, do this: quilt applied
<barry> that will show you that all the quilt patches in tomboy are already applied
<barry> let's say bug 12345 just described a typo in the debian/control file.  okay, this is easy to fix
<barry> you use your favorite editor to fix the typo
<barry> then you use dch -i to add an entry to debian/changelog
<barry> if you're happy with the change, you can then do:
<barry> bzr commit
<barry> what's nice about this is that your commit message will be taken from your changelog entry, so generally you can just use that directly
<barry> once you've committed your change, build your source package:
<barry> bzr bd -S
<barry> in the shared repo (i.e. the parent of bug-12345), you'll have the .dsc .orig.tar.gz and so on
<barry> you can test and upload these as normal
<barry> before you upload though, do one other thing:
<barry> bzr tag
<barry> (with no options).  this will add a tag matching the new changelog entry version number.  super easy!
<barry> you can then merge this back into the source branch by doing this:
<barry> cd ../precise
<barry> bzr merge ../bug-12345
<barry> bzr commit
<barry> bzr push :parent
<barry> that last bit pushes your updates back to launchpad (assuming you have permission to do so, i.e. you have upload rights on the package)
<barry> note that you'll still need to dput the package
<barry> what if you don't have upload rights?
<barry> in that case, you submit a merge proposal so that a package maintainer or sponsor can help you get your changes uploaded
<barry> in that case
<barry> stay in the bug-12345 directory.  after you've committed and tagged, do the following:
<barry> bzr push lp:~barry/ubuntu/precise/tomboy/bug-12345
<barry> substituting your own lp id for ~barry of course
<barry> the last path component is up to you.  i like naming it after the bug i'm fixing
<barry> once the branch is pushed, do the following:
<barry> bzr lp-propose
<barry> that will create a merge proposal with all the right details, and open your browser to that page
<barry> a sponsor can then review your changes, work with you to ensure they are correct, and help you get your changes uploaded
<barry> i'll pause a moment for questions
<barry> okay.  the next topic i'd like to cover is merging updates from debian or upstream using udd
<barry> let's say upstream tomboy releases a new version and you'd like to get that into ubuntu.  for whatever reason, you're going to do this without going through debian first
<ClassBot> fjrodriguez asked: What are upstream branches?
<barry> fjrodriguez: by "upstream branches" we can mean a couple of things.  because debian is an upstream of ubuntu, we could mean the version of the package in debian.  more typically though, we mean the code from the upstream project itself, although these will generally be tar.gz files or similar and not actual dvcs branches
<barry> (or non-d vcs branches)
<barry> i.e. when tomboy makes a new release, we're going to call the new  .tar.gz file the "upstream" version
<barry> does that make sense?
<barry> so let's say that tomboy releases version 2.0 and we want to put this in ubuntu (the following commands likely won't work since this is a hypothetical situation)
<barry> if the source branch, i.e. ubuntu:tomboy has a working debian/watch file, and we're lucky, we should just be able to do the following:
<barry> bzr merge-upstream
<barry> this command will grab the upstream tarball from the web, do a bunch of magic <wink>, and leave you with a branch of uncommitted changes that include an updated source code, and new debian/changelog entries for the new upstream version
<barry> everyone know what a debian/watch file is?
<barry> if the debian/watch file doesn't work, you can provide more options to bzr merge-upstream to help it along.  do `bzr merge-upstream --help` for details.  i'm going to skip ahead 'cause we have only 15 minutes left
<barry> kanliot: a debian/watch file contains a url pattern for how to find the upstream released tarball
<barry> the uscan command reads debian/watch and this can be used to find the latest released tarball (by checking version numbers).  `bzr merge-upstream` uses uscan under the hood to download that tarball
<barry> more common than getting a new upstream version into ubuntu is merging a new debian version of the package into ubuntu
<barry> jincreator: yes, debian/watch is packaging basics and not specifically udd related.
<ClassBot> There are 10 minutes remaining in the current session.
<barry> so let's say debian wheezy has tomboy 1.9 while ubuntu has tomboy 1.8.0.  we want to merge the debian version into the ubuntu version
<barry> in this case, let's assume that launchpad has the latest debian source branch
<barry> we can create a new local branch of ubuntu:tomboy, e.g.
<barry> bzr branch precise mergedeb
<barry> then cd in mergedeb and do this
<barry> bzr merge debianlp:tomboy
<ClassBot> kanliot asked: what are some specific scenarios where i would need bzr?  would it help if the debian source is downstream of an upstream source on sourceforge.net?
<barry> kanliot: one of the primary reasons for using bzr is if you want to work on packages for which you don't have upload rights.  by creating branches, pushing them to lp, and submitting merge proposals, you can gain street cred for your fixing, ubu devel, and packaging skills, and a sponsor can help you with the last little bit of getting your changes uploaded
<barry> does that make sense?
<barry> kanliot: lp is abbreviation for launchpad
<barry> it's the central hub for all ubuntu development
<barry> kanliot: correct.  bzr can be used in some cases for debian, but it's not as universal as it is for ubuntu
<ClassBot> There are 5 minutes remaining in the current session.
<barry> and debian has a different culture and workflow for package development, which i can't go into here ;)
<ClassBot> jincreator asked: Why Most recent Debian Version is "MISSING" when I merge from debian?
<barry> jincreator: that's an artifact of launchpad not knowing exactly what's in the debian archive.  i believe there is a bug open on this to try to improve that message
<barry> for now, you'll always get it when referring to debianlp: branches
<barry> well, i was hoping to get to using udd to work with quilt patches, because there's some really fantastic new stuff in precise about this, but there really isn't time.  i'll stick around #ubuntu-classroom-chat if you want to talk about that or you can always ping me on #ubuntu-devel
<barry> and the url for the packaging guide will have much better and simpler instructions on this soon
<ClassBot> benonsoftware asked: WHat CVS does Debian use Git, SVN, etc? (Sorry if I missed this part as I just came in :P)
<barry> benonsoftware: that's a little outside the scope of today's class, but different teams use different things.  e.g. the python packaging teams typically use svn
<barry> any other questions in our last 2 minutes?  my apologies for going so quickly and/or cutting things short due to time
<barry> let me add in closing that there are lots of places to learn about udd, ask questions, get help etc.
<barry> there is a udd mailing list: ubuntu-distributed-devel@lists.launchpad.net
<barry> i am always on #ubuntu-devel
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Working in Debian - Instructors: Laney
<barry> #bzr can also be very helpful
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<Laney> Hi there!
<Laney> Thanks barry (also for reminding me that I need to remember to update Tomboy in Precise :P)
<Laney> My name is Iain and I'm an Ubuntu Developer and also a Debian Developer. I've been around these parts for a few years now.
<Laney> I'm going to tell you a bit today about how you can contribute directly to the Debian project.
<Laney> There's a /lot/ (really) to know in this area, way more than I could cover in a 30 minute session, so I'll mainly be trying to give you a feel of what exists and where you can go for help. I'll provide links wherever I can.
<Laney> As you've been told in other sessions, Ubuntu is what's known as a Debian derivative. This means that most of the software that Ubuntu users use comes in from the Debian project's packages.
<Laney> We generally take what's in Debian, modify it if we need to, recompile it and then make it available to the users of Ubuntu. This process is more or less automatic depending on where we are in the cycle and depending on the particular package concerned.
<Laney> In the majority case (for Universe at least), packages are copied ("synced") automatically from Debian at the start of every Ubuntu release cycle. After this automatic period ends, developers can request copies to be performed by using a simple script.
<Laney> This https://merges.ubuntu.com/universe-now.png is an image I like to link to which shows that the majority of packages in Universe are unmodified Debian packages (the Unmodified and Needs Sync) sections.
<Laney> The Modified and Needs Merge sections are Debian packages which Ubuntu developers have modified for one reason or another. We try to keep this to a minimum as far as possible, as every Ubuntu change adds a small piece of manual maintenance.
<ClassBot> ryan___ asked: Is Ubuntu still considered a full Debian derivative even though Ubuntu uses its own shell for GNOME (Unity)?
<Laney> Hi ryan__, that's a good question. Ubuntu has always selected its own 'default' experience, even when we were shipping a more-or-less vanilla GNOME desktop.
<Laney> There will always be cases when it is necessary for Ubuntu to diverge from Debian, but the default remains that we take our packages from there, and our processes are set up for this.
<Laney> I want to outline a couple of reasons why you might want to contribute your work to Debian directly
<Laney>  - Debian is upstream to a large number (http://wiki.debian.org/Derivatives and more) of derivatives, of which Ubuntu is just one. By working up there your work will have a larger impact; you'll reach all users of Debian /and/ all derivatives.
<Laney>  - You'll also be able to benefit from Debian's QA infrastructure, not all of which Ubuntu has just yet (although we are moving more in this direction)
<Laney>  + Regular archive rebuilds to catch build failures that may have cropped up since the initial upload
<Laney>  + Automated installation and upgrade tests (http://piuparts.debian.org/)
<Laney>  + Automated build log scanning for common detectable problems (https://buildd.debian.org/~brlink/)
<Laney>  + The Package Tracking System (PTS), which is a handy dashboard that is personalised to each package. Here's the page for the 'mono' package: http://packages.qa.debian.org/m/mono.html
<Laney> You can see that there are links to details about the maintainers, automatically detected problems (as mentioned above), an overview of the bug situation and much more information. It's a really handy tool that I genuinely use all the time when checking out Debian packages (set up a browser keyword for it)
<ClassBot> ryan___ asked: Since Ubuntu is a Debian derivative, does Ubuntu contain packages that Debian doesn't currently contain?
<Laney> That's right. Being a derivative implies that a lot of the packages are the same, but not all. Some packages (e.g. unity) are so-called Ubuntu local packages meaning that they are not in Debian yet.
<Laney> The goal is to get this number as close to zero as possible, but for various reasons this isn't always so easy.
<Laney> --
<Laney> A key difference (possibly the one which has the most implications) is that of maintainership. In Ubuntu every single package is maintained by a team (either the Core Developers or the MOTUs). In Debian each package has its own maintainer. This may be one or more individuals or it may (increasingly commonly) be an organised packaging team (http://wiki.debian.org/Teams#Packaging_teams).
<Laney> This means that you always (actually only usually, as we'll see later) have a point of contact for each package, who is supposed to be an expert on that package.
<Laney> It may also be a slight disadvantage in that this person can 'block' progress if they are unresponsive for one reason or another.
<Laney> Teams are becoming increasingly common, and are a great way of finding people with a shared interest. One excellent way to get involved with Debian development is to find a team that interests you from the link above and join their IRC channel or mailing list.
<ClassBot> There are 10 minutes remaining in the current session.
<Laney> For example, if you have a Haskell package, you could post about it to the Debian Haskell Group's mailing list and you'll receive help from exactly those people who have the most knowledge about Haskell packaging. This information is, imho, much more accessible to a newcomer than the corresponsing information in Ubuntu.
<ClassBot> ryan___ asked: Are there package teams in the Ubuntu project?
<Laney> There's not so much a culture of having formal teams in Ubuntu as there is in Debian. What you might tend to find is some individuals have an interest in a package (which you can usually discover by searching the changleog)
<Laney> There are some teams though, for example the desktop team takes care of some packages and the server team some other.
<Laney> The difference, as I said, is that even though the teams exist, they do not have exclusive control of their packages. Any developer is free to develop them. This isn't really the case in Debian, where you usually have to work with the Maintainer.
<Laney> --
<Laney> Since we've only got a few minutes left I'll quickly give you some links
<Laney> One useful document is the Debian developers' reference (devref), which describes the expectations that debian has of its maintainers and how to use some of the services available to them
<Laney>  
<ClassBot> There are 5 minutes remaining in the current session.
<Laney> http://www.debian.org/doc/manuals/developers-reference/ (some iof this is only applicable to DDs)
<Laney> The New Maintainers' guide is also interesting both as a packaging guide and an introduction to the social dynamics in Debian
<Laney> http://www.debian.org/doc/manuals/maint-guide/
<Laney> The Debian Bug Tracking System (BTS) is an extremely important tool which is quite difficult to grasp at first (due to its email driven nature)
<Laney> http://www.debian.org/Bugs/Reporting and there are other documents linked fro http://bugs.debian.org
<Laney> reportbug is also a great tool for reporting bugs in debian, and `bts' in the devscripts package
<Laney> There are many mroe resources available from http://www.debian.org/devel/
<Laney> If you've got questions when getting involved with development in Debian, try contacting either the Debian mentors team (http://mentors.debian.net / debian-mentors@lists.debian.org / #debian-mentors @ OFTC)
<Laney> there are many friendly people there who will be able to help you out
<Laney> another very useful resource is the Derivatives Frontdesk http://wiki.debian.org/DerivativesFrontDesk
<Laney> This was set up to help collaboration between Debian and its derivatives. Members can be contacted on debian-derivatives@lists.debian.org  / #debian-ubuntu @ OFTC
<Laney> This is /extremely useful/ if you're an Ubuntu contributor having trouble figuring out how something in Debian is supposed to work (or need help finding a sponsor, or anything similar).
<Laney> Right, out of time. I had some more to say
<Laney> But I've made a little primer and put it up on the wbe here: http://people.debian.org/~laney/working-in-debian.html
<Laney> Feel free to email me or grab me on IRC if you have any questions.
<Laney> Happy Debianing :-)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Starting with HTML/CSS - Instructors: benonsoftware
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<benonsoftware> Hello and welcome to Starting with HTML/CSS
<benonsoftware> If you have any questions at all perface them with QUESTION: You question here? in #ubuntu-classroom-chat
<benonsoftware> Today I'll be teaching the basics of HTML and CSS and hopefully moving up
<benonsoftware> Ok, first if you have a look at any webpage soruce by right clicking then selecting View Soruce
<benonsoftware> It may look it bit scary at first but its easy to understand
<benonsoftware> First all webpages should have a DOCTYPE at the start of it to tell you its a X/HTML 4.0/4.1/5 type of page
<benonsoftware> Most newer websites are using <!DOCTYPE html> for their webpages as it is the HTML 5 doctype
<benonsoftware> I would just like to note 2 things, 1. You can ask questions any time in #ubuntu-classroom-chat
<benonsoftware> and 2. I am the website team leader for TouchLay and a website dev for SII
<benonsoftware> Now after the <!DOCTYPE html> there should be <html>
<benonsoftware> Now everything inside <html> or <p> is called a tag
<benonsoftware> and all tags must be closed:
<benonsoftware> Say if I have a <p> tag to close it (stop it) I would type </p>
<ClassBot> ryan___ asked: Is the web page title inside <title> a tag?
<benonsoftware> ryan__: Yes, inside <html> is a <head> which desribs the page and the tag <title> its in there
<benonsoftware> So for example:
<benonsoftware> <!DOCTYPE html>
<benonsoftware> <html>
<benonsoftware> <head>
<benonsoftware> <title>Google</title>
<benonsoftware> </head>
<benonsoftware> Now inside the <head> tag is usally lots of things to help out with Search Engines and the like
<benonsoftware> Lets move onto <body>
<benonsoftware> Now the <body> tag is usally what everyone else sees on the page, so all of the text and images are inside here
<benonsoftware> So usally after the start of <body> is usally the page heading inside the <h1> tag
<benonsoftware> Now was the <hx> tag it can go up from <h1> to <h6> with <h1> being the biggest heading and <h6> being the smallest heading
<ClassBot> ryan___ asked: Is the page background color/image also in <body>?
<benonsoftware> ryan__: There is 3 ways, inside <body>, inside <head> (with CSS) and using a CSS style sheet
<benonsoftware> I would just like to note that if I do not cover eveything here I am free for questions afterwards and I'll do another session at a later time
<benonsoftware> Images:
<benonsoftware> Now to inseart a image into a HTML file you do:
<benonsoftware> <img alt=" " src="slice_0_0.jpg" style="width: 180px;  height: 173px; border-width: 0px;"></td>
<benonsoftware> Sorry, remove the final </td> tag as it will not work with just that :)
<ClassBot> ryan___ asked: I may have a lot of questions, so  instead of asking them here, do you have an email address I could email you at?
<benonsoftware> ryan__: I sure do, anyone can contact me at benny @ ubuntu.com
<benonsoftware> Now where <img alt=" " inside the " " you have to write a one or two words about the image in case of people using screen readers or cannot view the image
<benonsoftware> and inside src="slice_0_0.jpg" you have to replace slice_0_0.jpg with your image name
<benonsoftware> Usally people place their images inside a images sub folder so you would then do, images/image1.png for src=" "
<benonsoftware> Now with <p>;
<benonsoftware> <p> is where most people's content goes.
<benonsoftware> So if I wanted to write Web dev is great! on a webpage I would use:
<benonsoftware> <p>Web dev is great!</p>
<benonsoftware> <p>
<benonsoftware> means paragraph
<ClassBot> There are 10 minutes remaining in the current session.
<benonsoftware> So if you close it then open another <p> tag there would be a one line space inbetween
<benonsoftware> But if you just want to start a new line then you would use:
<benonsoftware> <br>
<benonsoftware> or <br />
<benonsoftware> Please note that the line break tags do NOT close
<ClassBot> isgjevori asked: Do we have to close the <img> tag ?
<benonsoftware> isgjevori: In the img tag example I showed you, you can see at the end of it the is ">, that closes it
 * benonsoftware is not talking about the </td> tag there
<benonsoftware> palladin35y asked: What is CSS?
<benonsoftware> palladin35y: CSS stands for Cascading Style Sheets and they help you desribe how your webpage should look with colours and the like
<benonsoftware> I will if there is enough interest run a session on but CSS in a few weeks time
<benonsoftware> With a few minutes left any questions?
<ClassBot> There are 5 minutes remaining in the current session.
<benonsoftware> Next session is Fixing small bugs in Unity with Trevinho and andyrock
<ClassBot> isgjevori asked: Can we put tags like <img> or <blink> ect in a Css file?
<benonsoftware> isgjevori: From what I have read no
<ClassBot> fjrodriguez asked: What software do you use to create html pages?
<ClassBot> nava asked: (please write some article of basic html and css and put it on web to others can download and learn fast) do u teach css 3 and html 5 in next weeks ?
<benonsoftware> fjrodriguez: I just use any old notepad program and save the file as .html
<benonsoftware> Page if you Google around there is some good What you see is what you get editors
<benonsoftware> nava: Well I may in the next month or two but some things about CSS and HTML on my website at www.benonsoftware.com and I might teach about CSS in the next month too
<benonsoftware> Also everything covered here in HTML5 too
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu  Developer Week - Current Session: Fixing small bugs in Unity - Instructors: Trevinho, andyrock
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html following the conclusion of the session.
<Trevinho> Hello all
<andyrock> hey all! :)
<Trevinho> To begin let's introduce ourselves...
<Trevinho> We were two Unity Community hackers
<Trevinho> that after hacking on the unity and nux code get contracted by Canonical
<Trevinho> to develop unity for 12.04
<andyrock> Now we're working on bug fixing
<Trevinho> This describes our work, anyway we're two Italian guys... That's why we're often called "The Italians" on our team
<andyrock> and to implement small features
<Trevinho> We're getting here thanks to the work that we started as community guys, lead by the passion on the free software development
<andyrock> So as by description, this session is about Unity and after bug fixing in Unity
<Trevinho> First of all...
<Trevinho> Why contributing to unity?
<Trevinho> Well... The first reason can be simple... As it's a quite new software with a very important role and as every software is not bug free
<Trevinho> so... We need to squash them out
<Trevinho> to make unity and so the main ubuntu interface to rock
<Trevinho> Then personally, you can enjoy to work on a big piece of software
<Trevinho> that will be used by millions of users
<andyrock> From my point of the view, contributing to unity (and open source software in general) can be an opportunity to learn a lot of cool stuff
<Trevinho> Also... If unity doesn't fill exactly to your needs maybe you can work on it to improve it.. That's the main reason I joined at the beginning
<andyrock> instead of criticizing without doing anything :)
<Trevinho> Or finally, you can just join the development to be welcomed by Jorge in a such way, once you're at the UDS: http://www.flickr.com/photos/trevi55/5701699276/in/photostream
<Trevinho> ;)
<Trevinho> Ok... I think you got what we meant...
<Trevinho> By the way if you're here, maybe the main thing you want is start doing something for our beautiful shell
<Trevinho> So... Let's start
<Trevinho> First of all... Talking about unity we talk about an (united) ecosystem... So Unity is just one of the projects that makes the "unity experience" possible
<Trevinho> The main launchpad branches you should start to branch and look are
<Trevinho> lp:bamf - for the Windows /applications matching and management
<Trevinho> lp:nux as the widget library
<Trevinho> lp:libunity
<Trevinho> and then
<ClassBot> nava asked: what basics we should know to help in unity project (i mean programming language) ?
<Trevinho> lp:unity
<andyrock> nava, basic c++
<Trevinho> Yes, nux and untiy are in C++
<Trevinho> while bamf is in C and libunity in Vala
<andyrock> autopilot in pythong
<Trevinho> So, I was listing the projects... lp:unity is anyway the "core" of our shell... Basically is a compiz plugin that gets loaded when compiz runs, but to do many patches this shouldn't worry you
<andyrock> without the g :)
<Trevinho> So.. To get started on development, first of all, we suggest to always stay up-dated to the last ubuntu version
<Trevinho> *development version*
<Trevinho> so precise, now
<Trevinho> Then, to install the main dependencies you can use the unity-team staging ppa
<Trevinho> that is at https://launchpad.net/~unity-team/+archive/staging
<Trevinho> and you can get the needed dependencies by doing something like
<Trevinho> sudo apt-get build-dep unity
<andyrock> keep in mind the staging ppa can break your pc :)
<Trevinho> yes, that's the coolest part :)
<andyrock> most of the time, you'll need to play with nux
<andyrock> so it can be useful
<andyrock> sudo apt-get build-dep nux
<andyrock> btw to build unity from trunk read here http://askubuntu.com/questions/28470/how-do-i-build-unity-from-source
<andyrock> now that we know how to build unity, let's talk about what bugs we can solve :)
<Trevinho> Now... If you want to start, you'd maybe remember the famous "bitesize list"... Well that's still valid and you can check it at https://bugs.launchpad.net/unity/+bugs?field.tag=bitesize
<andyrock> But if you want to be really useful you can fix the "backlog bugs"
<andyrock> https://bugs.launchpad.net/unity/+bugs?field.tag=backlog
<Trevinho> All these bugs are also listed in this more useful page: http://people.canonical.com/~platform/design/upstream.html
<Trevinho> that shows the bugs that have more design priority
<andyrock> A bitesize bug is a really simple to solve bug (or at least is should be easy to solve)
<andyrock> Let's talk about the backlog bugs
<andyrock> What is a backlog bug?
<Trevinho> You can also subscribe to the unity bugs at https://bugs.launchpad.net/unity
<andyrock> A backlog is a feature that needs to be implemented
<andyrock> a feature or an improvement to a feature
<andyrock> as you can see we have a quite long backlog list :/
<andyrock> So the first step is: "Decide what bug do you want do solve"
<Trevinho> Once you've decided... You just need to branch unity (or the project you want to fix)
<Trevinho> So for example, considering unity
<Trevinho> just do
<Trevinho> bzr branch lp:unity
<andyrock> then
<andyrock> cd unity
<andyrock> mkdir build
<andyrock> cd build
<Trevinho> cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DCMAKE_INSTALL_PREFIX=/usr
<Trevinho> this will configure your branch to be compiled
<Trevinho> ensuring that you've all the dependencies needed
<Trevinho> At this point the hardest thing begings
<Trevinho> that's coding your feature
<Trevinho> now... If you need some documentations for the libraries we mostly use
<Trevinho> you can go to http://developer.ubuntu.com/resources/platform/api/
<andyrock> So let's say we want to fix this bug
<andyrock> he document that andyrock just linked is another useful tool you can use to understand how unity is made
<andyrock> sorry :)
<andyrock> http://www.google.it/url?sa=t&rct=j&q=alt%20%2B%20f4%20dash&source=web&cd=1&ved=0CCsQFjAA&url=https%3A%2F%2Fbugs.launchpad.net%2Fbugs%2F891818&ei=6LApT52gI8jc4QSr_bzYAw&usg=AFQjCNFLgM3TIF4Q5cR-2yTt7uWI_6rxgw&sig2=3e3RioCBKXjA-b4MgZFDxA
<andyrock> sorry again :)
<andyrock> https://bugs.launchpad.net/bugs/891818
<andyrock> Dash - dash is not closed with alt+f4
<andyrock> The first thing to do so is to study
<andyrock> and the first question is: "What is the best way to solve this bug"
<andyrock> Maybe we can just intercept the alt+f4 key and the close the dash
<andyrock> but there is a best way...
<andyrock> intercept a WM_DELETE_WINDOW message
<andyrock> that is send from the windows manager when you press alt+f4
<Trevinho> You can get this by using xev for example
<Trevinho> an useful tool to understand what's going on an X window...
<Trevinho> if you run it on a terminal and you do Alt+F4
<andyrock> Why this is the best wat to do this?
<Trevinho> you get an output:
<Trevinho> ClientMessage event, serial 36, synthetic YES, window 0x6400001,
<Trevinho>     message_type 0x13a (WM_PROTOCOLS), format 32, message 0x138 (WM_DELETE_WINDOW)
<andyrock> Why this is the best wat to do this?
<andyrock> because it's easy to test
<andyrock> and because if you change the key binding to close a window
<andyrock> the code will continue to work :)
<ClassBot> kedde asked: Is it possible to set up a breakpoint in an IDE?
<andyrock> kedde, yes, but you need to do it using gdb
<andyrock> from another tty
<andyrock> so alt+ctrl+f1
<andyrock> login
<andyrock> then
<andyrock> DISPLAY=:0 unity --advanced-debug
<andyrock> or
<andyrock> DISPLAY=:0 gdb --args compiz --replace
<andyrock> Let's return to our bug...
<ClassBot> There are 10 minutes remaining in the current session.
<andyrock> so what we want to do is to intercepet that event
<andyrock> you should know that the dash has an associated X window
<andyrock> so we'll use that window to receive the event
<andyrock> but we have a little problem :)
<andyrock> we should add the support in nux
<andyrock> to send the event to unity
<andyrock> and this is the tricky part of this bug :)
<andyrock> Now've not the time to go into the details
<ClassBot> There are 5 minutes remaining in the current session.
<Trevinho> Yes.. Anyway in that case basically you need to make nux get that event and to emit to a BaseWindow
<Trevinho> then on the Unity side you only have to connect to that event and close the window
<Trevinho> Now, in Precise we're also focusing a lot on testing
<Trevinho> and on quality
<Trevinho> so, tetsing can be another way to contribute to the project
<Trevinho> We have many ways to test...
<andyrock> Google test for example
<andyrock> http://code.google.com/p/googletest/
<Trevinho> They mostly depends on what you should test
<Trevinho> so, we use google test when we have to just check a data structure, for example
<Trevinho> or we use Autopilot https://wiki.ubuntu.com/Unity/QA/Autopilot to autogically move unity and check if it's doing the right thing
<Trevinho> Give a look to Autopilot, it could be fun to test with it
<Trevinho> So, we slightly shown the process we generally follow when doing something for unity
<Trevinho> what we can say is that it's not that hard
<Trevinho> if you know a little the language and you can use grep, you can just start to scratch your itches from now
<Trevinho> fixing the bugs the most are breaking your head
<Trevinho> Just branch unity, and have fun
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/01/%23ubuntu-classroom.html
<Trevinho> If you want, you can also check to our branches to see how to do things https://code.launchpad.net/~3v1n0/unity and https://code.launchpad.net/~andyrock/unity
* 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 ||
<andyrock> thank you guys
<Trevinho> Thank you all
<Trevinho> Hope to see your code in launchpad, and to review it! ;)
<benonsoftware> That was a fast hour :P
#ubuntu-classroom 2012-02-02
<TheYsNoi_> hi there
<ysnoi> checking
<dnewkirk> exit
<metasansana> red green
<metasansana> green red
<raju> #ubuntu-irc
<raju> aah i am sorry command  command problem ,really sorry
<BlueProtoman> Anyone here mind helping me out with my hardware acceleration?  I still can't get it working.  Ubuntu 11.04, Intel HD 3000 and nVidia GeForce 520M, both controlled via Optimus.  I've tried this https://github.com/Bumblebee-Project/Bumblebee/wiki/Troubleshooting and https://github.com/Bumblebee-Project/Bumblebee/wiki/Upgrading-on-Ubuntu , and after resetting numerous times I still have no luck.
<TheYsNoi> lunch break..
<TheYsNoi> installing hoN
<ashickur-noor> What is BTW?
<ashickur-noor> *this
<TheYsNoi> by the way?
<lexiadmin> ?
<Pritam_chaingang> h
<Pritam_chaingang> me wiki
<Pritam_chaingang> whois
<Pritam_chaingang> WHOIS
<Pritam_chaingang> nick Pritam_chaingang
<raju> Pritam_chaingang:  may i help you ? here this channel is for classroom session
<Pritam_chaingang> quit
<Pritam_chaingang> Quit
<Pritam_chaingang> yes yes
<Pritam_chaingang> i am not able to enable my wireless in ubuntu
<Pritam_chaingang> how do i do that
<Pritam_chaingang> it was working before
<sbte> Pritam_chaingang, please ask your questions about Ubuntu in #ubuntu
<Pritam_chaingang> quit
<Partyschaum> lol
<Pritam_chaingang> CHAT
<Pritam_chaingang> when is the class
<Partyschaum> Pritam_chaingang: see topic
<Pritam_chaingang> thanks
<Abvayad> Hello
<Abvayad> .
<tachyons> .
<metasansana> :P
<seb128> hey
<nigelb> Heya! :)
<abvayad> l
<dholbach> Welcome everybody to day 3 of Ubuntu Developer Week!
<dholbach> Before I hand over to seb128, here a few organisational bits
<dholbach> If you haven't joined #ubuntu-classroom-chat yet, please do it
<dholbach> it's where we chat and ask questions
<dholbach> and if you do ask questions, please prefix them with QUESTION:, ie:
<dholbach> QUESTION: What should be the default language in Ubuntu?
<dholbach> also, check out https://wiki.ubuntu.com/UbuntuDeveloperWeek because we added logs for all the sessions which happened yesterday and the day before
<dholbach> and tomorrow morning I'll go and add session logs for today
<dholbach> How has UDW been for you up until now? :)
<dholbach> I'm glad at least one person is answering in #ubuntu-classroom-chat ;-)
<dholbach> you all have 2 minutes left to wake up or get something to drink before my good friend SÃ©bastien seb128 Bacher takes over
<dholbach> enjoy! :)
<seb128> oh, drink!
 * seb128 grabs a glass for water
<seb128> dholbach, hey btw, how was *your* week? ;-)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Fixing Desktop bugs - Instructors: seb128
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<seb128> ok, it's time to start
<seb128> thanks everybody for joining
<seb128> I'm Sebastien Bacher and working in the Ubuntu Desktop Team
<seb128> I will show you a bit of what you do in the desktop team today
<seb128> first some infos, you can find us on #ubuntu-desktop on this IRC channel
<seb128> or that mailing list: https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop
<seb128> feel free to join to ask question, participate to discussion or help doing work ;-)
<seb128> so let's get started, what we do in the desktop team is basically keeping the desktop in shape
<seb128> which means
<seb128> - keeping the components updated
<seb128> - fixing bugs
<seb128> - looking to your bug reports
<seb128> - talking to our upstreams (GNOME, Debian, dx, etc)
<seb128> you can find some pointers and documentation on https://wiki.ubuntu.com/DesktopTeam/
<seb128> I will first walk you through a backport of an upstream GNOME git commit to one of our packages
<seb128> note that the desktop team packages use a different workflow for most part than the "UDD" new standard workflow
<seb128> the reason are basically that it works better for us still and we wait for a few extra issues to get sorted with UDD (mostly quilt handling and download times)
<seb128> you can read https://wiki.ubuntu.com/DesktopTeam/Bzr to get some details on our workflow
<seb128> so
<seb128> let's start by fetch a source
<seb128> we will use gnome-control-center in that example
<seb128> for that you usually want to use "debcheckout <source>"
<seb128> $ debcheckout gnome-control-center
<seb128> in this case
<seb128> which should give you something around those lines
<seb128> bzr branch http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu gnome-control-center ...
<seb128> then it's downloading the source for you
<seb128> wait a bit for that to be done and you should get that:
<seb128> $ ls
<seb128> gnome-control-center
<seb128> gnome-control-center_3.2.2-2ubuntu5.debian.tar.gz
<seb128> gnome-control-center_3.2.2-2ubuntu5.dsc
<seb128> gnome-control-center_3.2.2.orig.tar.bz2
<seb128> the first one is a checkout of the vcs directory
<seb128> the other files are the source package from the archive
<seb128>  
<seb128> let's have a look to the dir
<seb128> hum, demo effect, that didn't do what I wanted today on precise
<seb128> will have to look into that
<seb128> so what it should have done and what I'm doing now it's what it wrote
<seb128> which is basically
<seb128> bzr branch lp:~ubuntu-desktop/gnome-control-center/ubuntu g
<seb128> bzr branch lp:~ubuntu-desktop/gnome-control-center/ubuntu
<seb128> ok, now I got what I wanted ;-)
<seb128> let's visit that directory
<seb128> cd ubuntu
<seb128> $ ls
<seb128> debian
<seb128> so you get a debian dir there, it's where we will do our work
<seb128> to continue you will need the bzr-builddeb and the build-depends of gnome-control-center
<seb128> so assuming that you have the deb-src for oneiric or precise enable you can type those commands
<seb128> sudo apt-get install bzr-builddeb
<seb128> sudo apt-get build-dep gnome-control-center
<seb128> the second one will install all the Build-Depends for gnome-control-center, i.e what you need to build it
<seb128> now you should be set
<seb128> so we are in the debian directory
<seb128> rather in the ubuntu dir
<seb128> bzr bd-do will give you a shell environement where you can do changes
<seb128> whatever change you do that in the debian directory will be applied to the vcs checkout you did when you exit 0
<seb128> if you exit with something else than 0 you will not get the changes copied over
<seb128> let's assume for the exercice than we want to backport the fix from http://git.gnome.org/browse/gnome-control-center/commit/?h=gnome-3-2&id=81fb28de5cf8708932224f482a8923322191b00f
<seb128> ie http://git.gnome.org/browse/gnome-control-center/patch/?id=81fb28de5cf8708932224f482a8923322191b00f
<seb128> so you did bzr bd-do and are in an unpacked source of gnome-control-center
<seb128> let's save the content of that commit in a file, name it git_backport_printer_fix.patch
<seb128> new you do
<seb128> quilt import git_backport_printer_fix.patch
<seb128> Importing patch git_backport_printer_fix.patch (stored as git_backport_printer_fix.patch)
<seb128>  
<seb128> the patch is imported
<seb128> let's check that it applies well
<seb128> $ quilt push
<seb128> Applying patch git_backport_printer_fix.patch
<seb128> patching file panels/printers/cc-printers-panel.c
<seb128> Now at patch git_backport_printer_fix.patch
<seb128>  
<seb128> it does
<seb128> let's refresh it
<seb128> $ quilt refresh
<seb128> Refreshed patch git_backport_printer_fix.patch
<seb128> so all good
<ClassBot> There are 10 minutes remaining in the current session.
<seb128> we have our patch, it applies to our package and we refresh it
<seb128> we are happy about it
<seb128> we can exit
<seb128> $ exit 0
<seb128> it bring you back to your vcs dir
<seb128> let's see where we stand
<seb128> $ bzr statusmodified:
<seb128>   debian/patches/series
<seb128> unknown:
<seb128>   debian/patches/git_backport_printer_fix.patch
<seb128> ok
<seb128> so the series got updated, and we have a new file
<seb128> $ bzr diff
<seb128> === modified file 'debian/patches/series'
<seb128> --- debian/patches/series	2012-01-25 16:38:52 +0000
<seb128> +++ debian/patches/series	2012-02-02 15:18:21 +0000
<seb128> @@ -25,3 +25,4 @@
<seb128>  93_change_window_role_on_panel_change.patch
<seb128>  94_git_adding_shortcuts.patch
<seb128>  95_git_ctrlw_shortcut.patch
<seb128> +git_backport_printer_fix.patch
<seb128>  
<seb128> the patch got added to the serie
<seb128> we need to add the file to the vcs, that was not done for us
<seb128> so we use
<seb128> $ bzr add debian/patches/git_backport_printer_fix.patch
<seb128> adding debian/patches/git_backport_printer_fix.patch
<seb128> at this point we are mostly good
<seb128> we need still to update the changelog
<seb128> type
<seb128> dch -i
<seb128> and write a changelog entry
<seb128>  * backport fix from git (lp: #...) for example
<seb128> then you can bzr diff again
<seb128> you get a new revision with a backported patch ready to test!
<seb128> now to test it's easy, run bzr bd
<seb128> it will build the new version for you
<seb128> if you don't have a gpg key matching your changelog email don't worry, it will warn you about that, that's ok
<seb128> your deb are in ../build-area after the build
<seb128> you can go there, sudo dpkg -i *.deb and try the new version
<seb128> if you are happy with the change go back to the ubuntu dir
<seb128> $ bzr commit
<seb128> to commit you work
<seb128> then
<seb128> $ bzr push lp:~yourlaunchpadid/gnome-control-conter/my-fix
<seb128> $ bzr lp-submit to do a merge proposal
<seb128> and wait for us to review your work ;-)
<seb128>  
<ClassBot> There are 5 minutes remaining in the current session.
<seb128> ok, that was basically it for a patch backport, 5 minutes left
<seb128> questions?
<ClassBot> dholbach asked: Will Wanda the Fish ever come back?
<seb128> dholbach, it's still in gnome-panel upstream, you can "free the fish" in the dash but it's not as cool as the vuntz' version I've been told and will not go around you screen ;-)
<ClassBot> jincreator asked: I tried debcheckout but only get debian folder, not having ,dsc, .debian.tar.gz, .orig.tar.bz2.
<seb128> jincreator, that's probably better, seems the tools changed behaviour in precise which confused me
<seb128> you probably got the equivalent of my second command
<seb128>  
<ClassBot> ali1234 asked: don't you need to export QUILT_PATCH_DIR?
<seb128> good point, I'm sorry about that
<seb128> it's one of those suboptimal thing you have to do, I did it years ago and forgot :p
<seb128> you need to "export QUILT_PATCHES=debian/patches"
<seb128> put that in your environement then you can forget about it like me :p
<seb128>  
<ClassBot> ali1234 asked: what if the package doesn't use quilt but something else?
<seb128> I couldn't cover all the patch systems there
<seb128> you can use edit-patch (great tool that mvo wrote) than wrap around the different patch systems
<seb128> it will do the quilt magic for you, or call cdbs-edit-patch or similar
<seb128>  
<seb128> one minutes left and no question
<seb128> seems we are good ;-)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Triaging Desktop bugs - Instructors: om26er
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<om26er> Hey! should we start
<om26er> Hello! my name is Omer Akram. I have been in Ubuntu since mid 2009 and have been active in the community since then. I am a Ubuntu BugSquad and Bug control member. I also am a Bug Triager for Unity and the related projects. I had my first ever date yesterday <3
<om26er> So in this session I am going to discuss about how to triage desktop bugs efficiently. We receive hundreds of Bug reports in Ubuntu daily. There are basic two types of Bugs. 1 functionality problem 2 Crash :-)
<om26er> the crash are the dangerous ones and are mostly hard to fix
<om26er> A bug in a software is a fault that creates problems for people using it, it could be visual, functional etc
<om26er> The role of Ubuntu bugsquad is to complete bug reports. i.e. to add any missing information, clear up the description of the bug report and make the report clean and simple so that the developers spend more time in fixing the issue then looking through bugs.
<om26er> I have in bugsquad long enough I believe, we always get new contributors some who really do triage like crazy for so many hours
<om26er> Bugs with proper steps to reproduce are the one's that really are USEFUL bugs or if they have a proper crash stacktrace.
<om26er> the steps to reproduce are really very important
<om26er> there are like 90000 bugs logged in launchpad and I believe there are many of those useless
<om26er> i.e. the reporters didn't care to report enough details etc
<om26er> lets say for example this bug https://bugs.launchpad.net/ubuntu/+source/unity/+bug/904348
<om26er> the reporter reported the bug and did not bother to mention the problem really
<om26er> its totally not related to Unity and needs to be relocated to some other package, he didnot mention detailed when the problem started
<om26er> so our (BugSquad
<om26er> responsibility here is that we should inquire the reporter to send more information about the issue so that the bug can be triaged easily
<om26er> We do not handle questions in Bug reports so please people don't ask questions in Bug reports we have an answers section in launchpad for that.
<om26er> the above was one example of useless bugs ;)
<om26er> Sometimes people throw a bunch of issues into one single bug report that is really not a good thing when reporting a bug.
<om26er> thats another type
<om26er> our most beloved type is ofcourse called the RANT type :p
<om26er> so to talk business, if you are want to start help Ubuntu Bug triage could be a good entering point
<om26er> since you learn alot while triaging bugs, a bit about branches and stuff
<om26er> If you are starting/thinking to start helping in Ubuntu bug triage you should join the Ubuntu BugSquad that is the team to handle bug reports in Ubuntu.
<om26er> Most of the bugs in Ubuntu are Upstream
<om26er> whats upstream?
<om26er> actually every software have an upstream :P
<om26er> upstream means the developers the people writing the software
<om26er> SO out bugs need to be sent to the package's upstream
<om26er> Empathy for example our chat client in Ubuntu have the nice batch of developers, who are really helpful and quick to response.
<om26er> bugs reported by Ubuntu users in Launchpad for empathy need to be sent to bugzilla.gnome.org where the empathy upstream project is hosted
<om26er> (oh boy I feel I am typing quite fast, never really typed that much)
<om26er> the upstream developers would fix bugs which they understand so if people report useless bug reports you should not send the report straight upstream you should first try to get a good set of information from the reporter in launchpad and then send the bug to Bugzilla so that the developers don't get headaches ;-)
<om26er> we really need to keep our upstreams happy
<om26er> I actually think if someone, A Ubuntu user really wants to help Ubuntu he/should just go to software-properties and enable the -proposed repository and help test the proposed bug fixes
<om26er> this is a very useful guide about how to triage: https://wiki.ubuntu.com/Bugs/HowToTriage/
<om26er> I read it quite a lot when I was applying for Ubuntu bug control
<om26er> so who are Bug Control
<om26er> well they are the next step after bugsquad, bug control people are those who set importance to bug reports, and assign bugs to developers and nominate bug for any specific release
<ClassBot> There are 10 minutes remaining in the current session.
<om26er> We use stock responses for bug reports for example If a bug report is missing its steps to reproduce I would not just go and say "you are missing the steps to reproduce the problem"
<om26er> but we choose a more respectful approach and use the stock responses for Bugs  https://wiki.ubuntu.com/Bugs/Responses
<om26er> so for this specific case of missing steps we use:
<om26er> Thank you for taking the time to report this bug and helping to make Ubuntu better. Please answer these questions:
<om26er> * Is this reproducible?
<om26er> * If so, what specific steps should we take to recreate this bug?
<om26er> This will help us to find and resolve the problem.
<om26er> I remember a few of the initial bugs I reported in Ubuntu so the response came very humble from seb128 that the issue was upstream one and I should report it there...
<om26er> I really was like these are good people they respect.. this is what I got the first reply for my very intial bug report
<om26er> .
<om26er> Thank you for taking the time to report this bug and helping to make Ubuntu better. The issue you are reporting is an upstream one and it would be nice if somebody having it could send the bug to the developers of the software by following the instructions at https://wiki.ubuntu.com/Bugs/Upstream/GNOME. If you have done so, please tell us the number of the upstream bug (or the link), so we can add a bugwatch that will inform us about its st
<om26er> atus. Thanks in advance.
<ClassBot> There are 5 minutes remaining in the current session.
<om26er> that thanks 2 times really inspired me, these Ubuntu people are so kind. so these responses really matter
<om26er> in summary, a useful bug report is the one that is reprodueable with steps
<om26er> a useful bug report have a visual attached i.e. a screenshot or video to show the problem
<om26er> a good bug report is easy to understand
<om26er> Now a good BugTraiger is the one who is patient
<om26er> since the reporters can sometime really be Pain in... :D
<om26er> Desktop bugs needs YOU
<om26er> Ubuntu needs You :)
<om26er> new contributors are always welcome
<om26er> look at me I only triaged bugs and now I am a Ubuntu Member, Gnome Foundation member and Work for Canonical
<om26er> (well contract for canonical :p)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Simple Lenses with Singlet - Instructors: mhall119
<om26er> I guess the time is ending
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<mhall119> thanks om26er
<mhall119> bug triaging really helps developers keep up, and anybody can do it
<mhall119> alright, welcome everybody
<mhall119> so what is Singlet?
<mhall119> well, it's a python library for writing Unity lenses
<mhall119> but Lenses are just DBus and GObject, they don't *need* a dedicated python library
<mhall119> in fact, many community lenses are already being written in python withut Singlet
<mhall119> so then, why Singlet?
<mhall119> because as a Python developer, I hate GObject and DBus
<mhall119> it's not that they're bad technologies, it's just that they're not "pythonic"
<mhall119> so using them in python feels unnecessarily complicated
<mhall119> I wrote my first 2 Unity lenses using them, and Singlet developed out of that
<mhall119> so Singlet itself works to hide all of those non-pythonic bits from you, so as a developer you get a nice, clean, simple interface
<mhall119> Singlet does this with a combination of traditional object-oriented abstraction, and a bit of Python meta-class programming
<mhall119> http://mhall119.com/2011/12/writing-unity-lenses/ gives an introduction and has some example source code
<mhall119> whoops, wrong link
<mhall119> http://mhall119.com/2012/01/simplified-unity-lens-development-with-singlet/
<mhall119> that one
<mhall119> if anybody here has done any Django programming, it should look familiar to you
<mhall119> that's because I borrowed heavily form the way Django used simple Python classes as models, and from there can automatically do a lot of the boiler-plate work for you
<mhall119> Singlet does the same, you give it a little meta-data to describe your lens
<mhall119> define some categories
<mhall119> and then implement the search() method
<mhall119> and behind the scenes it's instantiating the GObject classes you'll need and connecting everything to DBus for you
<mhall119> Singlet also includes helper commands for running your Lens as a daemon process, and generating the .lens and .service files needed to install it, all from the meta-data you provide
<mhall119> any questions so far on what Singlet is?
<mhall119> alright, moving along
<mhall119> the example given in http://mhall119.com/2012/01/simplified-unity-lens-development-with-singlet/ shows how to make a simple Lens with one built-in Scope
<mhall119> if you attended davidcalle and mhr3's Lens session on Tuesday, you'll know that they can either exist in the same code, or separate code
<mhall119> In Singlet 0.1, which only works on Oneiric, this was all it could do
<mhall119> but Singlet 0.2, which was upgraded for Precise, introduces the ability to separate them
<mhall119> http://mhall119.com/2012/01/singlet-part-0-2/
<mhall119> Singlet 0.2 is being packaged for Precise, and will be available in the default repositories
<mhall119> this means you can write lenses and scopes that use Singlet, and make them easily installable
<mhall119> Now you don't *have* to use Singlet to write a Python lens, but it cuts the amount of code you need to write to get one started in half
<mhall119> and it also means that you have a compatibility layer between your code and any possible API changes
<mhall119> for example, in the move from Unity 4(Oneiric) to Unity5(Precise), the Lens API changed
<mhall119> but Singlet's API didn't
<mhall119> so a Lens written for Singlet 0.1 on Oneiric would be able to run without modification on Singlet 0.2 on Precise
<mhall119> As for packaging, sometime soon we will have a Quickly template for writing Singlet lenses and scopes
<mhall119> for anybody not familiar with Quickly, it's a tool for rapid application development
<mhall119> it'll create any files and directories you need to get started on a specific kind of project (like command-line program, desktop app, or Unity lens)
<mhall119> it also provide packaging files for you, so that your app can be uploaded to the Ubuntu Software Center
<mhall119> there are already  a handful of Unity lenses and scopes in the Software Center
<ClassBot> There are 10 minutes remaining in the current session.
<mhall119> and with Singlet + Quickly, we'll open the door for opportunistic developers to put together lenses that will feed their desired content directly into the Unity dash
<mhall119> Lenses are one of the most exciting and unique features for extending Unity, and I expect to see a large number of them being developed for Ubuntu 12.04
<mhall119> and, hopefully, a large number of them will be doing it with Singlet
<mhall119> alright, any questions before I'm out of time?
<mhall119> alright, thanks to those you attended
<mhall119> anybody interested can get the project and code from https://launchpad.net/singlet
<mhall119> and the above blog entries will serve as a tutorial for writing Singlet lenses and scope, at least until I can put a more formal tutorial together
<ClassBot> There are 5 minutes remaining in the current session.
<mhall119> alright, I guess I'll turn things over to tumbleweed then
 * tumbleweed waves
<tumbleweed> I was still writing some notes, but no reason not to start a couple of minutes early :)
<tumbleweed> Hi everyone,
<tumbleweed> Some of you may have been at the session I took yesterday afternoon, on working with Debian
<tumbleweed> For everyone else, hi, I'm Stefano Rivera, an Ubuntu MOTU and Debian Developer
<tumbleweed> I'm here to talk to you about building packages locally with pbuilder
<tumbleweed> If you followed Daniel Holbach's introduction on Tuseday, you'll have already set up pbuilder, using pbuilder-dist. https://wiki.ubuntu.com/MeetingLogs/devweek1201/DevEnvironmentSetup
<tumbleweed> If you haven't, install ubuntu-dev-tools and pbuilder right now, and run "pbuilder-dist precise create" (it'll take quite a while)
<tumbleweed> Maybe you'll be done by the end of the session... :)
<tumbleweed> As you can imagine from its name, pbuilder is a tool for building Debian packages
<tumbleweed> (Ubuntu packages aren't any different)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Building locally with pbuilder - Instructors: tumbleweed
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<tumbleweed> aha, we've officially started now
<tumbleweed> If you haven't used pbuilder before, you make wonder what the point is: Anyone can just build a source package by extracting it and running debuild, right?
<tumbleweed> Well, you need all the build dependencancies installed, so you're machine will quickly end up with lots of packages that you don't really need installed.
<tumbleweed> Your machine will have packages installed in it that the official build machines don't
<tumbleweed> All packages in the main archive are built in restricted build environments on buildds (build machines)
<tumbleweed> so, just building locally with debuild may give different results
<tumbleweed> (with well behaved packages it doesn't, but we probably spend more time on the badly behaving ones, right? :)
<tumbleweed> The buildds run a program called sbuild to do the builds. It installs the build dependencies in a minimal chroot, builds the package, and then throws away the chroot
<tumbleweed> We'd like to have a similar environment for testing builds
<tumbleweed> Something we can use to find likley build failures before we upload
<tumbleweed> (you do test before uploading, right?)
<tumbleweed> and to help us debug failures
<tumbleweed> Launchpad has PPAs, using the same build systems an the primary Ubuntu archives, why do you need to build things locally?
<tumbleweed> Well, there are a few reasons:
<tumbleweed> Launchpad's PPA builders can get rather backed up, sometimes the queue gets as long as a few days (currently they are quite short, though: https://launchpad.net/builders )
<tumbleweed> Your machine is probably faster than some of the buildds (at least mine is :P )
<tumbleweed> You don't have to bump the version every time you want to try a build
<tumbleweed> You can log into the build environment and debug things, when they go wrong
<tumbleweed> ^ That one is the killer feature
<tumbleweed> So, we want to set up a reproducable minimal build environment locally, that we can use for testing package builds and debugging them
<tumbleweed> You could use sbuild, like the buildds, or you could use pbuilder, which is simpler and easier to customise.
<tumbleweed> ere's also cowbuilder, which is a "faster pbuilder", but I won't bother going into that, if you're reaching the limits of pbuilder, I suggest also looking at sbuild
<tumbleweed> err "There's"
<tumbleweed> Personally, I build everything with sbuild, but I'm here to talk about pbuilder, so that's what I'm doing :P I used to use it, there's nothing wrong with it
<tumbleweed> now seems to be a good time to see if I've actually got an audience
<tumbleweed> anyone currently building a pbuilder chroot?
<tumbleweed> anyone run into trouble already?
<tumbleweed> So, details:
<tumbleweed> What pbuilder does:
<tumbleweed> When you create a chroot, it debootstraps a clean install into a directory (debootstrap is a very low level tool for minimal Debian/Ubuntu installs)
<tumbleweed> It then packs up that directory into a tarball.
<tumbleweed> Whenever you do a build, it upacks that tarball, chroots into the unpack directory, and does the build.
<tumbleweed> The directory can be deleted afterwards
<tumbleweed> (It's worth noting that sbuild used to be far more complicated, using LVM, but these days it supports overlay filesystems, so it's totally reasonable to set it up locally)
<tumbleweed> So, how come I'm talking about pbuilder when I told you to run "pbuilder-dist" ?
<tumbleweed> Well, it turns out that pbuilder is very flexible, but doesn't come with all the features you'd want, out the box
<tumbleweed> It assumes that you are building everything for a single distribution and release (which makes some sense in Debian, but less so in Ubuntu)
<tumbleweed> So, we have a wrapper around pbuilder in ubuntu called pbuilder-dist
<tumbleweed> All it does is call pbuilder with a bunch of command line options (you can see that with a ps x)
<tumbleweed> It also puts the chroot tarbals and built files into a friendly ~/pbuilder/ rather than /var/cache/pbuilder/
<tumbleweed> before pbuilder-dist, most people used to use complicated pbuilder configuratino files that did all of that for them
<tumbleweed> figuring out what release to build for, from environment variables
<tumbleweed> e.g. https://wiki.ubuntu.com/PbuilderHowto#Multiple_pbuilders
<tumbleweed> pbuilder-dist makes it a lot quciker for you to get started
<tumbleweed> Right, so, if you have a working pbuilder, you can test building something in it
<tumbleweed> grab a package that'll build quickly, here's one I can think of, beautifulsoup:
<tumbleweed> $ pull-lp-source -d beautifulsoup
<tumbleweed> $ pbuilder-dist precise beautifulsoup_3.2.0-2build1.dsc
<tumbleweed> and it should build...
<ClassBot> coolbhavi asked: How to get pbuilder log files?
<tumbleweed> pbuilder will store a log file next to the build output
<tumbleweed> so, next to the debs, you should see a file called beautifulsoup_3.2.0-2build1_amd64.build
<tumbleweed> (or i386, if you use i386)
<tumbleweed> Next up: pbuilder maintainance
<tumbleweed> it's not very useful to build in last week's development environment, Ubuntu development releases move fast
<tumbleweed> you always want to build with current packages
<tumbleweed> so, every now and then (say, when you start working on something for the first time in the day, run pbuilder-dist update precise)
<tumbleweed> (you may set up a cronjob for that if you do this a lot)
<ClassBot> coolbhavi asked: I heard about pbuilder and pdebuild whats the difference between them?
<tumbleweed> right, pdebuild is like "debuild" for pbuilder
<tumbleweed> you can run it inside an extracted source package, and it'll build the source package, and pass it to pbuilder
<tumbleweed> unfortunetly, we don't have a pdebuild for pbuilder-dist (there's a bug requesting one)
<tumbleweed> so it's not very useful for pbuilder-dist users
<tumbleweed> OK, onwards!
<tumbleweed> right, so you updated your pbuilder 3 hours ago, and it's already clearly out of date, because you are seeing 404 errors during the dependancy installation phase
<tumbleweed> it'd make a lot more sense to make it update itself at the start of the build
<tumbleweed> fortunately, pbuilder comes with a "hook script" feature
<tumbleweed> you can make it run programs at certain times
<tumbleweed> (you can read all the gorey details in the pbuilder manpage)
<tumbleweed> there are a few nice example scripts in /usr/share/doc/pbuilder/examples/ that I want to bring to your attention
<tumbleweed> hrm, I swear there used to be a D90update script there, but I don't see one
<ClassBot> There are 10 minutes remaining in the current session.
<tumbleweed> anyway, I have my own, which just runs "/usr/bin/apt-get update"
<tumbleweed> handy for making sure the package lists are up to date before building
<tumbleweed> there are also examples (debc and lintian) for outputting useful information at the end of the build
<tumbleweed> debc shows you what's in the built packages
<tumbleweed> lintian does some cursory checks on the packages
<tumbleweed> (all of this ends up in your build log, and is very handy for debugging)
<tumbleweed> the dpkg-i script tries to install and remove the packages that were built
<tumbleweed> this can pick up problems in the maintainer scripts
<tumbleweed> (you can also do this separately with piuparts)
<tumbleweed> and by far the most useful one, C10shell
<tumbleweed> this is awesome
<tumbleweed> when a build fails, it dumps you in a shell, inside the build chroot
<tumbleweed> so you can play around, and figure out what went wrong and how to fix it
<tumbleweed> I highly recommend enabling it
<tumbleweed> how do you use these? Well you create a directory in your home directory, traditionally ~/.pbuilder-hooks
<tumbleweed> then you put HOOKDIR=$HOME/.pbuilder-hooks in your .pbuilderrc
<ClassBot> jincreator asked: You mentioned "pbuilder-dist update precise" but I think it is "pbuilder-dist precise update"...
<tumbleweed> jincreator: that may be true, I'm rusty
<tumbleweed> I know it does offer some leewaywith getting arguments in the wrong order
<ClassBot> There are 5 minutes remaining in the current session.
<tumbleweed> another pretty cool thing you can do with pbuilder is to build on a different architecture
<tumbleweed> if instead of saying "precise" you say "precise-i386", it'll create an i386 chroot on your amd64 system. Handy
<tumbleweed> you can even build armel packages on i386/amd64, through emulation with qemu-user-static
<tumbleweed> It'll sometimes not work, but it mostly does
<tumbleweed> (I'm talking about qemu there, sometimes it segfaults unexpectadly)
<tumbleweed> final questions?
<tumbleweed> Sorry that was crazy fast, 30 min slots are short...
<tumbleweed> There are lots of people who know pbuilder, cowbuilder and sbuild backwards, who hang out in #ubuntu-motu, feel free to ask us questions any time
<ClassBot> alucardni asked: how can I set pbuilder to build the package twice?
<tumbleweed> You just say --twice
<tumbleweed> That's really handy for finding packages that don't clean correctly
<tumbleweed> that is, their clean rule doesn't cleanup everything that the build created / modified
<tumbleweed> OK, I'm done, thanks for listening
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer  Week - Current Session: Writing Crisp Changelogs - Instructors: coolbhavi
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<coolbhavi> thanks tumbleweed for the great session
<coolbhavi> Hi all I am Bhavani Shankar a 24 year old ubuntu developer from India
<coolbhavi> I am going to take you through what is meant by a changelog in general and how to write effective changelogs in the ubuntu sphere
<coolbhavi> Before we start off please download a package (totem for instance) and when we navigate through the source tree we find files named ChangeLog, NEWS, et.al
<coolbhavi> So lets start :)
<coolbhavi> == Meaning of a changelog ==
<coolbhavi> A changelog is nothing but a log or record of changes made to a project or a software
<coolbhavi> == The basic funda behind a Changelog ==
<coolbhavi> Naming convention of a changelog file generally is a txt file with a name as ChangeLog
<coolbhavi> Sometimes its also called by CHANGES or HISTORY
<coolbhavi> (It may be brought to notice that sometimes some packages/software have a file called NEWS is usually a different file reflecting changes between releases, not between the commits)
<coolbhavi> Some Version control systems are able to generate the relevant information that is suited as a changelog.
<coolbhavi> == General Format of a changelog file ==
<coolbhavi> Most changelog files follow the following format
<coolbhavi> YYYY-MM-DD  Joe Hacker  <joe@hacker.com>
<coolbhavi>     * myfile.ext (myfunction): my changes made
<coolbhavi>     additional changes
<coolbhavi>     * myfile.ext (unrelated_change): my changes made
<coolbhavi>     to myfile.ext but completely unrelated to the above
<coolbhavi>     * anotherfile.ext (somefunction): more changes
<coolbhavi> (These files are generally organised by paragraphs defining a unique change wrt a function or a file)
<coolbhavi> More on changelogs and changelog formats here: http://www.gnu.org/prep/standards/html_node/Change-Logs.html
<coolbhavi> ok now moving on,
<coolbhavi> == Ubuntu and Changelogs ==
<coolbhavi> The changelog file pertaining to a Ubuntu package is stored in the debian directory under the name changelog according to debian policy
<coolbhavi> Debian policy defines its changelog to be in this format:
<coolbhavi> package (version) distribution(s); urgency=urgency
<coolbhavi>      	    [optional blank line(s), stripped]
<coolbhavi>        * change details
<coolbhavi>          more change details
<coolbhavi>      	    [blank line(s), included in output of dpkg-parsechangelog]
<coolbhavi>        * even more change details
<coolbhavi>      	    [optional blank line(s), stripped]
<coolbhavi>       -- maintainer name <email address>[two spaces]  date
<coolbhavi> In particular, The date has the following format:
<coolbhavi>      day-of-week, dd month yyyy hh:mm:ss +zzzz
<coolbhavi> which is got by running the date -R command in a terminal
<coolbhavi> where:
<coolbhavi>     day-of week is one of: Mon, Tue, Wed, Thu, Fri, Sat, Sun
<coolbhavi>     dd is a one- or two-digit day of the month (01-31)
<coolbhavi>     month is one of: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
<coolbhavi>     yyyy is the four-digit year (e.g. 2012)
<coolbhavi>     hh is the two-digit hour (00-23)
<coolbhavi>     mm is the two-digit minutes (00-59)
<coolbhavi>     ss is the two-digit seconds (00-60)
<coolbhavi>     +zzzz or -zzzz is the the time zone offset from Coordinated Universal Time (UTC). "+" indicates that the time is ahead of (i.e., east of) UTC and "-" indicates that the time is behind (i.e., west of) UTC. The first two digits indicate the hour difference from UTC and the last two digits indicate the number of additional minutes difference from UTC. The last two digits must be in the range 00-59.
<coolbhavi> It can be worth mentioning here that the entire changelog must be coded in UTF-8 (normally taken care by dch command)
<coolbhavi> for more info on the dch command please see man dch
<coolbhavi> More explanation on the fields of the changelog file here: http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog
<coolbhavi> Now moving on further
<coolbhavi> == Do's and Donts ==
<coolbhavi> <kanliot> QUESTION:  When are changelogs used, and who is responsible for putting them in.  also, where are they placed?
<coolbhavi> kanliot, changelogs are used as a log for tracking changes in projects or software usually the project maintainers write the changelogs its usually placed in the source tree under the name ChangeLog with a txt extension normally and in debian/ubuntu the package chanelogs are placed in debian/changelog
<coolbhavi> so moving on with do's and donts
<coolbhavi> The purpose of writing a changelog generally is to make sure you document all the changes and history in a most readable n understandable manner :)
<coolbhavi> Below are few points to effective changelog writing
<coolbhavi> Fewer Assumptions: Try to make lesser assumptions about a particular user knowing something about a particular package so it ll help bringing out better detail and understandability
<coolbhavi> Start with the easiest part first and push the more complex/more technical part at the end to make it a interesting read
<coolbhavi> Grouping: Group the common stuff and related changes under a heading called summary to make it easier to understand
<coolbhavi> Whitespaces: Give appropriate whitespaces to make a clean looking formatted changelog
<coolbhavi> Summarising: Adding a one line summary of the change at the top makes the reader to get a overview of what the change is meant to be
<coolbhavi> Closing the bugs via changelog while submitting a patch to a bug for sponsor review
<coolbhavi> last but not the least, spellchecks!
<coolbhavi> The following link gives few examples of debian/changelog writing http://pastebin.com/kQHazZ8y
<coolbhavi> Please Remember that changelog writing becomes easy by practice!
<coolbhavi> Sorry for hurrying the session up due to 30 min time slot
<ClassBot> There are 10 minutes remaining in the current session.
<coolbhavi> Please feel free to ask any questions on the same
<coolbhavi> <kanliot> QUESTION ARE you going to go into the actual command to generate the changelogs?
<ClassBot> There are 5 minutes remaining in the current session.
<coolbhavi> after you type the changelog  debuild will use dpkg-parsechangelog and dpkg-genchanges to generate a changes file
<coolbhavi> QUESTION: are the * - and + in that example file just arbitrary bullet points or do they have a special meaning in changelogs?
<coolbhavi> the bullet points are used for distinguishing between the main summary of changes and a detailed description for formatting
<coolbhavi> <jincreator> QUESTION: Sometimes my changelog sentence become too log for 1 line. What is the best way to solve it?
<coolbhavi> wrap up the line to be around 80 charecters
<coolbhavi> <jsjgruber-lernid> QUESTION: ââShould you create changelogs before or after you merge changes into a repo?
<coolbhavi> after doing the changes before merging the same its always preferable to document changes
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting started with contributing to Ubuntu Documentation - Instructors: jbicha
<coolbhavi> Thanks all of you for turning up :) Please feel free to hang out at #ubuntu-motu or #ubuntu-devel for any questions.
<coolbhavi> You can also catch me up on bhavi@ubuntu.com or facebook.com/bshankar
<coolbhavi> Thanks all again!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<jbicha> Hi, I'm Jeremy Bicha and I'm a volunteer member of Ubuntu's Documentation and Desktop teams.
<jbicha> I joined the Documentation Team a year ago as Ubuntu badly needed help with integrating the new GNOME User Guide
<jbicha> with Ubuntu documentation where we obviously use Unity by default instead of GNOME Shell.
<jbicha> Today, I'd like to show you how you can get started with contributing to Ubuntu's documentation.
<jbicha> I really like that you don't need to really be a coder to write good documentation; you just need good English writing skills and attention to detail.
<jbicha> If you visit our team's wiki page, you can see that there are several different areas we work on.
<jbicha> https://wiki.ubuntu.com/DocumentationTeam
<jbicha> There is the help wiki which anyone can edit and all you need is a Ubuntu One/Launchpad account.
<jbicha> https://help.ubuntu.com/community
<jbicha> One thing that's confused me in the past about Ubuntu's wiki is that there are actually two of them!
<jbicha> help.ubuntu.com is a reference for Ubuntu-related "how-to's, tips, tricks, and hacks" whereas wiki.ubuntu.com is a resource for contributing to Ubuntu so it has pages for all the different Ubuntu teams you can join.
<jbicha> So if you want to contribute help guides, you can do that at help.ubuntu.com/community.
<jbicha> Secondly, the Ubuntu Docs Team is responsible for the help that's shipped inside Ubuntu and the other Ubuntu flavors (Kubuntu, Xubuntu, etc.)
<jbicha> You can see this system help if you type help into the dash in Unity.
<jbicha> This help is also mirrored to https://help.ubuntu.com/11.10/ubuntu-help/
<jbicha> There's several different ways you can help out with the system documentation.
<jbicha> You can read the help and file bugs if you see typos.
<jbicha> https://bugs.launchpad.net/ubuntu/+source/ubuntu-docs/
<jbicha> Since this is Developer Week, I'd also like to show you can submit fixes in the same format we use.
<jbicha> Run this command in Terminal:
<jbicha> bzr branch lp:ubuntu-docs
<jbicha> It may take a while depending on how fast your internet connection is, but that copies the source code from the Launchpad servers.
<jbicha> You can then use gedit or your favorite text editor to open up one of the pages.
<jbicha> Open up ubuntu-docs/ubuntu-help/help/C/unity-introduction.page for instance.
<jbicha> The first 20 lines or so are special information that sets the page title, keeps track of the page authors and the last time it was formally reviewed and other similar information.
<jbicha> Then you have the actual content. Each paragraph must start with <p> and end with </p>.
<jbicha> The Ubuntu Desktop Guide is written in Mallard (older docs or non-GNOME stuff use a similar but slightly more complex format named Docboook). More information about the format and a 10-minute introduction can be found at http://projectmallard.org/
<jbicha> The Mallard format is pretty cool as it is designed to be topic-based, as opposed to older computer help which read more like a manual or a book with chapters
<jbicha> We're trying to convert more and more GNOME apps to use it because it is more useful as I believe most people want to read an answer to their problem or a how-to for a specific task instead of trying to page through a longer document with chapters
<jbicha> We'd love it if other projects like KDE switched to the format too but that hasn't really happened yet
<jbicha> Anyway, you probably also want to bookmark http://blogs.gnome.org/shaunm/files/2012/01/mallardcheatsheet.png or https://gitorious.org/projectmallard/mallard-cheat-sheets/trees/master
<jbicha> that lets you see all the additional features you can add to your Mallard help files in one easy location
<jbicha> After you've made your changes (fixed a typo or added some extra information for instance), navigate in your terminal to the ubuntu-docs folder and run
<jbicha> bzr commit
<jbicha> This will open up nano (by default) where you should type in a description of what changes you've made. Then hit Ctrl+O to save and Ctrl+X to exit the editor.
<jbicha> Then you can run bzr push lp:~/ubuntu-docs/my-changes You'll want to definitely use something more descriptive than "my-changes" to describe what you've done.
<jbicha> Then open https://code.launchpad.net/~ in your web browser
<jbicha> Click the name of the branch you just pushed to
<jbicha> And then click the Propose for Merging button
<jbicha> the target branch should say lp:ubuntu-docs
<jbicha> you can add a description if you like, but you should probably leave the reviewer field blank, then click Propose Merge
<ClassBot> There are 10 minutes remaining in the current session.
<jbicha> If you have any questions, you can ask them now
<jbicha> Also, you can visit #ubuntu-docs or ask on our mailing list https://lists.ubuntu.com/mailman/listinfo/ubuntu-doc
<jbicha> the Ubuntu Documentation team and GNOME Docs team definitely could use your help
<ClassBot> There are 5 minutes remaining in the current session.
<jbicha> the Ubuntu Docs team is all-volunteer and we're always looking for more contributors
<ClassBot> jincreator asked: Can Mallard import ubuntu docs to pdf?
<jbicha> yes, you can but I'm going to have to get back with you about how that works
<jbicha> (since we're nearly out of time)
<jbicha> but Mallard already has exporters for html, xhtml, epub, and I believe pdf
<jbicha> thanks for your 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 Developer Week - Current Session: Automated packaging with pkgme - Instructors: james_w
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%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 || Event: Ubuntu Developer Week - Current Session: Syncing your app data everywhere with U1DB - Instructors: aquarius
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<aquarius> Hi, everyone!
<aquarius> I'm Stuart Langridge, and I work on Ubuntu One
<aquarius> Now I'm here to talk about adding Ubuntu One to your applications.
<aquarius> Do please ask questions throughout the talk: in the #ubuntu-classroom-chat channel, write QUESTION: here is my question
<aquarius> We want to make it possible, and easy, for you to add the cloud to your apps and to make new apps for the cloud
<aquarius> So we do all the heavy lifting, and your users (and you!) get the benefits.
<aquarius> So, you've built an app which does things for you: let's say it's a todo list app, since lots of people are doing that, with Getting Things Done or something.
<aquarius> It'd be great to have your todo list on all your Ubuntu machines -- your desktop machine, your netbook, and so on.
<aquarius> To do that, just sync the folder that you store the todo lists in with Ubuntu One.
<aquarius> I'm going to talk about U1DB shortly, our in-progress effort to enable structured data sync, but you can also work with files quite happily.
<aquarius> Working with Ubuntu One file sync programmatically is done through the Python library ubuntuone.platform.tools.SyncDaemonTool.
<aquarius> (If you're not using Python, then don't worry; SyncDaemonTool is only a wrapper around the Ubuntu One D-Bus API, so all this works from other languages too. I'll explain the Python version here, though, for simplicity.)
<aquarius> So: "pydoc ubuntuone.platform.tools.SyncDaemonTool" to see the documentation.
<aquarius> (Note: you'll need to be running precise for this, either right now or after it's released.)
<aquarius> Imagine, in your todo list app, you have a checkbox for "put my todo lists on all my machines", and you store your todo lists in ~/.local/share/mytodolist/lists.
<aquarius> So ticking the checkbox should mark that folder as synced with Ubuntu One, and then it'll be synced everywhere.
<aquarius> A simple example of how to do that is at http://paste.ubuntu.com/825171/
<aquarius> As you can see, we check whether the folder is *already* on your list of synced folders, and if not, we use create_folder to create it.
<aquarius> Everything that file sync can do, you can do with SyncDaemonTool or the underlying D-Bus API.
<aquarius> The Ubuntu One control panel, and the technical u1sdtool, both just talk to that D-Bus API.
<aquarius> So if you port your todo list app to Windows, or the web, or iOS or Android or Blackberry or all of them, they can all still get at the data.
<aquarius> File sync is about more than just the-same-files-on-all-my-machines, though.
<aquarius> You can use it for communication and distribution as well.
<aquarius> To pick an example, jonobacon and dholbach and I and others have recently been working on an Ubuntu Accomplishments system (http://www.jonobacon.org/2012/01/29/more-ubuntu-accomplishments-hacking/).
<aquarius> Most of this is all local stuff, which can be used to help people learn the Ubuntu desktop -- you send an email, you set your desktop background, and that's an accomplishment
<aquarius> or as a reward -- you complete a level in a game, for example
<aquarius> but there are also accomplishments which are to do with your activities on the wider internet
<aquarius> So, you filed your first bug about Ubuntu, for example.
<aquarius> Now, these need to be "verified" by another machine, something that isn't your computer, to prove you did it; that other machine checks with Launchpad that you've actually filed a bug and then says "yep, they did it".
<aquarius> One way to implement this would be to run a web service -- you can make requests to it saying "I filed a bug: verify that, please"
<aquarius> and the web service goes away and checks that you did and then says "yes, you did, and here's a token to prove it"
<aquarius> But that's got all sorts of problems -- you have to be online to talk to the web; if the web service gets popular it might crash a lot (think of Twitter, here), and so on
<aquarius> What you want is to work *asynchronously*.
<aquarius> So, instead of directly contacting a web service, put the stuff you want to check in a folder, sync that folder with Ubuntu One, and then *share* that folder with a specific U1 user account
<aquarius> That U1 user account is owned by a machine, and when your network comes back, your files will sync to U1, then they'll sync across to the machine's account
<aquarius> The machine can then look at those files, verify them at its leisure, and then add the "yes they did it" token, and then that token will sync back to your machine
<aquarius> So, you're working just like with a web service, but it *doesn't have to be real time*
<aquarius> Which means that you don't need to worry about having super hardware running the web service, really complicated load-balancing; you don't have to worry about the user being offline and queueing up requests; none of that
<aquarius> And this is all built in to Ubuntu. Anyone can have an Ubuntu One account.
<aquarius> So you can happily use this in your Ubuntu apps.
<aquarius> So, for example, imagine being able to instantly, one-click-ly, publish a file from your application to a public URL and then tweet that URL.
<aquarius> Instant get-this-out-there-ness from your apps.
<aquarius> The screenshot tool Shutter, for example, can do this already; PrtSc to take a screenshot, then "Export > Ubuntu One".
<aquarius> Your app could have a button to "store all my files in the cloud", or "publish all my files when I save them", or "automatically share files that are part of Project X with my boss".
<aquarius> So a backup program, for example, could back up your files straight into Ubuntu One and not sync them to your local machines, and that's exactly what the excellent Deja Dup does
<aquarius> Ubuntu's default backup system will back up your stuff straight to Ubuntu One, so you've got a safe offsite backup when you need it
<aquarius> That was entirely built on the Ubuntu One APIs.
<aquarius> The interesting thing here, of course, is that if you build your own web service to go alongside the app you're building, then you have to run that web service, keep it going, pay the bills for it, be a sysadmin.
<aquarius> But if your app uses Ubuntu One, then it's using the user's *own storage*, not yours.
<aquarius> So you get all the benefits of your app having a web service, and none of the downsides!
<aquarius> And of course being able to save things in and out of the cloud means that you can get an Ubuntu One sync solution on other platforms.
<aquarius> So you could work with your files from your mobile phone (we've already got Android and iOS clients for phones, but there are plenty of people with N9s or Windows Phone or Blackberry)
<aquarius> Build a fuse or gvfs backend for Ubuntu or Fedora or SuSE or Arch Linux. Build a WebDAV server which works with Ubuntu One and mount your Ubuntu One storage as a remote folder on your Mac.
<aquarius> And web apps can work with your cloud too, for files as well as data.
<aquarius> Imagine, say, a torrent client, running on the web, which can download something like a movie or music from legittorrents.info and save it directly into your cloud storage.
<aquarius> So you see an album you want on that torrent site (say, Ghosts I by Nine Inch Nails) and go tell this web torrent client about it (and you've signed in to that web torrent client with Ubuntu One)
<aquarius> And the website then downloads that NIN album directly into your personal cloud -- which of course makes it available for streaming direct to your phone.
<aquarius> But it's not just about your content for yourself; think about sharing.
<aquarius> Ubuntu One lets you share a folder with people. This would be great for distribution.
<aquarius> Imagine that you publish an online magazine.
<ClassBot> There are 10 minutes remaining in the current session.
<aquarius> So, you create a folder on your desktop, and put issues of the magazine in it.
<aquarius> Then, you put a button on your website saying "Sign in with Ubuntu One to get our magazine".
<aquarius> When someone signs in, your website connects to the Ubuntu One files API, with your private OAuth token, and adds that signed-in user to the list of people that your magazine folder is shared with.
<aquarius> Then, whenever your magazine has a new issue, you just drop it into that folder on your desktop.
<aquarius> (Or even upload it to Ubuntu One directly through the website.)
<aquarius> All the subscribed people will get the new issue instantly, on all the machines they want it on, and in the cloud.
<aquarius> You could distribute anything like this. Imagine a podcast, or chapters of a novel.
<aquarius> (I keep imagining an online game which grows over time, but that's just me)
<aquarius> It would also work for paid-for content; when someone pays, have your code share a folder with them, and put their paid-for stuff in that folder. That's all doable through the files API.
<aquarius> We have the start on documentation for all the APIs at https://one.ubuntu.com/developer and we're working hard on updating that at the moment
<aquarius> (we've been moving the documentation to use the Sphinx docs system under the covers, so some of the more recent things aren't yet documented, and I'm working on that)
<aquarius> That about covers things for this talk; it's a quick tour through some of the things that Ubuntu One can do for your apps
<aquarius> There's, of course, another thing that you can do; bring U1 to new platforms
<aquarius> We've recently had people start building wrapper libraries for Ubuntu One files in loads of different environments... the most recent was .net
<aquarius> so that the chap can also build apps on windows which work with his files in Ubuntu One
<aquarius> OK, that's the brief summary.
<aquarius> If anyone has questions about this or about anything to do with Ubuntu One and app development, I'm happy to answer them
<ClassBot> There are 5 minutes remaining in the current session.
<aquarius> and I'm also talking about U1DB, our in-progress data sync thing, in an hour, so you may find that interesting too :)
<aquarius> melvster says: QUESTION: this sounds absolutely awesome, you've alluded to the fact there will be a standards compliant REST API with global URLs exposed, 1. will it expose correct and flexible MIME types, 2. cross origin headers for interop with apps,  3. will there be fine grained access control
<aquarius> 1. yes, there already is a REST API for your files in the cloud -- see https://one.ubuntu.com/developer/files/store_files/cloud/
<aquarius> 1b. mime types for your files are what you set them to be, if you upload them through the APIs
<aquarius> 2. CORS headers are an interesting one. I'd like to hear reasoning both for and against that. I've been thinking about it, and I'm leaning towards it being a good idea, but it's not done yet.
<aquarius> 3. fine grained access control -- granting an access token which can access only one folder, or one file, or have read but not write access to your files -- is something that we plan to build, but we haven't yet.
<ClassBot> burli asked: whats the status of u1db?
<aquarius> You want to be here in an hour to see the u1db talk for that :)
<aquarius> briefly, though, it's in progress, and you can start using it now in apps, and we'd love to hear from you about it :)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Pair Programming and Code Review in the Cloud! - Instructors: kirkland
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<kirkland> welcome all!
<kirkland> okay, this will be a totally live/interactive session
<kirkland> please ssh guest@classroom.gazzang.net
<kirkland> password is 'guest'
<kirkland> you'll have read only access there
<kirkland> where I'm going to demo some neat practices for pair programming and code review in the cloud!
<kirkland> for the best experience, you may want to maximize your window
<kirkland> or expand it to at least 180x45 characters
<kirkland> you may want to use ctrl - to decrease font size (in gnome-terminal anyway)
<kirkland> there's a clicker at the bottom, counting the number people in the session
<kirkland> i see "14#" at the bottom
<kirkland> I've used byobu many, many times for these sessions
<kirkland> but this is the *first* time I've used byobu + tmux ;-)
<kirkland> we'll see how it goes!
<kirkland> okay, now that we've got a good count of people in here, let's get started
<kirkland> in that shared screen session, I'm running IRSSI, a command line irc client
<kirkland> you can stay connected there (here?) and see what I'm typing
<kirkland> no need to go back and forth between the terminal session and your chat client
<kirkland> these are a handful of best practices me and my colleagues around Canonical, Ubuntu, and Gazzang have used over the last few years
<kirkland> that have really made working with people around the world a lot easier
<kirkland> chief among these (for me) has been shared GNU screen and now Tmux sessions, in EC2
<kirkland> we're able to avoid firewalls and networking/routing issues by "meeting in the middle"
<kirkland> one or more of us can easily ssh into an EC2 machine
<kirkland> and these instances can cost as little as $0.02/hour
<kirkland> now, this one, is a big one ;-)
<kirkland> 32 cpus and 60GB of memory
<kirkland> for a "whopping" $2.40/hour :-)
<kirkland> anyway, this system is running Ubuntu 11.10, plus an updated version of byobu and tmux from ppa:byobu/ppa
<kirkland> you all who are logged in as the 'guest' user
<kirkland> are attached to a readonly GNU screen session
<kirkland> which is wrapped around a tmux session
<kirkland> which is being driven by my 'ubuntu' user
<kirkland> for which I'm the only person with access
<kirkland> that's just for display here
<kirkland> but if you want to see how to set that up, see the Juju charm 'byobu-classroom'
<kirkland> in most cases, when I'm doing this with my trusted colleagues
<kirkland> we just share the same ubuntu account
<kirkland> and both of us have read/write access
<kirkland> I'm sure you can appreciate all the things that might go wrong if I gave 27 of you simultaneous read/write access ;-)
<kirkland> mayhem :-D
<kirkland> okay, so let's first feel our way around this session
<kirkland> first, I'll press shift-F1 to display the help/keybindings
<kirkland> here, i can see that byobu binds a bunch of actions to the F keys
<kirkland> I'll quickly work my way through a couple of them
<kirkland> F2 creates new windows, and F3/F4 will move right and left between them
<kirkland> you won't be able to do that here in our shared session
<kirkland> but you can do that on your local ubuntu computer by running 'byobu-tmux' on your command line
<kirkland> so now i hit F2 3 times
<kirkland> and have windows 0, 1, 2, 3
<kirkland> and i can press F3 and F4 to move right and left among them
<kirkland> i'm going to run the 'top' command in window 3
<kirkland> and now i'm going to rename window 3 to say "top" by pressing F8
<kirkland> and i'll rename window 0 to "irc" with F8 as well
<kirkland> okay, so windows are one way of multi tasking
<kirkland> but spliting the screen is far more interesting!
<kirkland> ctrl-F2 will split the screen vertically
<kirkland> and shift-F2 will split the screen horizontall
<kirkland> and I can keep doing that pretty much ad nauseum!
<kirkland> note that splits are per-window
<kirkland> so if I go over to window 3
<kirkland> i won't see any splits there, until I create them
<kirkland> so much space over on the left of window 3
<kirkland> i'll create another split there :-)
<kirkland> moving between windows is F3/F4
<kirkland> moving between splits is Shift-Up/Down/Left/Right
<kirkland> and you should see the split highlighted in purple
<kirkland> that's your active split
<kirkland> as well as some numbers that pop up and identify them
<kirkland> you can jump directly to a number split if you want
<kirkland> so let's start doing some work in one of these splits
<kirkland> i have downloaded the source code of libreoffice
<kirkland> as well as its build dependencies
<kirkland> let's see it build on a 32 processor system :-)
<kirkland> and we'll pretend that we're pair programmers working on some big build
<kirkland> i really like colorized logs
<kirkland> so I'm going to pipe the output of debuild through ccze
<kirkland> and that'll take a while :-)
<kirkland> lets say that I want to break that split out to a window of its own
<kirkland> as I really don't need to see that build right now
<kirkland> pressing Shift-F1, I'll get the menu again
<kirkland> and I can see that Alt-F11 will expand a split to a full window
<kirkland> so now we have the libreoffice build happening in window 4
<kirkland> now, let's look at some source code
<kirkland> i'm going to install a web application
<kirkland> we're going to debug a problem
<kirkland> tail some logs
<kirkland> and debug it in real time
<kirkland> I'm going to install pictor
<kirkland> a web application for browsing pictures over a web interface
<kirkland> something like picasa, I suppose
<kirkland> you can point a browser at http://classroom.gazzang.net/pictor
<kirkland> and you'll see that we need to seed it with some images
<kirkland> i'm going to grab some packages
<kirkland> from ubuntu that serve wall papers
<kirkland> now let's install some symlinks
<kirkland> to our pictures
<kirkland> and pretend that's what we want pictor to serve
<kirkland> now let's tail our apache logs
<kirkland> in another split
<kirkland> I can see a few of you browsing that site now :-)
<kirkland> let's tail the error log now
<kirkland> I'm going to resize my splits now
<kirkland> using Ctrl-Up/Down/Left/Right
<kirkland> busy busy busy :-)
<kirkland> now
<kirkland> perhaps you've noticed our bug
<kirkland> http://classroom.gazzang.net/pictor/?album=%2Fbackdrops&thumbs=1
<kirkland> the "backdrops" album is empty
<kirkland> I wonder why ....
<kirkland> hmm, so the files in the backdrops directory are png's
<kirkland> meanwhile, the "working" ones are .jpgs
<kirkland> let's hack it into the code, then
<kirkland> this is the point at which
<kirkland> you and your team
<kirkland> perhaps pair programming
<kirkland> might dig through the code and find the bug
<kirkland> i'm going to search this code for hardcoded "jpg" references
<kirkland> aha!
<kirkland> there's an is_image() function
<kirkland> that looks for files ending in "jpg" and "jpeg"
<kirkland> let's try adding ".png"
<kirkland> now refresh
<kirkland> lovely!
<kirkland> of course, I just made that change directly on the /usr/share source code
<kirkland> if we wanted to do this right, we should branch bzr and submit the change
<kirkland> let's do that very quickly
<kirkland> there's our 1-line change
<kirkland> in our bzr cdiff
<kirkland> and there we have it!
<kirkland> I'll make sure to credit all of #ubuntu-classroom when I commit this fix later today ;-)
<kirkland> let's go back and check our office build, out of curiosity
<kirkland> still chugging along
<kirkland> are you getting a feel for how this works?
<kirkland> we use it often for education (like this!)
<kirkland> where one person is trying to teach one or more how to do something
<kirkland> but it's also phenomenally useful for debugging complex problems
<kirkland> johnny-e> QUESTION: is your byobu is using tmux instead of screen?
<kirkland> johnny-e: well, it's a bit of both
<kirkland> what you're SEEING is byobu + tmux
<kirkland> the one line across the bottom
<kirkland> and the elegant splits
<kirkland> yes, that's tmux
<kirkland> but the thing that's keep all of you with readonly access is a wrapper of GNU screen
<kirkland> though that's entirely transparent to you
<kirkland> <ssweeny-lernid> QUESTION: ââso the double layer of tmux + screen is only because of the need for read-only in this session?
<kirkland> ssweeny-lernid: yes, exactly
<kirkland> ssweeny-lernid: when you do this with your friends/colleagues, it'll be trivial to setup
<kirkland> (this configuration took me a few minutes)
<kirkland> here's what you'll do ...
<kirkland> get an Ubuntu system running somewhere
<kirkland> the "cloud" is nice, because it removes the need for VPNs or fancy routing
<kirkland> but you could certainly use a physical local system or a VM
<kirkland> next, you could very conveniently use the ssh-import-id command
<kirkland> this is also a very useful tool to have in your toolbelt when doing pair programming and code review in the cloud
<kirkland> you can 'ssh-import-id SOME_LAUNCHPAD_USERNAME'
<kirkland> and it will securely (over https) connect to Launchpad
<kirkland> and retrieve that user's public SSH keys and insert them into the local authorized_keys file
<kirkland> in this way, you can avoid needing to share passwords
<kirkland>  i would have done that today for this session
<kirkland> but I'm not sure how long it would have taken to import all 29 of you ;-)
<kirkland> actually, just before we sign off, I'll import your keys
<kirkland> and let you trash this system for a few seconds before I terminate it :-P
<kirkland> <jsnapp> QUESTION: do you have any problems nesting byobu? like running byobu on my desktop and on my server?
<kirkland> well, yeah, kinda sorta
<kirkland> nesting byobu can get complex
<kirkland> when doing so, you'll need to know the tmux and/or screen key bindings
<kirkland> and I'd recommend using two different escape sequences
<kirkland> i use ctrl-a for mour outter session
<kirkland> and ctrl-b for my inner session
<kirkland> otherwise, byobu doesn't know which session you're talking to :-)
<kirkland> <sinisterstuf> QUESTION: I was reading the gnu screen man pages, do you need to set up screen in a specific way to do this? I read something about giving the program root permission or something...
<kirkland> sinisterstuf: yeah, here's the magic ...
<kirkland> sinisterstuf: follow me over in the shared session
<kirkland> you can grab the bzr branch from http://bazaar.launchpad.net/~charmers/charms/oneiric/byobu-classroom/trunk/
<kirkland> see hooks/install
<kirkland> [ -f /usr/share/byobu/profiles/classroom ] || echo "
<kirkland> aclumask guest+r guest-w guest-x
<kirkland> aclchg guest +r-w-x '#?'
<kirkland> aclchg guest +x 'detach'
<kirkland> multiuser on
<kirkland> escape "^Bb"
<kirkland> " > /usr/share/byobu/profiles/classroom
<kirkland> chmod 644 /usr/share/byobu/profiles/classroom
<kirkland> that's most of it
<kirkland> that changes the acls of the guest user to read only
<kirkland> also, I tweaked the ssh config
<kirkland> so that the *only* command that the guest user can run on ssh in is to attach to the byobu session
<kirkland> echo "
<kirkland> PasswordAuthentication yes
<kirkland> AllowTcpForwarding no
<kirkland> Match User guest
<kirkland>   ForceCommand exec screen -x ubuntu/byobu-classroom
<kirkland> " >> /etc/ssh/sshd_config
<kirkland> <jsnapp> QUESTION: so do you typically nest byobu or just run it in the server?
<kirkland> jsnapp: I almost never nest byobu
<kirkland> but that's a good question
<kirkland> around what I find as best practices for this...
<kirkland> so I run gnome-terminal (or terminator)
<kirkland> at full screen
<kirkland> I use multiple tabs
<kirkland> but each tab is an ssh session to another server
<kirkland> in each tab, I run byobu
<kirkland> which is nice because I can always attach and detach
<kirkland> actually ...  that's a good exercise
<kirkland> I invite you to detach from the shared session
<kirkland> using F6
<kirkland> and then reattach
<kirkland> by ssh'ing back in
<kirkland> ssh guest@classroom.gazzang.net
<kirkland> you'll see that everything is *exactly* as you left it
<kirkland> I've just done the same thing
<kirkland> detached
<kirkland> and then reattached
<kirkland> this is your lifeline savior when you have a crappy uplink connection :-)
<kirkland> it would stink to have this office build die
<kirkland> just because your ssh session had a hiccup
<kirkland> now
<kirkland> each time I need a new shell
<kirkland> I can either create a new window (F2)
<kirkland> or a new split (Ctrl-F2/Shift-F2)
<kirkland> I tend to group similar shells with splits
<kirkland> so if I'm working on libreoffice in one window
<kirkland> i might have a handful of related splits
<kirkland> maybe one building
<kirkland> maybe one with code
<kirkland> maybe two with code, side by side
<kirkland> one for testing, etc.
<kirkland> one tailing log files
<kirkland> much like what we're looking at in window 0
<kirkland> with 2 logs
<kirkland> and one code
<kirkland> oh, let's rearrange the windows
<kirkland> let's say I want to move the access log left or right one split
<kirkland> I use Ctrl-F3/F4
<kirkland> I can do that with any of the splits
<kirkland> also, there's a handful of predefined, useful arrange ments
<kirkland> you can Shift-F8 will toggle through them
<kirkland> here's equal vertical windows
<kirkland> or equal horizontal windows
<kirkland> here's one big one across the top
<kirkland> and a bunch of verticals across the bottom
<kirkland> or (probably my favorite)
<kirkland> one vertical (where I look at my source code)
<kirkland> and 3 more, where I tail my logs
<kirkland> I'm going to move my source code over to the left split with Ctrl-F3
<kirkland> ah, that's nice
<kirkland> I can save a particular split arrangement
<kirkland>     Ctrl-Shift-F8               Save the current split-pane layout
<kirkland> and then restore it later
<kirkland>     Ctrl-F8                     Restore a split-pane layout
<kirkland> there's a menu of the predefined ones, and my saved one, 'favorite'
<kirkland> oh, let's see tiled as well
<kirkland> also nice
<kirkland> it's lovely that *all* of this is happening over ONE single ssh connection
<kirkland> we have over a dozen shells open
<kirkland> doing some very busy things
<kirkland> but just 1 ssh session to the server
<kirkland> and it's all preserved across attaches and detaches
<kirkland> <kermit666> QUESTION: ââIs it possible to do something similar using "ssh -X" to share a desktop in readonly mode when you're working in an IDE?
<kirkland> kermit666: not that I know of, sorry :-(
<kirkland> <johnny-e> QUESTION: so you're runing byobu on each server you connect to
<kirkland> yes, always
<kirkland> johnny-e: you can set that easily on a per-user basis with 'byobu-enable'
<kirkland> johnny-e: or, you can set that on a system wide basis with 'dpkg-reconfigure byobu'
<kirkland> HOWEVER
<kirkland> the best way to do it, I believe
<kirkland> is by adding a one-liner to your LOCAL ~/.bashrc file
<kirkland> export LC_TERMTYPE=byobu
<kirkland> put that in your local ~/.bashrc
<kirkland> and any time you ssh to a system with a (recent) version of byobu
<kirkland> this script, /etc/profile.d/Z97-byobu.sh
<kirkland> will see that you've selected your TERMTYPE to byobu and it will try to launch it by default at startup!
<kirkland> <caotic> QUESTION: what if i had an extra view which i would like to toggle on or off ?
<kirkland> caotic: I don't understand your question, can you clarify please?
<kirkland> <jsnapp> QUESTION: how are you keeping other users screen size from affecting your byobu session? is it the read only access?
<kirkland> jsnapp: oh, that's a great question
<kirkland> a *very* hard one as well
<kirkland> jsnapp: I have overriden the default byobu setting
<kirkland> jsnapp: normally, byobu sets the tmux option aggressive-resize 'on'
<kirkland> jsnapp: however, what that means is that everyone is limited by the smallest attached screen
<kirkland> jsnapp: with 29 of you, one of you could have set your screen to 80x25 and limited all of us
<kirkland> jsnapp: in some case (most?) that might be the right answer
<kirkland> jsnapp: but for this demo, it wasn't, sorry
<kirkland> jsnapp: so I set that to 'off' for this session
<kirkland> <johnny-e> QUESTION: can you assign names to your custom split-pane layouts?
<kirkland> johnny-e: yes, absolutely, just press ctrl-shift-F8
<kirkland> johnny-e: and it'll prompt you to name it
<ClassBot> There are 10 minutes remaining in the current session.
<kirkland> johnny-e: in your ~/.byobu directory, you'll see a layouts dir
<kirkland> johnny-e: I named my "favorite"
<kirkland> johnny-e: and the contents of that file is a tmux split window layout:
<kirkland> b57b,180x44,0,0{80x44,0,0,99x44,81,0[99x14,81,0,99x14,81,15,99x14,81,30]}
<kirkland> (have fun interpreting that ;-)
<kirkland> johnny-e: sorry, I did it earlier;  I encourage you to try it on your own byobu system later
<kirkland> oh, one more important topic!
<kirkland> now, tmux and screen differ here significantly on a few major points
<kirkland> i want to cover one of them here
<kirkland> in tmux, all users will be connected to the same exact session by default
<kirkland> and all users will see the exact same thing
<kirkland> which is very much what "pair programming" is all about
<kirkland> but sometimes, you might want to split off from your colleague
<kirkland> and work on something else
<kirkland> on a different view
<kirkland> here, you would create a new "session"
<kirkland> which you can do using ctrl-shift-F2
<kirkland> so to review:
<kirkland>   F2                            Create a new window
<kirkland>     Shift-F2                    Create a horizontal split
<kirkland>     Ctrl-F2                     Create a vertical split
<kirkland>     Ctrl-Shift-F2               Create a new session
<kirkland> and then to move between sessions
<kirkland>     Alt-Up/Down                 Move focus among sessions
<kirkland> unfortunately, I won't be able to demo that here
<kirkland> as your screen is attached to my tmux session
<kirkland> and you won't follow me to the other one
<kirkland> but try it yourself!  it works
<kirkland> I think we covered all of these, but to review:
<kirkland>     Shift-F1                    Display this help
<kirkland> and creating new things ...
<kirkland>   F2                            Create a new window
<kirkland>     Shift-F2                    Create a horizontal split
<kirkland>     Ctrl-F2                     Create a vertical split
<kirkland>     Ctrl-Shift-F2               Create a new session
<kirkland> all movement is under F3 and F4
<ClassBot> There are 5 minutes remaining in the current session.
<kirkland>   F3/F4                         Move focus among windows
<kirkland>     Shift-F3/F4                 Move focus among splits
<kirkland>     Ctrl-F3/F4                  Move a split
<kirkland>     Ctrl-Shift-F3/F4            Move a window
<kirkland>     Alt-Up/Down                 Move focus among sessions
<kirkland>     Shift-Left/Right/Up/Down    Move focus among splits
<kirkland>     Ctrl-Shift-Left/Right       Move focus among windows
<kirkland>     Ctrl-Left/Right/Up/Down     Resize a split
<kirkland> so F2/F3/F4 sort of form your "home keys" for byobu
<kirkland> we can briefly look at the refresh commands
<kirkland>   F5                            Reload profile, refresh status
<kirkland>     Shift-F5                    Toggle through status lines
<kirkland>     Ctrl-F5                     Reconnect ssh/gpg/dbus sockets
<kirkland>     Ctrl-Shift-F5               Change status bar's color randomly
<kirkland> you should see a few status items in the bottom right, periodically refreshing
<kirkland> by default, those refresh every 1 second
<kirkland> i backed that off to 5 seconds, since there are so many of us here
<kirkland> I just presed Shift-F5
<kirkland> and now I can see a different set of status
<kirkland> including my cost, hostname, ip address
<kirkland> ctrl-shift-f5 can give your system some personality
<kirkland> if you have a lot of byobu sessions, seeing them under a different color helps some times
<kirkland>   F6                            Detach session and then logout
<kirkland>     Shift-F6                    Detach session and do not logout
<kirkland>     Ctrl-F6                     Kill split in focus
<kirkland> perhaps you tried the F6 detach
<kirkland> shift-F6 will detach from the session, but NOT log you out of the server
<kirkland> and ctrl-f6 will kill a split
<kirkland> (perhaps a runaway process)
<kirkland> OH
<kirkland> scrollback!
<kirkland> let's play with scrollback
<kirkland> which is under F7
<kirkland> and alt-pageup/pagedown
<kirkland> so now I'm scrolling back through one particular split
<kirkland> anyway, my time is up
<kirkland> I'll gladly answer questions over in #ubuntu-classroom-chat
<kirkland> hopefully you see how you can use shared screen and tmux sessions and byobu in the cloud to do code review and pair programming ;-)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Adding Ubuntu One to your applications - Instructors: dholbach
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<aquarius> Hi all, and welcome back. I'm still Stuart Langridge from Ubuntu One :)
<aquarius> (thanks, akgraner :))
<aquarius> I'm now going to talk about U1DB.
<aquarius> In addition to syncing files and music and photos around, it's good to be able to sync data, too
<aquarius> U1DB is our solution to that.
<aquarius> It's still being worked on, and we made a preview release in late December.
<aquarius> Basically, U1DB is for syncing data -- that is, something structured -- to every device you want.
<aquarius> So, preferences or lists or data of any kind where you don't want to have to represent the data as separate files
<aquarius> U1DB is an API.
<aquarius> The reason for this is so it can be implemented in any language.
<aquarius> So someone could build the U1DB API in Python, and then you could use that U1DB library in a Python Quickly app on Ubuntu.
<aquarius> Someone else could build the U1DB API in JavaScript, and then you could use that U1DB library in a web app.
<aquarius> At that point, you can build the Ubuntu app and the web app, and they can share data.
<aquarius> Then you could build an Android app which uses U1DB -- again, this would be a standard Android app, in Java -- and it can also share and sync that data with the other apps in Python and JavaScript and whatever.
<aquarius> So you've got the ability to build apps everywhere, for every platform, Ubuntu and the web and smartphones and desktops and netbooks, and have them all work with the same data: your data, and your users' data.
<aquarius> At the moment, what we've built is called the "reference implementation": it's using Python and SQLite, and includes both a Python client (for use in Python apps), and a server.
<aquarius> (by the way, you can ask questions in #ubuntu-classroom-chat; just type QUESTION: <your question> )
<aquarius> Let's try a little bit of code.
<aquarius> "bzr branch lp:u1db" to get the latest trunk code of u1db.
<aquarius> We have early documentation online at http://people.canonical.com/~aquarius/u1db-docs
<aquarius> If you take a look at http://people.canonical.com/~aquarius/u1db-docs/quickstart.html#starting-u1db that gives you an example of how to use u1db itself
<aquarius> You'll see that U1DB stores "documents" -- JSON documents, that is
<aquarius> A document can contain anything you want; there's no particular structure imposed on you
<aquarius> So if you choose to store all your app's data in many separate documents, or group those documents together somehow, or require certain keys in them, that's fine
<aquarius> So, creating a document is done with
<aquarius> >>> content = json.dumps({"name": "Alan Hansen"}) # create a document
<aquarius> >>> doc = db.create_doc(content)
<aquarius> and that's saved that document into the database
<aquarius> You use put_doc to overwrite an existing document:
<aquarius> >>> doc.content = json.dumps({"name": "Alan Hansen", "position": "defence"}) # update the document's content
<aquarius> >>> rev = db.put_doc(doc)
<aquarius> (and that returns a revision number)
<aquarius> U1DB is a revisioned database, meaning that it keeps track of the revision number of a document
<aquarius> So it knows when things have changed
<aquarius> Syncing two U1DBs together is manually commanded by your app, whenever it wants
<aquarius> Because U1DB comes with a server, you can test this out for yourself
<aquarius> U1DB can also be controlled from the command line, which makes testing this stuff easy
<ClassBot> There are 10 minutes remaining in the current session.
<aquarius> In one terminal, do:
<aquarius> $ u1db-client init-db first.u1db # this creates a database
<aquarius> $ echo '{"name": "Stuart Langridge"}' | u1db-client create first.u1db # create a document in it
<aquarius> (This will print the ID of the new document, and its revision: something like this)
<aquarius> id: D-cf8a96bea58b4b5ab2ce1ab9c1bfa053
<aquarius> rev: f6657904254d474d9a333585928726df:1
<aquarius> You can retrieve that document back again:
<aquarius> $ u1db-client get first.u1db D-cf8a96bea58b4b5ab2ce1ab9c1bfa053 # fetch it
<aquarius> {"key": "value"}
<aquarius> rev: f6657904254d474d9a333585928726df:1
<aquarius> Now, let's run the server in this folder:
<aquarius> $ u1db-serve --verbose
<aquarius> listening on: 127.0.0.1:43632
<aquarius> Now, you have a U1DB server running on port 43632
<aquarius> So, in another terminal:
<aquarius> $ u1db-client init-db second.u1db # create a second database
<aquarius> $ u1db-client get second.u1db D-cf8a96bea58b4b5ab2ce1ab9c1bfa053 # try and fetch a doc
<aquarius> And you'll see that that says: Document not found (id: D-cf8a96bea58b4b5ab2ce1ab9c1bfa053)
<aquarius> because that document doesn't exist in second.u1db
<aquarius> Now, let's sync second with first:
<aquarius> $ u1db-client sync second.u1db http://127.0.0.1:43632/first.u1db
<aquarius> And now, the document exists in second:
<aquarius> $ u1db-client get second.u1db D-cf8a96bea58b4b5ab2ce1ab9c1bfa053
<aquarius> {"key": "value"}
<aquarius> rev: f6657904254d474d9a333585928726df:1
<aquarius> So syncing has worked!
<aquarius> Syncing is over http -- the server is http and provides a nice RESTful API
<aquarius> We already have implementations of U1DB under way on other platforms and languages
<aquarius> The U1DB team are building a C + SQLite implementation
<aquarius> dobey is working on a Vala implementation for Ubuntu (lp:shardbridge)
<aquarius> and I'm working on a JavaScript implementation so that I can write web apps and mobile web apps which sync data with U1DB
<aquarius> The documentation at http://people.canonical.com/~aquarius/u1db-docs should tell you all you need to know to get started
<aquarius> We hang out in #u1db on freenode and on the mailing list at https://launchpad.net/~u1db-discuss
<aquarius> So we'd be very interested in helping you use u1db in your apps.
<aquarius> That's a very quick tour around U1DB, what it's going to be like, and how you can get started
<aquarius> sorry for the rush -- I had to fit this talk into 15 minutes :)
<aquarius> so, if anyone has any questions about U1DB, now's the time to ask them; I've got five minutes before I hand over to kelemengabor
<ClassBot> There are 5 minutes remaining in the current session.
<aquarius> (er, james_w :))
<aquarius> <jderose> QUESTION: what's the u1db equivalent of couchdb views?
<aquarius> U1DB indexes. :)
<aquarius> Create an index with create_index
<aquarius> and then you can query that index
<aquarius> http://people.canonical.com/~aquarius/u1db-docs/quickstart.html#starting-u1db has an example
<aquarius> http://people.canonical.com/~aquarius/u1db-docs/high-level-api.html#document-storage-and-retrieval has more examples :)
<aquarius> I've got one minute, so thank you all for listening!
<aquarius> Chase us down on #u1db if you have further questions
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Automated packaging with pkgme - Instructors: james_w
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<james_w> hello everyone, my name is James Westby, and I'm a developer of pkgme
<james_w> later you'll be able to play along, if you want to prepare for that then you can run "sudo apt-get install devscripts debhelper python-virtualenv bzr" and then "bzr branch lp:pkgme"
<james_w> that should get you set up with the packages you need and get you a copy of the code
<james_w> with that out of the way, let's go back to the beginning
<james_w> pkgme is a tool to help you package applications for Ubuntu
<james_w> after you've written an application you need to package it up so that you can get it in to a PPA and then in to the software-center
<james_w> it may be that you know how to do that already, and if so great, but not everyone knows how to do it already
<james_w> if you don't know how to do it then you can learn yourself, find someone that does know, or try and use a tool to do it for you
<james_w> in Debian/Ubuntu there are three classes of tool that help you to do this
<james_w> the first is like checkinstall, which is nicer than installing software without it, but isn't suited for producing packages to distribute to other people
<james_w> the second class is things like dh-make
<james_w> this gives you a skeleton to work with, but usually you need to know a lot about packaging to get something useful
<james_w> so it's mainly used by Debian/Ubuntu developers who want a skeleton to start from, or by those who are reading packaging guides
<james_w> but it doesn't really help that last group
<james_w> the third class is specialised tools like dh-make-perl
<james_w> these deal with one type of package (in that case perl libraries)
<james_w> they do it well, but you have to know that they exist
<james_w> and also they all work differently, and every time someone wants to write a new one then they have to start almost from scratch, and implement the same things such as writing out the package files
<james_w> so where does pkgme fit in to this?
<james_w> pkgme sits somewhere between the second and third class
<james_w> it gets the benefits of the third class, in that it produces good packages with little knowledge required on the users part
<james_w> but it has the advantage that it has a single user interface, it re-uses code across the different types of packages, and you there's only one place to look to know if your package type is supported
<james_w> obviously though, it needs to know how to handle each type of package
<james_w> here a type of package is referring to a set of packages that have a convention about how they should be packaged
<james_w> this means you have things like "python with a setup.py"
<james_w> perl with a Makefile.PL
<james_w> java with an ant build.xml
<james_w> and it extends further as well, we recently added a backend for pdfs, to support the books and magazines that are being sold in Ubuntu Software Center now
<james_w> each of these types of package is supported through a pkgme "backend"
<james_w> the core of pkgme takes care of all the intracacies of debian package files etc., and the backend supplies the knowledge of that type of package
<james_w> so when you run pkgme it first asks each backend to decide whether it can deal with the type of package in question
<james_w> each backend returns a score
<james_w> they can return 0 if they don't know what it is
<james_w> or they can return 10 if they know how to provide some information
<james_w> the reason it is is score is so that you can have more specialised backends
<james_w> for instance, a ruby backend may see a ruby package and report "10"
<james_w> but then a ruby-on-rails backend could see that it was really a RoR project, not a plain ruby one, and take over by reporting 20 for the score
<james_w> this isn't limited to two levels either
<james_w> there may be a particular subclass of RoRs projects that could have its own backend
<james_w> once the backends have all reported their scores then the one with the highest score is used for the next part
<james_w> at this point pkgme starts asking the backend for some information about the project
<james_w> "what is the name of the project?"
<james_w> "what is the version?"
<james_w> "what dependencies does it have?"
<james_w> "what's the description?"
<james_w> etc.
<james_w> once pkgme has all this information it puts it in to its templates and writes out the packaging
<james_w> so, let's see how all this fits together
<james_w> if you have downloaded the branch of pkgme you will see that it has no ./debian/ directory
<james_w> this means that it itself is not packaged
<james_w> so let's try using pkgme on itself
<james_w> cd in to the pkgme directory that bzr gave you
<james_w> and run:
<james_w> virtualenv --no-site-packages virtualenv
<james_w> source ./virtualenv/bin/activate
<james_w> python setup.py develop
<james_w> pkgme
<james_w> it will think for a few seconds, and then will have written out the debian directory
<james_w> it will then try and build the source package
<james_w> that may or may not work for you (given that it's supposed to be used by the person that built the app)
<james_w> that's it, we didn't have to tell pkgme anything about what we were doing, it just figured everything out, and made some sensible decisions for us
<ClassBot> There are 10 minutes remaining in the current session.
<james_w> it's likely always going to be possible that an experienced packager will find some better way of packaging the app, but that's ok
<james_w> pkgme will produce something workable, which is the immediate goal
<james_w> there's one thing I've glossed over so far
<james_w> what if pkgme doesn't know how to deal with your particular application?
<james_w> there are two possibilities here
<james_w> the first is that your app looks like one of the types that pkgme knows about, but differs somehow
<james_w> in these cases pkgme will give you an error, or the package won't work
<james_w> if it doesn't turn out to be a pkgme bug, then unfortunately it's a sign that you will have to learn something about packaging, or find someone that does
<james_w> we will try and accomodate different ways of doing things, but we can't have an automated tool know how to deal with everything
<james_w> so when you are writing an app, stick to the conventions of whatever type of project you are writing
<james_w> the second case is that pkgme doesn't know how to handle your type of project
<james_w> in those cases you would need to write a pkgme backend
<james_w> or at least work together with us to write it
<james_w> this doesn't need any packaging knowledge (though it doesn't hurt)
<james_w> as I said before there are two things the backend needs to be able to do
<james_w> the first is decide whether a particular project is something it can handle
<james_w> this is usually looking for a particular file (e.g. setup.py) and maybe some other checks
<james_w> the second thing is answer some questions about the project
<james_w> what the name of it is
<james_w> what the dependencies are
<ClassBot> There are 5 minutes remaining in the current session.
<james_w> all things that don't really need any packaging knowledge
<james_w> so if you are in this situation find us on launchpad (https://launchpad.net/~pkgme-developers) or on IRC (#pkgme)
<james_w> and we'll help you write a backend (it takes about an hour to write something useful in my experience)
<james_w> then you and everyone who writes the same types of apps can benefit from automatic packaging
<james_w> any questions?
<james_w> in the meantime I'll write a little about what we at Canonical are building based on pkgme
<james_w> when you submit a commercial application to https://developer.ubuntu.com/dev then Canonical will help you package it
<james_w> in order to speed that process up and allow more applications to be available on Ubuntu we are putting pkgme behind that form so that an attempt will be made to package your app automatically
<james_w> for certain types of application at least
<james_w> in addition, we're going to be trying to help libre applications too, by working with the ARB to have pkgme help developers and them to package applications
<ClassBot> tomalan asked: ââcan pkgme als guess dependencies (e.g. by examining PKG_CHECK_MODULE in configure.ac in autotools)?
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Fixing internationalisation bugs - Instructors: kelemengabor
<james_w> that would be how it did it for autotools, yes
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<kelemengabor> Hi everyone!
<kelemengabor> Welcome to this UDW talk about internationalization (i18n) bugs. I'm Gabor Kelemen, long time Hungarian translator and member of the Ubuntu Translation Coordinators team, with the task of managing i18n bugs.
<kelemengabor> During this talk, I'll show you what are the most common reasons of the presence of untranslated strings on the Ubuntu UI, and how to make those translatable. But first things first, let's start with the basics.
<kelemengabor> * i18n is a fairly complicated process, where many things have to be in place for the whole process to work.
<kelemengabor> * These things are documented in the gettext manual: http://www.gnu.org/software/gettext/manual/gettext.html
<kelemengabor> * Most of the infrastructure documented here works for the software Ubuntu packages, but there are always unpolished edges.
<kelemengabor> * Most of the problems I'll talk about are *not* Ubuntu-specific, they affect every user of that software, independently of the distribution.
<kelemengabor> In theory, you should not see a single English string while running Ubuntu using your native language.
<kelemengabor> However that this is not always the case: even if the translators of your language did their best, you can still run into untranslated text.
<kelemengabor> This is what we call an i18n bug. But what can You do with it?
<kelemengabor> Let's suppose you run Ubuntu Precise, and you see an English string. First thing to check: is it just (yet) untranslated, or not even translatable?
<kelemengabor> To do this, you need to click Help -> Translate this application, or if this does not help, look up the template of the application manually on https://translations.launchpad.net/ubuntu/precise/+lang/LL?batch=300
<kelemengabor> where LL is your language code, like de for German or hu for Hungarian
<kelemengabor> Once at the template, search for the given string. If you find it untranslated, then translate it!
<kelemengabor> If it was translated recently, like a week ago or so, then maybe it is not exported yet into the language pack - there is always a few days delay.
<kelemengabor> If it is there since a longer time, or if it is not there at all, then you just found an i18n bug, congratulations :).
<kelemengabor> Run ubuntu-bug packagename if you know the name of the application (Recommended!), or go directly to https://bugs.launchpad.net/ubuntu-translations/ and report it.
<kelemengabor> Either case, please include a screenshot!
<kelemengabor> So, we have now a bug to solve. Or do we?
<kelemengabor> If you don't see anything outstanding, but you would like to help solving problems - great! Go to https://bugs.launchpad.net/ubuntu-translations/ and pick a bug.
<kelemengabor> You can also go to https://bugs.launchpad.net/ubuntu/ and search for i18n bugs there - keywords like "translat" or the English name of your language gives plenty of results.
<kelemengabor> like 3-5 times more than we have on the ubuntu-translations project
<kelemengabor> In an ideal world, all these should be marked as affecting the ubuntu-translations project, but... you might want to
<kelemengabor> mark it as affecting that too, so it can get a little more attention
<kelemengabor> Once you picked a bug, you can branch the code of the corresponding package, and start looking for the cause of the problem.
<kelemengabor> Let's suppose that you already know how to do the branching :).
<kelemengabor> Now that you have the code, what's the first thing to check?
<kelemengabor> It is the presence of the string and grep is your friend here. Packages build upon each other, so maybe what you see untranslated comes from another package.
<kelemengabor> If you cannot find the offending string, then you should search in the dependencies of the package. apt-cache can help with this.
<kelemengabor> I mean in the sources of the dependencies :)
<kelemengabor> Okay, so you have confirmed that the string is present in the source. It may or may not be present in the template (.pot file), let's see first what went wrong if it is not present in there.
<kelemengabor> Most common problem is that it is simply not marked for translation.
<kelemengabor> Example bug:
<kelemengabor> https://bugzilla.gnome.org/show_bug.cgi?id=666773 and its patch: https://bugzilla.gnome.org/attachment.cgi?id=204150
<kelemengabor> Overview:
<kelemengabor> For strings to be extracted into pot files, they need to be marked for translation with the gettext() function, or its shortcut macro, _().
<kelemengabor> In the attached patch, we see that this call was forgotten, the solution is pretty simple:
<kelemengabor> -		similar_artists_item = gtk_menu_item_new_with_mnemonic (("Listen to _Similar Artists Radio"));
<kelemengabor> +		similar_artists_item = gtk_menu_item_new_with_mnemonic (_("Listen to _Similar Artists Radio"));
<kelemengabor> This applies for C, C++, Vala, and Python sources, other languages / source file types use other calls or methods to mark strings for translation.
<kelemengabor> (This patch also contains a solution for an other type of problems, so don't close it yet.)
<kelemengabor> Another common source of untranslated strings is the po/POTFILES.in file.
<kelemengabor> Example bug:
<kelemengabor> https://bugs.launchpad.net/bugs/923762
<kelemengabor> Overview:
<kelemengabor> This contains a list of file names, which contain strings marked for translation. This list is maintained manually by the maintainers, who often forget to update it when they add new source files.
<kelemengabor> Luckily, we have a way to detect such files, and this is the intltool-update -m command.
<kelemengabor> This generates the list of missing files, which you most probably want to include in the POTFILES.in file.
<kelemengabor> Sometimes, there are files which really should not be exposed to translators, like sources of automated tests, or .c files generated from .vala sources.
<kelemengabor> Such files should go to the POTFILES.skip file. The attached branch illustrates this too.
<kelemengabor> intltool-update -m has its limitations too - for example, it can currently not detect translatable strings in .vala files, so you are on your own with those.
<kelemengabor> While we are at the POTFILES.in file and intltool-update, I'd like to point out another limitation of the latter. This is file type detection, a prominent source of errors with Glade UI files.
<kelemengabor> But we need to take a step back to understand this.
<kelemengabor> Example bug:
<kelemengabor> https://bugs.launchpad.net/oneconf/+bug/828897
<kelemengabor> Overview:
<kelemengabor> If you have read the gettext manual (okay-okay... you are here because no one does that, including me :))
<kelemengabor> That I linked at the beginning, you might have noticed that it speaks about using xgettext
<kelemengabor> for extracting the translatable strings from source code into the .pot file.
<kelemengabor> This happens in Ubuntu too, so what is intltool anyway?
<kelemengabor> intltool is a set of scripts, written to make the localization of formats not supported by xgettext possible.
<kelemengabor> Such are .desktop files, .xml, Glade UI files, and GConf schemas, among others.
<kelemengabor> intltool can detect such files based on their extension, but sometimes files have extensions different of the default.
<kelemengabor> Glade files used to have the .glade extension, but since the latest format change they have .ui (sometimes .xml) extensions.
<kelemengabor> So we need to explicitly tell intltool the type of such files. Maintainers forget/don't know this frequently:
<kelemengabor> -./data/ui/oneconfinventorydialog.ui
<kelemengabor> +[type: gettext/glade]./data/ui/oneconfinventorydialog.ui
<kelemengabor> Simple enough, huh?
<kelemengabor> Let's dig deeper into the gettext system then.
<kelemengabor> You might remember that I said earlier:
<kelemengabor> For strings to be extracted into pot files, they need to be marked for translation with the gettext() function, or its shortcut macro, _().
<kelemengabor> The world is not this simple, unfortunately.
<kelemengabor> There are situations in C/Python/others, where you cannot call a function, and gettext() is a function.
<kelemengabor> Such are the constant arrays, and their strings should be marked for translation with the N_() macro.
<kelemengabor> This is really a no-op, it serves only xgettext, so that it can extract the string into the .pot file.
<kelemengabor> But for the program to show the actual translation, you need to call the gettext() function with the array items.
<kelemengabor> This is what maintainers often forget and this can be seen in the last part of https://bugzilla.gnome.org/attachment.cgi?id=204150
<kelemengabor> All in all, the _() macro marks the string for translation and does the translation at runtime, while the N_() macro does only the marking.
<kelemengabor> There are other gettext functions and macros, but there is no time to cover those
<kelemengabor> If you made it until this point, you can be fairly sure that the string will make it into the pot file: check it by running intltool-update -p
<kelemengabor> But this does not means that the string will show up translated on the UI. We are just at the middle of the class :).
<kelemengabor> When you grepped the source for the untranslated string, you might have found it in all the po files, translated into 20 languages, yet not showing up in any of those languages.
<kelemengabor> What can be wrong at this point?
<kelemengabor> Example bug:
<kelemengabor> https://bugs.launchpad.net/ubuntu-translations/+bug/845473
<kelemengabor> Overview
<kelemengabor> Glade files need a little special attention to set up their i18n in the source code.
<kelemengabor> Usually, people do something like this - this applies not only for C, but for other program languages too:
<kelemengabor> GtkBuilder * builder = gtk_builder_new ();
<kelemengabor> gtk_builder_add_from_file (builder, "something.ui", &error);
<kelemengabor> This is not enough, if you want to show your items localized.
<kelemengabor> As you can see it in the branch attached to the bug, a gtk_builder_set_translation_domain() call is necessary *after* you create the GtkBuilder object, and *before* you add the items of the .ui file.
<kelemengabor> See also: http://developer.gnome.org/gtk3/stable/GtkBuilder.html#gtk-builder-set-translation-domain
<kelemengabor> Side note: http://developer.gnome.org/gtk3/stable/GtkActionGroup.html#gtk-action-group-set-translation-domain documents a similar need for GtkActionGroups.
<kelemengabor> Maintainers sometimes forget to do this. No problem, we are here to correct such mistakes :).
<kelemengabor> Other sources of errors are libraries.
<kelemengabor> Example bug:
<kelemengabor> https://bugs.launchpad.net/libubuntuone/+bug/902655
<kelemengabor> Overview:
<kelemengabor> Libraries can have translatable strings, and the translation of these should be looked up from the translation file of the library.
<kelemengabor> Pretty straightforward, isn't it?
<kelemengabor> When i18n support is initialized in the software, the translation file (also called "domain") to look up strings from is defined.
<kelemengabor> But this is never the same as the libraries domain!
<kelemengabor> So how can we still see strings from both the program and the library?
<kelemengabor> Libraries (should) use dgettext() instead of gettext(), which explicitly specifies the translation domain, unlike gettext(), which just uses the default.
<kelemengabor> glib, on which most Ubuntu GUI software builds, has two convenience headers, which define the _() and some other macros not mentioned here.
<kelemengabor> One is gi18n.h, which defines _() as gettext(), and the other is gi18n-lib.h, which defines _() as dgettext()
<kelemengabor> Sometimes, the authors of libraries confuse these two, as you can see in the example bug.
<kelemengabor> Another problem might be that initialization of the i18n support is sometimes incomplete.
<kelemengabor> Example bugs:
<kelemengabor> for C: https://bugzilla.gnome.org/show_bug.cgi?id=666516
<kelemengabor> for Python: https://bugs.launchpad.net/ubuntu/+source/system-config-printer/+bug/783967
<kelemengabor> for Vala: https://bugs.launchpad.net/ubuntu/+source/gwibber/+bug/837530
<kelemengabor> Overview:
<kelemengabor> In the  main source file of each standalone executable, you need a few lines of code to make the i18n work.
<kelemengabor> These are documented here: http://www.gnu.org/software/gettext/manual/gettext.html#Triggering
<kelemengabor> If the maintainer forgets some of these, xgettext will still extract the translatable strings - yet the gettext() calls won't know where to look for translations,
<kelemengabor> or which language should they show the strings in.
<kelemengabor> When this happens, usually whole windows and command line outputs show up untranslated, so this kind of problem is easy to spot.
<kelemengabor> GTK+ only adds to the confusion, because it always calls setlocale() in the gtk_init*() function, so you can get used to not call it, even if you write a program that does not use GTK+
<kelemengabor> This is what happened in the first bug.
<ClassBot> There are 10 minutes remaining in the current session.
<kelemengabor> The other two bugs are not complicated, they just show the complete lack of the crucial few lines in Python and Vala - I leave them here for future reference.
<kelemengabor> Okay, I think it is enough of possible upstream bugs for today. These were the common ones, but there are many others not mentioned.
<kelemengabor> These are upstream ones, because they happen in the code anyone can package for her favourite distribution.
<kelemengabor> Now I'd like to talk a little about Ubuntu-specific problems, that can happen during the packaging process.
<kelemengabor> Fortunately, there is not so many of these.
<kelemengabor> Example bug:
<kelemengabor> https://bugs.launchpad.net/ubuntu-translations/+bug/910268
<kelemengabor> https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/876866
<kelemengabor> Overview:
<kelemengabor> If you want a translation template appear in LP Translation, you need to generate it during the build process.
<kelemengabor> For this, usually dh_translations is used, which is a little helper script above intltool, to generate the translation template and prepare the package for use with language packs.
<kelemengabor> However, sometimes it is not in use, which is a bug.
<kelemengabor> So you need to make sure it is called, either as an argument of dh, like in the first bug
<kelemengabor> or as a standalone call in the rules file at the end of the build, like in the second.
<kelemengabor> Including the gnome.mk cdbs rule is also okay, because that runs dh_translations too
<kelemengabor> This part is no rocket science :)
<kelemengabor> Another possible Ubuntu-specific problem can be untranslated strings in patches.
<kelemengabor> Example bug:
<kelemengabor> https://bugs.launchpad.net/ubuntu-translations/+bug/883495
<kelemengabor> Overview:
<kelemengabor> Some Ubuntu patches add new strings, but the authors sometime make the same mistakes as upstream authors.
<kelemengabor> Getting those bugs fixed is a little different, because you need to patch the patch.
<kelemengabor> But that's all, the possible mistakes are the same as above.
<kelemengabor> Recommended reading for this is https://wiki.ubuntu.com/PackagingGuide/Complete#Patch_Systems
<kelemengabor> Most of the time, you need only to use edit-patch, but this is covered better in the guide, so now I just recommend reading it.
<kelemengabor> My experience is that it may sound scary at first, but it isn't really!
<kelemengabor> Okay, we are almost there!
<kelemengabor> Last thing to talk about is submitting the patch. Where should you go with it?
<kelemengabor> Now, you have a branch of the Ubuntu package tree, with a fixed bug.
<kelemengabor> I recommended to branch the Ubuntu tree because you can instantly rebuild your patched package, and test it, which is a Good Thing.
<kelemengabor> Unless it is an Ubuntu-specific bug, where you can go straight ahead with the "Commit - bzr push - Link a related branch - Propose for merging" dance â
<kelemengabor> which was hopefully covered in other classes this week :) â you need also do the following:
<kelemengabor> - Get the upstream source, whether it comes from Gnome git, an LP project or anywhere else.
<kelemengabor> - Create a patch against your Ubuntu-tree
<ClassBot> There are 5 minutes remaining in the current session.
<kelemengabor> - Apply it on the upstream tree (let's assume  it applies cleanly :))
<kelemengabor> - Submit it into the respective bug tracker of the project.
<kelemengabor> If you are lucky, and you chose a project whose upstream is on LP, you can just mark that as also affected, link the branch, submit a merge proposal, and you are done!
<kelemengabor> Thanks for the attention, if there are future questions or you would like to help, you can find me on #ubuntu-translators !
<kelemengabor> unbelievable, I did it :)
<kelemengabor> Questions?
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: How to fix small bugs in Ubuntu - Instructors: warp10
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
<warp10> Hi all!
<warp10> Who's here to learn how to hunt down bugs? Raise your hands in #ubuntu-classroom-chat, guys!
<warp10> Ok, great!
<warp10> Introductions first: I am Andrea Colangelo, Ubuntu Developer since 2008, with a particular focus on QA, and proudly member of a few teams of the rocking Italian Loco Team too.
<warp10> In the next ~30 minutes we will have a glance at how to fix small bugs in Ubuntu.
<warp10> If you followed the previous sessions, you already know how to setup your development box and the tools we use everyday, right?
<warp10> In this session we will pick a few interesting bugs, already fixed and closed, and we will see how they have been solved.
<warp10> This will cover both technical and "social" aspects. The latter are extremely important, since they impact the way you relate to you fellow ubuntu developers and upstreams.
<warp10> One of our very special upstreams is Debian, and very often bugfixing is worth being done there rather than here in Ubuntu.
<warp10> If you followed Laney and tumbleweed yesterday, they held great sessions about working {in,with} debian. I recommend reading them if you didn't already
<warp10> So, let's get started!
<warp10> Our first bug will be: https://bugs.launchpad.net/ubuntu/hardy/+source/abiword/+bug/194443
<warp10> Although it's quite old right now, it's a nice example of the good old debdiff-way of doing things.
<warp10> Looking at archive rebuild test result, I noticed abiword did FTBFS. Do you know what does this acronym means?
<warp10> It stands for "Fail To Build From Source". It's pretty common in Debian/Ubuntu Development: it just means that a source package doesn't compile correctly and doesn't build a binary package. A pretty bad situation, as you can imagine.
<warp10> To investigate the bug I carefully checked the build log, it is still available here: https://lists.ubuntu.com/archives/ubuntu-autotest/2008-February/018645.html
<warp10> As you see, it crashes with a sad error: "E: Package libgoffice-0-5-dev has no installation candidate". Nevertheless, the builder itself gives us an hint, saying that libgoffice-0-6-dev replaces it.
<warp10> What happened is that a new release of libgoffice overseded the older package. A pretty common situation who typically leads to a bad, but easily fixable, FTBFS.
<warp10> Patch is really simple. I downloaded the source package with `apt-get source abiword`. This command grabs the three files of the source package from archive, unpack the original tarball and applies the diff file containing the debian/ directory. I guess you already had a chance to learn about this in a previous session.
<warp10> Although we are moving towards using bzr in the Ubuntu Distributed Development way-of-life, knowing the old good methods (who are currently used in Debian!) is still a good thing to know, so questions are welcomed if something is unclear.
<warp10> The file containing the dependencies needed to build the package is debian/control, so I modified the build-dep name there.
<warp10> I also changed the changelog to bump the package version number and drop a line about what I did.
<warp10> !Q
<ClassBot> kanliot asked: I don't know the location of the debian director, or where the apt-get source files get put
<warp10> kanliot: debian/directory is in the root of the source tree. And the source package is taken from the archive itself
<warp10> Then, I simply rebuilt the source package with debuild -S, then compared the two source packages (the original one and the fixed one) with debdiff to extract the patch I attached to the bug report: https://launchpadlibrarian.net/12158067/abiword_2.4.6-3ubuntu3.debdiff
<warp10> Do you know debdiff? It's a sort of wrapper around the diff utility specifically targeted to debian packages. It produces patches that you can apply to a source tree with patch. Please check `man debdiff` for more info.
<warp10> At the time I fixed this bug I wasn't a MOTU already, so I created the debdiff, attached it to the bug report, and a couple days later a sponsor uploaded it into archive. Of course, I build-tested my fixed package with pbuilder before submitting the debdiff: you absolutely don't want to propose patch without a thorough testing, do you?
<warp10> Debdiff sponsored, abiword built, bug fixed! Easy, isn't it?
<warp10> And please, feel free to ask question in #ubuntu-classroom-chat , just prefix them with "question:"
<warp10> Anyway, today we tend to prefer the new Ubuntu Distributed Development paradigm. As you know, it uses bzr branches rather than downloading source packages from archive, giving us a bunch of advantages compared to the good old Debian way.
<warp10> barry had a great session yesterday about this topic, showing you and all the (few) commands and the workflow you need to know to propose a bugfix.
<warp10> Let's see another bitesize example, using UDD this time. Please, head your browser at maximum warp speed toward https://bugs.launchpad.net/ubuntu/+source/update-manager/+bug/918302
<warp10> "canceled" or "cancelled", that is the question! (cit.) We had a sort of philological discussion here! Looks like both are fine, but the discussion lead us to say that we want to use "canceled" consistently across the whole program.
<warp10> You could fix this bug with `apt-get source update-manager` and than following the workflow we saw in the previous bug, but Daniel Polehn decided to do Ubuntu Development on steroids, using bzr.
<warp10> Downloading the source branch is very simple: `bzr branch ubuntu:update-manager`. This command will download the branch, ready for development, with debian/ directory included and applied already.
<warp10> The inconsistency is in DistUpgrade/DistUpgradeView.py, so we patch that file, then we add the usual entry in debian/changelog. You can see Daniel'swork in the branch he proposed for merging here: https://code.launchpad.net/~dpolehn-gmail/update-manager/fix-918302
<warp10> We are almost done! Enough we commit the patch with the usual `bzr commit` and then upload our new branch and open the merge proposal.
<warp10> This can be easily done with bzr lp-done, which will guide through the process within your browser. More information about uploading and sponsoring of merge proposal here: http://developer.ubuntu.com/packaging/html/udd-working.html
<warp10> Of course, don't forget to test your work! bzr builddeb will help you generating both the source and debian package.
<warp10> Any question so far?
<warp10> Next bug will allow us to talk about a very important topic: working with upstream.
<warp10> As you all know, Ubuntu is built upon Debian, and very often we import both the packages and bugs from there :)
<warp10> Therefore, it's often a good thing to send back our patches to Debian. There are a lot of good reasons to do this, someone of them were discussed by Daniel in the first session of UDW.
<warp10> Let's see an example of good cooperation with Debian: https://bugs.launchpad.net/ubuntu/+source/xemacs21/+bug/4883
<ClassBot> PaoloRotolo asked: How I can find the FTBFS bugs on Launchpad? There is a list?
<warp10> PaoloRotolo: very good question
<warp10> PaoloRotolo: ubuntuwire is plenty of resources about QA and FTBFS
<ClassBot> There are 10 minutes remaining in the current session.
<warp10> PaoloRotolo: point your browser to http://qa.ubuntuwire.com/ annd especially to http://people.ubuntuwire.org/~wgrant/rebuild-ftbfs-test/
<warp10> so, back to the bug above
<warp10> We have a problem with xemacs21 info pages here, and debian has the very same issue. This is a very ancient bug, but don't care, we are interested more to the "spirit" of this bugfix rather than to technical aspects.
<warp10> Scroll through the discussion in this bug report and go to comment #9. Ralph Janke proposed a debdiff here (generated in a very similar way to how we saw in the first bug). After attaching the patch, Ralph answered to the debian bug too (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=330253), informing the debian maintainer that a patch was available in ubuntu.
<warp10> Actually, the debdiff got improved in the following days, and eventually arrived to an optimal version. This debdiff was used by the debian maintainer to upload a fixed package in Debian. Later, the package was synced from Debian, and the fix arrived in Ubuntu as well.
<warp10> Don't you think this is a great way of working with bugs? This way we avoid adding a useless delta from debian, give back something to debian, improve our relationships with our upstream, allow other debian derivatives to take advantage, and even more.
<warp10> Actually, we can even go more far away, suggesting patches to the upstreams of our immediate upstream Debian, like we did in this bug: https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/397248
<warp10> The problem here involves GNOME, so it's worth sending a patch to GNOME itself, rather than sending it to Debian only.
<ClassBot> kelemengabor asked: what should I do if I want to hack on a particular package, but its bzr branch is outdated? like, Transmission in Precise.
<warp10> kelemengabor: Just stick to the good old apt-get source and grab it straight from archive
<warp10> So, back to the bug. IT is a little bit nasty here, and involves some advanced knwoledge about gdb, but we don't care this so much: the Internt is plenty of resources about debugging with gdb.
<warp10> As you can see from the debdiff at comment #14, the patch is so small, but involved a little bit of work to get there and to understand what was going wrong. Don't worry, you absolutely don't need to be a gdb master to be a great MOTU.
<warp10> You need good communication skills, instead, and Scott Howard reported the bug to the GNOME bug tracker (https://bugzilla.gnome.org/show_bug.cgi?id=588259) and added his findings too, giving a great help to the upstream developer to write a patch.
<warp10> This way, the patch got integrated from GNOME and in a few days flowed downstream to Debian and Ubuntu. That's great!
<warp10> So, all in all, what we learn from all of this? A lot of things:
<ClassBot> There are 5 minutes remaining in the current session.
<warp10> 1- fixing bugs in Ubuntu is easy and makes lot of people happy! :)
<warp10> 2- it's not a matter of a being a great programmer. You rather need good communcation and detective skills
<warp10> 3- you are not alone! Your fellow ubuntu developers and sponsors are there to help, teach you and give great hints to improve your work. Don't hesitate to ask in #ubuntu-motu or ubuntu-motu@ if you are in trouble!
<warp10> 4- upstreams matter. Don't add useless deltas from debian, rather cooperate with debian developers to get the best for both worlds.
<warp10> For more information about Bug triaging, please refer to: https://wiki.ubuntu.com/Bugs
<warp10> Another interesting wiki page about bugfixing is: https://wiki.ubuntu.com/Bugs/HowToFix
<warp10> And of course, the main entry point for everything about Ubuntu Development: https://wiki.ubuntu.com/UbuntuDevelopment
<warp10> Ok, guys, this ends our travel across the bugfixing world
<ClassBot> pawel_st_ asked: kelemengabor realized that a package was outdated in bzr branch. Why is that, do you always have to check if apt-get source provides newer version?
<warp10> pawel_st_: you will be warned by bzr if bzr source branch is outdated
<warp10> pawel_st_: sop, no need to apt-get source just to check it
<warp10> Ok, hope you got eager to fix bugs, guys!
<warp10> And now, everybody stand here to listen cprofitt who will tell us great things about life-cycle of bug reports in Ubuntu.
 * warp10 says "Ciao a tutti!"
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Problem Lifecycle in Ubuntu - Instructors: cprofitt
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%23ubuntu-classroom.html following the conclusion of the session.
 * cprofitt says hello
<cprofitt> Welcome to Problem Lifecycle in Ubuntu.
<cprofitt> Let me introduce myself. I am Charles Profitt and have been an Ubuntu Member since January of 2009 and involved Loco Community.
<cprofitt> This session is a result of a UDS-O I led on improving the community involvement with Bugs. That session was focused on the end users, not the developer or QA groups.
<cprofitt> In this session I will try to focus this on the developer and QA part of the Ubuntu community. I encourage questions to be asked at any time.
<cprofitt> To ask a question, you need to be in #ubuntu-classroom-chat and ask your question in the following format:
<cprofitt> QUESTION: <your question here>
<cprofitt> note: If you do not begin the line with QUESTION:, ClassBot will not recognize it, and your question will most likely not get answered.
<cprofitt> the previous session was on fighting bugs,... but this session will focus on 'problems'
<cprofitt> The first thing to remember is that a problem and a bug are not the same. While bugs to cause problems they are not the sole cause.
<cprofitt> The next important part is to remember that we have three distinct groups in our community.
<cprofitt> 1 - Users
<cprofitt> 2 - Technical Users - Systems Administrators or More Advanced Users
<cprofitt> 3 - Developers - app developers, packagers, patchers, etc
<cprofitt> the users group is and will continue to be the largest group
<cprofitt> when Ubuntu started that group was very technical, but as the ease of use has increased the groups has increasingly become composed of less technical users
<cprofitt> this is a good thing!!
<cprofitt> The final general piece is that bugs are best resolved in development releases and not in stable releases. Once a release is stable there is a much more detailed and stringent process that has to be followed for an update to be released (SRU - Stable Release Update). This is due to the requirement to not cause a cascade of 'bugs'.
<cprofitt> This creates a bit of a problem because most, if not all, of the people that fall in the 'users' group will not be running the development release. In fact, many of the technical users will only run the development release on spare equipment.
<cprofitt> As our community grows the percentage of Ubuntu users will largely be in the users group and with the developers ending up as the smallest group. To sustain growth it is essential for the entire community to understand the Problem Life Cycle in brief.
<cprofitt> Why do I call it the Problem Life Cycle?
<cprofitt> Because all bugs start with a problem. A problem might be resolved by a configuration being corrected or it could truly be a bug.
<cprofitt> The resolutions of problems start prior to bug reports; bug reporting is for when a problem can be identified as being caused by a bug.
<cprofitt> Here is a link to the diagram about the Ubuntu Problem Cycle.
<cprofitt> http://ftbeowulf.files.wordpress.com/2011/11/ubuntu-problem2.png
<cprofitt> the diagram was just translated this week as well...
<cprofitt> and I would appreaciate anyone willing to translate it in to their language
<cprofitt> The Ubuntu Community has several resources for users seeking help with a problem; they are:
<cprofitt> Ubuntu Forums - ubuntuforums.org
<cprofitt> Ask Ubuntu - askubuntu.com
<cprofitt> IRC - multiple channels on freenode
<cprofitt> Ubuntu Wiki - help.ubuntu.com/community (community) or help.ubuntu.com (official)
<cprofitt> Local Community Teams - as my friend Randal says -- boots on the ground
<cprofitt> You see this in the first set of boxes in the diagram. If a problem is solved here it is due to a misconfiguration or a mis-understanding of what a piece of software does. I do not consider a work-a-round a solution.
<cprofitt> if you are a developer it can help that you are familiar with these areas
<cprofitt> it might help expose items that are not bugs, but that are causing users difficulty
<cprofitt> for application developers looking to have their applications grow in popularity this can be crucial
<cprofitt> You see this in the first set of boxes in the diagram. If a problem is solved here it is due to a misconfiguration or a mis-understanding of what a piece of software does. I do not consider a work-a-round a solution.
<cprofitt> If a problem in a stable release is not solved then a user can either wait for the next release or embark on a process that in the past usually ends in frustration for them. That frustration stems from a misperception of the lifecycle.
<cprofitt> this misundertanding is important...
<cprofitt> and we can not, as a community, respond with phrases like RTFM
<cprofitt> regardless of stable or development release; the most important part of bug resolution is in the triage process. Reports must be complete and accurate.
<cprofitt> A great resource for reporting bugs can be found here:
<cprofitt> https://help.ubuntu.com/community/ReportingBugs
<cprofitt> Realize that some bugs are not crashes, but unexpected behavior. As a very simple example imagine a calculator that gave a result of 5 for 2+2. It would not crash, but it would still have a bug that results in unexpected, and inaccurate, results.
<cprofitt> For crashes application developers should strive to write error handling code that can provide the end user with meaninful data that can be reported back to the developer.
<cprofitt> As a person who supports proprietary sofware in my day job I am very used to errors that tell me nothing more than what I already know --
<cprofitt> like -- your app crashed
<cprofitt> try to add information that you, as a developer, will need to find the bug
<cprofitt> not always easy; I know
<cprofitt> On the chart app developers would fall in the 'upstream' category. You should ensure that you have a process for bugs to be filed against your application.
<cprofitt> App Developers also have to understand that Ubuntu will not usually push your 'patches' in to a stable release.
<cprofitt> If you are involved in bug triage you really need to strive to be friendly and helpful to the user reporting the bug if you wish to keep them engaged. I understand that some reports are a 'waste of time', but take those as an opportunity to help the person reporting the bug learn how to complete better reports.
<cprofitt> We also have to understand that waiting for the next release is not a 'bad' thing. Many users are coming from the Microsoft world and are used to new releases being three to five years apart. Remind yourself, and the users, that Ubuntu will put out six releases in a three year period of time. A potential six month wait is a small price to pay for the stability of the release.
<cprofitt> so to summarize so far
<cprofitt> Users will experience a problem (may or may not be a bug)
<cprofitt> they will use any of the several community support resources to seek a solution
<cprofitt> the solution could be a configuration change or a work-a-round
<cprofitt> after that if their problem is not resolved they may choose to submit a bug report
<cprofitt> if that bug report is against a stable release it will have to go through a stringent process before having an SRU update
<cprofitt> if it is in a development release the liklihood of getting it fixed is much higher
<cprofitt> and the payback for the community that much greater
<cprofitt> this process is captured at a high level here:
<cprofitt> http://ftbeowulf.files.wordpress.com/2011/11/ubuntu-problem2.png
<cprofitt> any questions?
<cprofitt> I understand this process has been very abstract...
<cprofitt> more of a high level over-view
<cprofitt> one thing to keep in mind is some of the potential end points for bugs
<cprofitt> when a developer marks a bug 'will not fix' it might be a case of 'can not fix'
<ClassBot> There are 10 minutes remaining in the current session.
<cprofitt> consider the case of xubuntu which depends on upstream
<cprofitt> there may be times when the upstream has decided a specific version is no longer supported
<cprofitt> but Ubuntu promises support for an LTS beyond that point
<ClassBot> pawel_st_ asked: One of the common complaints about ubuntu bug tracking and fixing is that there are bugs that span multiple releases and don't seem to be taken care of properly (sorry, can't give you an example from top of my head). What would you say to that critique?
<cprofitt> properly is potentially a result of not understanding the lifecycle
<cprofitt> once the bug is in a stable release it may not get fixed if there is the potential of it causing stability issues
<cprofitt> in other cases, like the LTS
<cprofitt> upstreams may not be supporting the version of the product included
<cprofitt> the other issue is even with +1 or +2 bugs the fix might depend on an upstream developer
<cprofitt> this is one area triagers can help
<cprofitt> by learning how to report bugs upstream properly
<cprofitt> or guiding the reporting end user how to report it upstream
<cprofitt> I agree completely that the process can be frustrating when you report a bug and it does not get fixed
<ClassBot> There are 5 minutes remaining in the current session.
<cprofitt> I have reported bugs for four years and only twice had updates released for my reports
<cprofitt> I think the key is really helping bug reporters have proper expectations as to how things get fixed
<cprofitt> bugs in an SRU will rarely get fixed
<cprofitt> bugs in +1 or +2 that are upstream will only get attention if they go upstream properly
<cprofitt> My hope is that we can build a process of ensuring that our entire community has a overview of the process so that they have a reasonable set of expectations
<cprofitt> to avoid the 'rage' I see in bug reports on occassion
<cprofitt> and to avoid triager and developer burn out
<ClassBot> kanliot asked: what is an SRU
<cprofitt> and SRU is a Stable Release Update
<cprofitt> when a part of the Stable Release gets a patch.... it is called an SRU
<cprofitt> thank you to everyone who attended
<cprofitt> I hope that this session can spark community discussion about this so we can move forward and manage our communities growth
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/02/%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 ||
#ubuntu-classroom 2012-02-03
<josephdavidrich1> hi
<sagaci> hi
<josephdavidrich1> I know this is more lubuntu but can you help me how do I get icons on not desktop I can do it on ubuntu because of nautilus
<josephdavidrich1> on desktop
<sagaci> not sure, you'd be better to ask in #lubuntu
<josephdavidrich1> ok then
<abvayad> .
<abvayad> Hi
<abvayad> No topics? Or am i hanged ?
<nigelb> Nothing today, no.
 * cielak is away: Busy/Away
#ubuntu-classroom 2012-02-04
<tachyons> .
<abvayad> ,
#ubuntu-classroom 2012-02-05
<pipedream> ;
<Guest93626> hiiiii
#ubuntu-classroom 2013-01-28
<gladen> So, is it possible to view any lessons back afterwards?
<pleia2> they're linked on the classroom site: https://wiki.ubuntu.com/Classroom
<pleia2> if they haven't been linked yet, you can always look up the day on
<pleia2> !logs
<ClassBot> Logs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/
<gladen> Ah, alright thanks. Because I already saw some interesting classes that I am probably not going to make.. :P
<pleia2> happens all the time :)
<pg77> anyone before starting ubuntu development and considering options like python vs C++, qt etc?
<JoseeAntonioR> pg77: UDW starts in 15:30 hours
<pg77> i know :)
<pg77> just wanted to ask
<JoseeAntonioR> pg77: well, people should tend to just idle here, there will be mostly none until the event happens
<pg77> ok thx
<pg77> just checking ;)
#ubuntu-classroom 2013-01-29
<Gillfish> can anyone tell me if I can set this up to log the classes tomorrow?
<JoseeAntonioR> Gillfish: you're all set for tomorrow :)
<JoseeAntonioR> Gillfish: logs will be available after the sessions
<Gillfish> thanks.  I have to attend this for A college class
<JoseeAntonioR> no worries
<deepak> hello
<Anand_> is it started?
<Cobold> Hi all..?
<djones_> hello
<genupulas> djones_, this is Official Channel , If you want help please do at #ubuntu
<djones_> no dont need help just saying hello waiting for the discussions to start
<genupulas> please join at #ubuntu-classroom-chat
<xkernel> Does this channel will host the Ubuntu Developer week today's session?
<genupulas> yes
<genupulas> xkernel,
<mohamedalaa98> About an half hour remaining :)
<mohamedalaa98> *a
<Geeknux> still waiting!
<DoctorRon> Hey there friends...
<Gladen> Just to be clear, join #ubuntu-classroom-chat for the regular smalltalk :P
<Gillfish> j/ #ubuntu-classroom-chat
<dudel> s
<JoseeAntonioR> Hey! Remember all discussion/questions will take place in #ubuntu-classroom-chat, you should join by typing "/j #ubuntu-classroom-chat" without quotes if you're not already in there :)
 * dholbach hugs JoseeAntonioR
 * JoseeAntonioR hugs dholbach back
<quequotion> what's coming up on the schedule?
<dholbach> quequotion, https://wiki.ubuntu.com/UbuntuDeveloperWeek/ :)
<phoenix_firebrd> dholbach: hi
 * quequotion runs date -u
<tuxfan_> 6min and counting :)
<quequotion> oh.... Unity's not for another 4 hours... too bad I have work early tomorrow morning....
 * mohamedalaa98 is waiting
<JoseeAntonioR> quequotion: we'll have logs of everything
<tuxfan_> QUESTION: Will there be logs of the session cause i toohave to work :)
<quequotion> logs aren't as good as partcicipation :(
<amin_> 2mins
<dholbach> quequotion, the good thing is, after reading the logs you'll know more and you know who to ask all the questions you might have - today is not the only day all these people are on IRC :-)
<quequotion> dholbach, true, but I hope i'll find as effective an opportunity to give my opinions as well.
<dholbach> WELCOME EVERYBODY TO A GREAT UBUNTU DEVELOPER WEEK! :-)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Ubuntu Development - Instructors: dholbach
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<dholbach> We have three days of great sessions lined up to get you started with Ubuntu Development, to help you get to know some other developers and find new friends - and of course have a lot of fun.
<dholbach> First a few organisational bits and pieces:
<dholbach>  - There will be logs after the sessions. We will link them from the timetable on https://wiki.ubuntu.com/UbuntuDeveloperWeek/
<dholbach>  - If you have questions, please do ask! But please ask in #ubuntu-classroom-chat - if you're not there, please join now.
<dholbach>  - When you ask questions, please prefix them with QUESTION: - ie: QUESTION: What is jcastro's favourite electronic music artist?
<dholbach>     This way the questions will stand out and the bot can pick them up easily.
<dholbach> All right - with that... let's get started. :-)
<dholbach> My name is Daniel Holbach, I live in Berlin, Germany and have been part of the Ubuntu project since about 8 years now and always loved Ubuntu development and our community. So that's what I mostly work on.
<dholbach> We'll have two hours to get you introduced to Ubuntu Development and get your development environment set up.
<dholbach> After that you should be able to build packages, you should know where to find things, and at least have heard the most important bits and pieces once. :-)
<dholbach> If I'm going too fast, too slow, don't make sense or you have questions, please ask - #ubuntu-classroom-chat is all yours. :-)
<ClassBot> jierro asked: What is jcastro's favourite electronic music artist?
<dholbach> It's deadmau5 or however the mau5 is spelled and he mentions him at least once a day to me. :-)
<dholbach> Let's see if we get more Ubuntu development related questions though next. ;-)
<dholbach> Ubuntu is made up of thousands of different components, written in many different programming languages. Every component - be it a software library, a tool or a graphical application - is available as a source package. Source packages in most cases consist of two parts: the actual source code and metadata.
<dholbach> Metadata includes the dependencies of the package, copyright and licensing information, and instructions on how to build the package. Once this source package is compiled, the build process provides binary packages, which are the .deb files users can install.
<ClassBot> quequotion asked: are we really going to learn how to build packages, or more specifically debian-package things? I've spent a lot of time not getting that right.
<dholbach> quequotion, we'll see how much time we have during these two sessions, but maybe I can provide a little overview - there'll be more content about this during the week though.
<ClassBot> tuxfan_ asked: will this session have to do with quickly and python specifically?
<dholbach> tuxfan_, no, but at 19:00 UTC there'll be a session about Ubuntu App Developer Tools led by mhall119 where this will be covered.
<dholbach> Also will an  Ubuntu *App* Developer Week  be scheduled soon, which will have lots of app-related content, while at Ubuntu Developer Week we'll mostly concentrate on developing Ubuntu itself
<ClassBot> jincreator asked: Due to some problems, currently my environment is precise. Is it can be problem to follow sessions?
<dholbach> jincreator, yes, should be fine - we'll get back to the question in about an hour :)
<dholbach> Every time a new version of an application is released, or when someone makes a change to the source code that goes into Ubuntu, the source package must be uploaded to Launchpadâs build machines to be compiled. The resulting binary packages then are distributed to the archive and its mirrors in different countries.
<dholbach> The URLs in /etc/apt/sources.list point to an archive or mirror. Every day CD images are built for a selection of different Ubuntu flavours. Ubuntu Desktop, Ubuntu Server, Kubuntu and others specify a list of required packages that get on the CD. These CD images are then used for installation tests and provide the feedback for further release planning.
<dholbach> Any more questions so far?
<dholbach> Ok, cool - let's talk a bit more about how we put together releases then.
<dholbach> Ubuntuâs development is very much dependent on the current stage of the release cycle. We release a new version of Ubuntu every six months, which is only possible because we have established strict freeze dates.
<dholbach> With every freeze date that is reached developers are expected to make fewer, less intrusive changes. Feature Freeze is the first big freeze date after the first half of the cycle has passed.
<dholbach> At this stage features must be largely implemented. The rest of the cycle is supposed to be focused on fixing bugs. After that the user interface, then the documentation, the kernel, etc. are frozen, then the beta release is put out which receives a lot of testing.
<dholbach> From the beta release onwards, only critical bugs get fixed and a release candidate release is made and if it does not contain any serious problems, it becomes the final release.
<ClassBot> tuxfan_ asked: What do you mean by freeze date?
<dholbach> If you have a look at https://wiki.ubuntu.com/RaringRingtail/ReleaseSchedule you can see the schedule for the current 13.04 release.
<dholbach> If you scroll down a little bit you can see that in March we have established a few dates, which are basically deadlines for all the Ubuntu developers.
<dholbach> So in order to get a good release out, we agree on these dates beforehand and make sure that towards the end of a release cycle we just stabilise and fix and stop introducing crazy big changes. :-)
<ClassBot> maxi_ asked: freature freeze is is always the first freeze?
<dholbach> We have some deadlines before, like "Feature Definition Freeze" where the plans for the release need to be ironed out.
<dholbach> (More on the planning aspect in a bit.)
<dholbach> And "Debian Import Freeze" which means that we stop automatically importing changes from Debian. (More on that in a sec too.)
<dholbach> But yes, Feature Freeze, is the first big, notable, one.
<ClassBot> tuxfan_ asked: So freeze date is like deadlines for big changes in the OS and then from these dates and on only critical bug fixxing?
<dholbach> tuxfan_, yes.
<dholbach> This also determines what kind of things Ubuntu developers, volunteers and enthusiasts work on.
<dholbach> If you want to get big crazy changes introduced in Ubuntu 2 days before the release, you will have a hard time arguing with the release team. :-)
<ClassBot> mohamedalaa98 asked: what is the most important programming languages that should be learned to start development in ubuntu?
<dholbach> Almost all programming languages are used in Ubuntu. On the Ubuntu installation CD you will have C, C++, Perl, Python, C# (I think), Vala, Go (I think) and many others.
<dholbach> For low-level things like interaction with hardware, C is used a lot. Python is a favourite within the Ubuntu world, but we're not limited to it.
<dholbach> All right, since it came up earlier, let's talk a bit about feature planning.
<dholbach> Thousands of source packages, billions of lines of code, hundreds of contributors require a lot of communication and planning to maintain high standards of quality. At the beginning of each release cycle we have the Ubuntu Developer Summit where developers and contributors come together to plan the features of the next releases.
<dholbach> Every feature is discussed by its stakeholders and a specification is written that contains detailed information about its assumptions, implementation, the necessary changes in other places, how to test it and so on.
<dholbach> This is all done in an open and transparent fashion, so even if you cannot attend the event in person, you can participate remotely and listen to a streamcast, chat with attendants and subscribe to changes of specifications, so you are always up to date.
<ClassBot> xkernel asked: If I want to develop a feature or solve a bug say in Unity, how do I test it?
<dholbach> xkernel, I'll get back to the question in more detail in a bit, but basically when you have your development environment set up, you can very easily hack on a package, do some changes, test-build it, test-install it and see if it works and then propose your change for inclusion.
<ClassBot> johnhamelink asked: You mentioned that if there are no major bugs in ubuntu then an RC becomes the final release, how do you make sure bugs don't regress?
<dholbach> johnhamelink, great question! :-)
<dholbach> We'll have some sessions on Automated Testing this week.
<dholbach> Tomorrow 18:00 UTC - Testing with autopilot -- balloons
<dholbach> Thursday 15:00 UTC - Automated Testing in Ubuntu -- pitti
<dholbach> We have lots of automated testing infrastructure in place, so that whenever changes are introduced test suites are run again and changes can only go in if the test suites pass. That's the reason why writing test cases is an excellent way to help Ubuntu in terms of Ubuntu development.
<dholbach> Coming back to Ubuntu Developer Summit and feature planning: Not every single change can be discussed in a meeting though, particularly because Ubuntu relies on changes that are done in other projects. That is why contributors to Ubuntu constantly stay in touch.
<dholbach> Most teams or projects use dedicated mailing lists to avoid too much unrelated noise. For more immediate coordination, developers and contributors use Internet Relay Chat (IRC). All discussions are open and public.
<dholbach> https://wiki.ubuntu.com/Teams might be a first step to finding out which team to contact how. I'll share some more info later on though.
<dholbach> Another important tool regarding communication is bug reports. Whenever a defect is found in a package or piece of infrastructure, a bug report is filed in Launchpad.
<dholbach> All information is collected in that report and its importance, status and assignee updated when necessary. This makes it an effective tool to stay on top of bugs in a package or project and organise the workload.
<dholbach> Most of the software available through Ubuntu is not written by Ubuntu developers themselves. Most of it is written by developers of other Open Source projects and then integrated into Ubuntu.
<dholbach> These projects are called âUpstreamsâ, because their source code flows into Ubuntu, where we âjustâ integrate it.
<dholbach> The relationship to Upstreams is critically important to Ubuntu. It is not just code that Ubuntu gets from Upstreams, but it is also that Upstreams get users, bug reports and patches from Ubuntu (and other distributions).
<dholbach> <CodeRed> QUESTION :  I'm a C/C++ developer new to ubuntu where shall I start with ?
<dholbach> CodeRed, You're absolutely right just where you are now. In this session I'll give a quick introduction and overview over Ubuntu Development and in the second session we'll talk about "getting set up" - afterwards I'll also share a few links on where to go next. Thanks a lot for your interest! :-)
<ClassBot> Lionthinker asked: are derivatives the only downstreams for Ubuntu?
<dholbach> Lionthinker, Ubuntu is used in many many places. There are derivatives/flavours/remixes, there are device manufacturers using it with small modifications, there are operators of clouds using it. There are LOTS and LOTS. :)
<ClassBot> tuxfan_ asked: So you are saying that through Upstream 3rd party apps bugs are fixed by ubuntu team?
<dholbach> tuxfan_, In most of the cases the software authors are in the best possible position to fix bugs, as they know the code well, but yes, it happens that bugs are fixed in Ubuntu and patches sent upstream. Depending on the project it happens a lot.
<ClassBot> everestt asked: What is a downstream?
<dholbach> everestt, Imagine software being written somewhere, then distributed by somebody else, then this is used by somebody else.
<dholbach> As an Ubuntu user, you could see some app as the Upstream, if it's in Debian, then Debian's upstream too, and Mint could be seen as s Downstream. :)
<ClassBot> dutchguy asked: Are you not afraid of beginner developers introducing bugs into a project?
<dholbach> dutchguy, We have a very good review process for new contributors, which I'll talk about in a bit.
<dholbach> The most important Upstream for Ubuntu is Debian. Debian is the distribution that Ubuntu is based on and many of the design decisions regarding the packaging infrastructure are made there.
<dholbach> Traditionally, Debian has always had dedicated maintainers for every single package or dedicated maintenance teams. In Ubuntu there are teams that have an interest in a subset of packages too, and naturally every developer has a special area of expertise, but participation (and upload rights) generally is open to everyone who demonstrates ability and willingness.
<dholbach> Getting a change into Ubuntu as a new contributor is not as daunting as it seems and can be a very rewarding experience. It is not only about learning something new and exciting, but also about sharing the solution and solving a problem for millions of users out there.
<dholbach> Open Source Development happens in a distributed world with different goals and different areas of focus. For example there might be the case that a particular Upstream is interested in working on a new big feature while Ubuntu, because of the tight release schedule, is interested in shipping a solid version with just an additional bug fix.
<dholbach> That is why we make use of âDistributed Developmentâ, where code is being worked on in various branches that are merged with each other after code reviews and sufficient discussion.
<dholbach> So let's say we have  superedit 1.0  in Ubuntu and Upstream is working on a rewrite of their font rendering for the 1.1 release.
<dholbach> If Ubuntu just has a couple of weeks until release left, we'll stick with 1.0 obviously. If there's a bug fix we need, we can add that on top of our 1.0 version and forward it to Upstream if they don't have it included yet.
<dholbach> Once the Ubuntu is released and the new release cycle started, we can take 1.1 from Upstream and we're totally in sync with Upstream again.
<dholbach> Maybe with this example you can imagine how multiple teams can work in similar but different directions because of different timelines.
<dholbach> The bigger the differences between the teams become, the harder it will be to maintain the delta in code, etc. That's why collaboration and planning is so important.
<ClassBot> jierro asked: Is development on ubuntu for tablets and phones already benefiting on ubuntu for desktop in any way? Like memory leaks, optimisations and stuff
<dholbach> jierro, Yes, absolutely. Wherever the code base is the same you will fix the bug (be it in functionality, memory usage or anything else) in one place and everybody will benefit. That's the beauty. :-)
<ClassBot> tuxfan_ asked: But will ver1.1 be updated in the allready released ubuntu version?
<dholbach> tuxfan_, that depends - if it's only serious bug fixes, it can go into the stable release ("stable release update" - "sru"), but if not, it can probably be backported
<dholbach> a rewrite of the font rendering (as in the example above) won't constitute a serious bug fix though :)
<ClassBot> maxi_ asked: why sometimes near the release are added visual characteristics?
<dholbach> maxi_, sometimes teams are late and they get freeze exceptions from the release team :)
<ClassBot> rt01 asked: does ubuntu maintain communication with upstream ? for example, if a bug is found in one particular version, does ubuntu proactively communicates upstream to find it fixed or it just waits until upstream releases a new version ?
<dholbach> rt01, that depends - of course we can't just forward ALL the bugs to upstream, but for a lot of projects we have very healthy communication channels where bugs, patches and information are passed back and forth
<dholbach> also many Ubuntu developers are actively involved in other projects (wear multiple hats)
<ClassBot> Lionthinker asked: if an upstream project is not yet done when freezing and shipping commences, can and does Ubuntu update the apps when released?
<dholbach> Lionthinker, I answered the question above. "that depends - if it's only serious bug fixes, it can go into the stable release ("stable release update" - "sru"), but if not, it can probably be backported
<dholbach>  a rewrite of the font rendering (as in the example above) won't constitute a serious bug fix though :)"
<ClassBot> Niraj_ asked: Why does it happen sometimes that some old release updates do not contain updated version of a package, whereas later releases include that update?
<dholbach> Niraj_, see above
<dholbach> it's because every change we introduce in a stable release might break functionality for millions of users
<dholbach> we have to be very very conservative with stable releases
<ClassBot> CodeRed asked: what skills are required for ubuntu kernel development ?
<dholbach> CodeRed, C skills will be necessary and https://wiki.ubuntu.com/KernelTeam might be a good start
<ClassBot> skyra asked: Which is better idea to fix the bug in the upstream directly or to fix it in ubuntu and send it upstream? Or there is no difference?
<dholbach> skyra, that depends - if we only have short time to fix the bug in Ubuntu because of the release date, we might want to get the fix into Ubuntu first and then forward it
<dholbach> if it's a small bug, we can forward it first and then get it from upstream in the next release
<ClassBot> Lionthinker asked: if an upstream project is not yet done when freezing and shipping commences, can and does Ubuntu update the apps when released?
<dholbach> already answered
<ClassBot> tuxfan_ asked: So why don't you just release it after becoming stable. I mean sometimes apps in later Ubuntu releases don't arrive in former Ubuntu releases (e.g 12.10 app ver won't probably make it in 12.04)
<dholbach> I think this kind of question is sufficiently answered now.
<dholbach> It's also quite relevant that maintaining several stable releases at the same time is a serious burden in terms of work.
<ClassBot> Brace asked: If you only have a few hours here and there (say one evening a fortnight) is it still possible to help out?
<dholbach> Brace, absolutely. We have many pupils, students, people who have a day job or who just have a couple of hours every now and then and they all contribute to Ubuntu. :-)
<ClassBot> nep1x asked: What does "backported" mean?
<dholbach> nep1x, there are many repositories for Ubuntu. There's the release repository obviously, there's "-security" with security fixes, there's "-updates" with critical fixes, and then theres's "-backports" with Ubuntu backports, so new versions which go into the release after it's released. (Generally safe, but use at your own risk.)
<ClassBot> tuxfan_ asked: Does conservative mean that non LTS releases are "equipped" mostly with non stable app versions? whilst LTS with stable ones?
<dholbach> tuxfan_, no
<dholbach> tuxfan_, it means that fixes have to be super-safe before they go into a stable release, no matter if LTS or not
<ClassBot> There are 10 minutes remaining in the current session.
<dholbach> tuxfan_, we had "obvious one line fixes" which broke functionality for users or some of our users
<ClassBot> jincreator asked: I heard about MicroReleaseException. What is required that package become on MRE?
<dholbach> jincreator, https://wiki.ubuntu.com/StableReleaseUpdates#New_upstream_microreleases
<ClassBot> Lionthinker asked: how will a rolling release schedule change development?
<dholbach> Interesting question,but we won't have time for this in this session. Try googling for some of the recent articles about it.
<dholbach> I'll quickly get back to the "Introduction to Ubuntu Development". :-)
<dholbach> So let's say we want to fix a bug in Ubuntu.
<dholbach> To fix a bug in Ubuntu, you would first get the source code for the package, then work on the fix, document it so it is easy to understand for other developers and users, then build the package to test it.
<dholbach> After you have tested it, you can easily propose the change to be included in the current Ubuntu development release. A developer with upload rights will review it for you and then get it integrated into Ubuntu.
<dholbach> So this is the code review bit I talked about earlier. Although we have documentation, this is the primary way you will learn conventions and it's a great way to get to know other Ubuntu developers.
<dholbach> After a while, when you've built a good track record of good contributions, you can apply for upload rights yourself.
<dholbach> This whole process is quite straight-forward.
<ClassBot> jincreator asked: Why we need freeze for even translating?
<dholbach> jincreator, If strings in packages change very late, translators will have to re-do their translations.
<ClassBot> bobweaver asked: What is the best approach to talking to a Upstreamer ?  Like is there any case studies on this or are there any plains for launchpad to integrate this function more then just contact this user ? I ask for making recipes and using others branchs
<dholbach> bobweaver, Upstream projects have IRC channels and mailing lists of their own, and usually by just a bit of googling you can find them pretty quickly.
<ClassBot> There are 5 minutes remaining in the current session.
<dholbach> It would be nice to have it all automated in Launchpad and some parts are, but it won't work for "every project" and "every bug tracker" out there.
<ClassBot> Lionthinker asked: a developer with upload rights is a MOTU, right?
<dholbach> no, MOTUs are just one team with upload rights - more on that in a bit.
<dholbach> When trying to find a solution it is usually a good idea to check with Upstream and see if the problem (or a possible solution) is known already and, if not, do your best to make the solution a concerted effort.
<dholbach> Additional steps might involve getting the change backported to an older, still supported version of Ubuntu and forwarding it to Upstream.
<dholbach> The most important thing I want to get across today is that you don't need to be an expert with programming languages or anything. The most important requirements for success in Ubuntu development are: having a knack for âmaking things work again,â not being afraid to read documentation and ask questions, being a team player and enjoying some detective work.
<dholbach> Good places to ask your questions are ubuntu-motu@lists.ubuntu.com and #ubuntu-motu on irc.freenode.net. You will easily find a lot of new friends and people with the same passion that you have: making the world a better place by making better Open Source software.
<ClassBot> jincreator asked: Why there is freeze that affect even translators? I mean, something like (non)languagetranslationdeadline.
<dholbach> jincreator, there are many reasons, some of them are: to give testers the opportunity to try Ubuntu in their own language before release, or size of the translations, etc.
<dholbach> All right, let's take 2-3 minutes of a break before we crack on with "Getting set up for Ubuntu Development" - I need to get some more tea!
<dholbach> See you in 2-3 mins.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting Started with Ubuntu Development - Instructors: dholbach
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<dholbach> All right my friends - we're back!
<dholbach> And we'll kick off "Getting set up for Ubuntu Development" in just a sec.
<dholbach> While making a cup of tea I just decided we'll just go through the bare minimum of setting up your development environment today and work on a small fix of our own towards the end of the session.
<dholbach> To get every little bit set up, I'll refer you to some really nice documentation later on.
<dholbach> Hope that meets your agreement. :-)
<dholbach> First of all we'll install some packaging-related software. This includes:
<dholbach>  - Ubuntu-specific packaging utilities
<dholbach>  - Encryption software so your work can be verified as being done by you
<dholbach>  -     Additional encryption software so you can securely transfer files
<dholbach> We'll also configure some of the tools you'll need and I'll mention how to get all the rest set up.
<dholbach> So somebody asked earlier if it's OK to use an older Ubuntu release and the answer is: It is advisable to do packaging work using the current development version of Ubuntu. Doing so will allow you to test changes in the same environment where those changes will actually be applied and used.
<dholbach> Donât worry though, the Ubuntu development release wiki page (https://wiki.ubuntu.com/UsingDevelopmentReleases) shows a variety of ways to safely use the development release.
<dholbach> There are a number of tools that will make your life as an Ubuntu developer much easier. You will encounter these tools later in this guide. To install most of the tools you will need run this command:
<dholbach> $ sudo apt-get install packaging-dev
<dholbach> (without the $)
<dholbach> For users before Ubuntu 11.10 âOneiric Ocelotâ:
<dholbach> $ sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file
<ClassBot> tuxfan_ asked: Does that mean that we have to always have the latest Ubuntu installed (e.g on a VM)?
<dholbach> if you want to develop Ubuntu itself, you will have to have a way to verify that the fix you're working on actually works - the most reliable way is to have a VM for example
<dholbach> Installing the packages is going to take a while, depending on your internet connection. So let's crack on.
<ClassBot> nuragussuryoko asked: need to confirm, is "current development version of Ubuntu" == 13.04 ?
<dholbach> nuragussuryoko, yes. 13.04 aka raring ringtail :)
<dholbach> So what we're installing now is going to give us:
<dholbach>  - gnupg â GNU Privacy Guard contains tools you will need to create a cryptographic key with which you will sign files you want to upload to Launchpad.
<dholbach>  - pbuilder â a tool to do reproducible builds of a package in a clean and isolated environment.
<dholbach>  - ubuntu-dev-tools (and devscripts, a direct dependency) â a collection of tools that make many packaging tasks easier.
<dholbach>  - bzr-builddeb (and bzr, a dependency) â distributed version control with Bazaar, a new way of working with packages for Ubuntu that will make it easy for many developers to collaborate and work on the same code while keeping it trivial to merge each otherâs work.
<dholbach>  - apt-file provides an easy way to find the binary package that contains a given file.
<dholbach> Next we'll set up pbuilder. A very nice tool you're soon going to love. :-)
<dholbach> pbuilder allows you to build packages locally on your machine. It serves a couple of purposes:
<dholbach>  - The build will be done in a minimal and clean environment. This helps you make sure your builds succeed in a reproducible way, but without modifying your local system
<dholbach>  - There is no need to install all necessary build dependencies locally
<dholbach>  - You can set up multiple instances for various Ubuntu and Debian releases
<dholbach> Setting pbuilder up is very easy, simply run:
<dholbach> $ pbuilder-dist <release> create
<dholbach> where <release> is for example precise, quantal, raring or in the case of Debian maybe sid. This will take a while as it will download all the necessary packages for a âminimal installationâ. These will be cached though.
<dholbach> For now you might want to just run:
<dholbach> $ pbuilder-dist raring create
<ClassBot> tuxfan_ asked: pbuilder works kinda like a sandbox?or didn't i get it right?
<dholbach> tuxfan_, it will use a chrooted environment (http://en.wikipedia.org/wiki/Chroot) to build the package in, this guarantees that the build works reliably and does not depend on some changes you might have done on your local file system somewhere
<ClassBot> nep1x asked: Launchpad seems to be a very important component, but I don t understand well what is it exactly. Can you explait it breafly?
<dholbach> nep1x, https://launchpad.net is the main infrastructure we use for Ubuntu. Translations of Ubuntu packages (and other projects) live there, bug reports live there, code branches, Ubuntu packages and many many other things.
<dholbach> In this session I'll skip setting up your launchpad account, but I'll give some information later on on how to get everything set up over there. (It just takes a couple of minutes.)
<ClassBot> quequotion asked: Are the dependencies different for later releases (12.04+)?
<dholbach> quequotion, Yes, dependencies of packages change, just as the code changes over different releases.
<ClassBot> epikvision asked: Can pbuilder serve as a temporary replacement for not running development release?
<dholbach> epikvision, You can, sort of, a little bit, just as you can use a chroot environment - but it's not very convenient (using graphics will be hard, etc.). It's more tailored towards building packages.
<ClassBot> Lionthinker asked: Whats a translation in coding speak?
<dholbach> Lionthinker, In gedit the first menu point says "File" when I try to click on it. That's "Datei" in German. :-)
<ClassBot> quequotion asked: What about multilib packaging, and specifically amd64 with i386?
<dholbach> quequotion, Yeah what about it? :)
<dholbach> I guess you're referring to multiarch? I'm not sure what your question is about.
<dholbach> It was introduced a couple of releases back and it's working well for a lot of common cases. Not all packages have been multiarched yet. http://wiki.debian.org/Multiarch/ has some more background. Hope that helps.
<ClassBot> retnan asked: Is it possible to do development on github and having changes updated on launchpad
<dholbach> retnan, there's a bzr-git plugin which might help, also are there code imports in Launchpad, but I don't have much experience with those.
<ClassBot> quequotion asked: sorry, by dependencies I meant the build environment dependencies; has anything changed since 11.10?
<dholbach> quequotion, yes, a lot - running a more recent Ubuntu in a VM will make development easier
<dholbach> All right, let's crack on - I hope the installation of the packages and setting up pbuilder worked for all of you or are still in progress. :-)
<dholbach> Next let's tell some of the development tools who we are.
<dholbach> Please open your ~/.bashrc in a text editor and add something like this to the bottom of it:
<dholbach> export DEBFULLNAME="Bob Dobbs"
<dholbach> export DEBEMAIL="subgenius@example.com"
<dholbach> If you do not use the default shell, which is bash, please edit the configuration file for that shell accordingly.
<dholbach> Now save the file and either restart your terminal or run:
<dholbach> $ source ~/.bashrc
<dholbach> Ok... did this work all work out for everyone? Any questions? Any catastrophes?
<ClassBot> phoenix_firebrd asked: what is the difference in using pbuilder-dist and pbuilder
<dholbach> phoenix_firebrd, pbuilder-dist is just a wrapper around pbuilder, which makes it very easy to use pbuilder for many different releases, for example can I simply run   pbuilder-dist precise create  to create one for the precise release
<dholbach> with plain pbuilder you will have to edit a configuration file, etc
<ClassBot> nuragussuryoko asked: sorry n00b one. I'm using 12.10 and was disconnected. Shall I follow-through, or install 13.04 first?
<dholbach> nuragussuryoko, feel free to take all the steps we discuss here on your 12.10 installation - later on you can still install 13.04 in a VM (https://wiki.ubuntu.com/UsingDevelopmentReleases will help) and repeat the steps there
<ClassBot> phoenix_firebrd asked: what is the difference in using pbuilder-dist and pbuilder
<dholbach> ah yes, had that one already
<ClassBot> epikvision asked: We only need to run pbuilder <release> once?
<dholbach> epikvision, pbuilder-dist <release> create
<dholbach> yes, just once
<ClassBot> quequotion asked: do i need "export"?
<dholbach> quequotion, yes
<ClassBot> x86_ asked: I had done that pbuilder-dist step earlier. How do I check if its k and which version is used in place of raring ?
<dholbach> x86_,    ls ~/pbuilder/
<ClassBot> anish1307i asked: can we use pbuilder to create package in running system and then test it on VM?
<dholbach> anish1307i, yes, you can simply copy them over
<ClassBot> phoenix_firebrd asked: Is there a way to set the release to example raring or unreleased in bashrc
<dholbach> phoenix_firebrd, hum - do I assume correctly that you're talking about the default for the release name in debian/changelog entries?
<dholbach> phoenix_firebrd, I'm not 100% sure - can somebody in the audience help out? I'll try to find something real quick, otherwise we'll have to carry on
<dholbach> phoenix_firebrd, ok, didn't find it quickly - you might want to refer to "man dch" and add one of the environment variables discussed in there to .devscripts - maybe DEBCHANGE_RELEASE_HEURISTIC?
<dholbach> sorry
<ClassBot> nep1x asked: do we have to run pbuilder-dist <release> right now? which release? can i get an environment different than the release I ve alredy installed?
<dholbach> nep1x, yes, that's possible - please run: "pbuilder-dist raring create"
<dholbach> all right, we have around 20 minutes left, so get's get to a quick example of Ubuntu development
<dholbach> in my tea break earlier, I deliberately broke a package :)
<dholbach> we are going to fix it now :)
<dholbach> I pushed my work to lp:~dholbach/ubuntu/raring/hello/crazy-change - to get the branch, simply run:
<dholbach> $ bzr branch lp:~dholbach/ubuntu/raring/hello/crazy-change
<dholbach> Now simply:
<dholbach> $ cd crazy-change
<dholbach> If you run "ls debian" now, you will set a list of files which are relevant to the packaging.
<dholbach> I made a change to debian/control - if you open the file in your favourite editor, maybe you'll find out which bit I broke. :-)
<dholbach> Until somebody mentions it in #ubuntu-classroom-chat I'll talk a bit about what debian/control is all about.
<dholbach> You can see that it's divided in two sections. Section 1 is all about the Source of the ("hello" in this case) package.
<dholbach> The second one is about the resulting binary package, so the .deb package you would install after a build.
<dholbach> <x86_> install-infooooooooo
<dholbach> x86_ got it right. :-)
<dholbach> The broken line is this one:
<dholbach> Depends: ${shlibs:Depends}, dpkg (>= 1.15.4) | install-infoooooooooooooo
<dholbach> It specifies the dependencies of the "hello" package after a build.
<dholbach> "${shlibs:Depends}" is not a real package name, but it's a variable which is substituted with a list of library packages "hello" depends on.
<dholbach> This is determined automatically during the build.
<dholbach> If we built the package as it is right now, it'd mean that it would refer to a non-existing package.
<dholbach> Please go ahead and change "install-infoooooooooooooo" to "install-info". :-)
<dholbach> And save the file.
<dholbach> Next please run "dch -i".
<dholbach> You can see that an editor is opened with a boiler plate changelog entry which should have your name and email address filled in already. :-)
<dholbach> If you have a look at the last changelog entry, you can see an example of a very very bad changelog entry: http://paste.ubuntu.com/1586340/
<dholbach> debian/changelog is the place where all the changes we upload to Ubuntu are documented. We do this not just for ourselves, but for all the other Ubuntu developers as well.
<dholbach> A good changelog entry includes: a reference of what was changed, where things were changed, why things were changed and if there was a discussion about the changes (like on a mailing list of a bug report), you refer to those as well
<dholbach> that's very important, especially if you go back and try to figure why something was changed half a year ago
<dholbach> and you should try to have separate bullet points for separate things :-)
<dholbach> so for something as simple as fixing the dependency, we could write something like:
<dholbach>   * debian/control: fixed dependency: changed "install-infoooooooooooooo" to "install-info".
<dholbach> Or something along those lines.
<ClassBot> jincreator asked: Where can I find list of variables used in making debian file such as {shlibs:Depends} ?
<dholbach> {shlibs:Depends} is probably the most important one, especially if you deal with shared libraries and linked code.
<ClassBot> There are 10 minutes remaining in the current session.
<dholbach> there's {misc:Depends} and some substitution variables for python and perl as well - I'll give a link to packaging information after the session. :)
<ClassBot> johnhamelink asked: If there was a bug report, what would the debian/changelog look like?
<dholbach> johnhamelink, good question :)
<dholbach> So let's say there was Launchpad bug report 12345678 about the problem I created earlier.
<dholbach> In that case you'd simply add  (LP: #12345678)  to the end of the line
<dholbach> this would get the bug report automatically closed as soon as the fix lands in Ubuntu
<dholbach> So, to build the package, please run:
<dholbach> $ bzr bd -- -S
<dholbach> This will generate a source package from the branch (which is just a directory with the source code history in it).
<dholbach> The source package is a format we use to upload changes to Launchpad and build the binary packages from.
<dholbach> If you now run "ls ../hello_*", you will see these files listed:
<dholbach> ../hello_2.8-2ubuntu2.debian.tar.gz  ../hello_2.8-2ubuntu2.dsc  ../hello_2.8-2ubuntu2_source.changes  ../hello_2.8.orig.tar.gz
<dholbach> They make up the source package.
<dholbach> If you now run this command: "pbuilder-dist raring build ../hello_2.8-2ubuntu2.dsc" it will build the binary (.deb package) from the source package.
<ClassBot> EagleScreen asked: as the same way you use (LP: #12345678), is there a expecific syntax to reference Debian bug reports?
<dholbach> Yes, it's "Closes: #123456"
<ClassBot> maxi_ asked: debsign: gpg error occurred!  Aborting.... debuild: fatal error at line 1278: running debsign failed bzr: ERROR: The build failed.
<ClassBot> There are 5 minutes remaining in the current session.
<dholbach> That's probably because the mail address in your changelog entry does not match any on your GPG key. Feel free to ignore it for now and just run:  bzr bd -- -S -us -uc
<dholbach> (which will not sign the package)
<dholbach> The build will take a while, but afterwards you can run "ls ~/pbuilder/raring_result/"
<dholbach> and you will see some shiny .deb packages - probably the first ones you ever built :-D
<dholbach> and hopefully not the last!
<dholbach> All right, we have 2 minutes left until the next session, so I want to get some final words out before the next session starts.
<dholbach> We have documentation, and it's available at  http://developer.ubuntu.com/packaging/
<dholbach> currently it's available in English and Spanish
<dholbach> if you want to help get it translated to other languages, you'd have my eternal gratitude - you can do it here: https://translations.launchpad.net/ubuntu-packaging-guide/
<dholbach> Also: you CAN help out with Ubuntu development. You're not alone. You can ask all your questions in #ubuntu-motu on irc.freenode.net - we need people like you and if you're only a bit of a social animal, I promise you'll find lots of friends here.
<dholbach> Please bookmark http://developer.ubuntu.com/packaging/
<dholbach> And enjoy the rest of the week - you all are awesome. Thanks for the session and I hope to see more of you in the next time!
<coolbhavi> thanks dholbach :)
<dholbach> Next up is coolbhavi with "Introduction to patch systems".
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Patch Systems - Instructors: coolbhavi
<coolbhavi> yup :-)
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<coolbhavi> Hi All and welcome to my session on introduction to patch systems and why are patch systems used in general
<coolbhavi> Here is a short intro on me: I am Bhavani Shankar a Ubuntu developer, currently serving on the Application Review Board and LoCo council in Ubuntu
<coolbhavi> So lets get started:
<coolbhavi> As a prerequisite, please ensure that you have installed packaging-dev package (so that it should pull in quilt) which is the most popular version of patch system used right now
<coolbhavi> == What is a patch? ===
<coolbhavi> Patch in its simplest form means a code change introduced in the program to fix an existing bug in general
<coolbhavi> == Why to use patch systems at the first place? ==
<coolbhavi> imply put we use patch systems to generate and apply code changes without having to actually change the original code everytime making it look complicated to track changes/making the code look clumsy
<coolbhavi> == Ok, now we know the general idea of what a patch means but what are the different systems present in ubuntu/debian? ==
<coolbhavi> There are/were different patch systems present in ubuntu/debian namely:
<coolbhavi> dpatch which had patches defined in a path called debian/patches/00list with extension .dpatch which is deprecated now
<coolbhavi> cdbs simple patchsys which allowed to generate a diff which was stored in debian/patches path with a .diff extension and is deprecated now
<coolbhavi> The most current and widely used system is the quilt patch system which allows you to add a patch in debian/patches/series path and apply it on the source code
<coolbhavi> Any questions?
<coolbhavi> So lets move on:
<coolbhavi> == What is quilt patch system in general? ==
<coolbhavi> With quilt, all work occurs within a single directory tree. Since version 0.30, commands can be invoked from anywhere within the source tree (the directory tree is scanned upwards until either the .pc or the patches directory is found).
<ClassBot> Niraj_ asked: Why does ubuntu use different patch system than linux, which uses git diff?
<coolbhavi> Niraj_, diff is also a generic patch system which is used in almost all linux systems. The newer patch systems are used in ubuntu and debian primarily to their ease of usage which I am going to show now
<ClassBot> kix_ asked: using diff is a problem in general?
<coolbhavi> Kix_, not so but while doing diffing on a large chunk of code you need to be pretty sure of what changes you are introducing
<coolbhavi> so moving on
<coolbhavi> Quilt manages a stack of patches. Patches are applied incrementally on top of the base tree plus all preceding patches. They can be pushed on top of the stack (quilt push), and popped off the stack (quilt pop). Commands are available for querying the contents of the series file
<coolbhavi> The order of patches to apply is kept in debian/patches/series as said earlier.
<coolbhavi> more information is available in /usr/share/doc/quilt/quilt.pdf which is available when quilt is installed.
<coolbhavi> == How does quilt work? ==
<coolbhavi> Before working with Quilt you need to tell it where to find the patches. Add this to your ~/.bashrc: export QUILT_PATCHES=debian/patches
<ClassBot> phoenix_firebrd asked: can the series file be edited manually ?
<coolbhavi> phoenix_firebrd, yes if you comment out any patch in series file for example, the patch will not be applied when you build the package
<coolbhavi> And source the file to apply the new export:
<coolbhavi> $ . ~/.bashrc
<coolbhavi> By default all patches are applied already to UDD checkouts or downloaded packages. You can check this with:
<coolbhavi> $ quilt applied
<coolbhavi> Example: I have downloaded the package mobile-broadband-provider-info package using pull-lp-source from ubuntu-dev-tools and when I check I get
<coolbhavi> bhavani@bhavani-spagetti-monster:~/mobile/mobile-broadband-provider-info-20130121$ quilt applied
<coolbhavi> update_3_UK_secondary_dns.patch
<coolbhavi> If you wanted to remove the patch you would run pop:
<coolbhavi> $ quilt pop
<coolbhavi> in my example:
<coolbhavi> $ quilt pop
<coolbhavi> Removing patch update_3_UK_secondary_dns.patch
<coolbhavi> Restoring serviceproviders.xml
<coolbhavi> No patches applied
<coolbhavi> And to apply a patch you use push:
<coolbhavi> $ quilt push
<coolbhavi> Applying patch update_3_UK_secondary_dns.patch
<coolbhavi> patching file serviceproviders.xml
<coolbhavi> Now at patch update_3_UK_secondary_dns.patch
<coolbhavi> And to add a patch one would typically use:
<coolbhavi> quilt new
<coolbhavi> quilt new serviceproviders.patch
<coolbhavi> Patch serviceproviders.patch is now on top
<coolbhavi> quilt add serviceproviders.xml
<coolbhavi> File serviceproviders.xml added to patch serviceproviders.patch
<coolbhavi> And then do required changes (for example work on a bug) and then use quilt refresh on the patch.
<coolbhavi> Note that quilt add step is important otherwise you might not end up adding the patch in quilt
<coolbhavi> == Seems complex. Is there any way that simplifies this process in ubuntu? ==
<ClassBot> phoenix_firebrd asked: quilt add <file> is like quilt edit <file>
<coolbhavi> phoenix_firebrd, yes basically you add the file first to the stack and edit it then to make up your desired patch
<coolbhavi> so moving on:
<coolbhavi> Yes there is a way to simplify the process. You can use the edit-patch command in ubuntu to effectively do the same
<coolbhavi> $ edit-patch 99-new-patch
<coolbhavi> This will copy the packaging to a temporary directory. You can now edit files with a text editor or apply patches from
<coolbhavi> upstream, for example:
<coolbhavi> $ patch -p1 < ../bugfix.patch
<coolbhavi> After editing the file type exit or press control-d to quit the temporary shell. The new patch will have been
<coolbhavi> added into debian/patches.
<ClassBot> EagleScreen asked: Should quilt only be used to edit upstream sources? or should we use it also for doing changes in the debian packaging specfic files inside /debian directory?
<coolbhavi> EagleScreen, normally changes inside the debian directory will be treated as native to the package so not required and patch systems are always used for integrating upstream changes
<ClassBot> jincreator asked: Unlike git, should "quilt add <patch>" must before change file?
<coolbhavi> jincreator, yes as I said earlier its a nice practice to do so as you wont have a chance to miss adding up the patch when you are working with multiple patches especially
<coolbhavi> moving on again:
<coolbhavi> As an example of edit-patch on my system:
<coolbhavi> bhavani@bhavani-spagetti-monster:~/mobile/mobile-broadband-provider-info-20130121$ edit-patch bhavi.patch
<coolbhavi> Normalizing patch path to bhavi.patch
<coolbhavi> Normalizing patch name to bhavi.patch
<coolbhavi> Top patch: update_3_UK_secondary_dns.patch
<coolbhavi> File series fully applied, ends at patch update_3_UK_secondary_dns.patch
<coolbhavi> Patch bhavi.patch is now on top
<coolbhavi> bhavani@bhavani-spagetti-monster:/tmp/quilt-jC7JBQ$
<coolbhavi> As you can see it gives a temperory shell where you can make any changes required to the source and when you exit a new patch will be created by the name bhavi.patch
<coolbhavi> == Making a package use quilt ==
<coolbhavi> Modern packages use Quilt by default, it is built into the packaging format. Check in debian/source/format to ensure it says 3.0 (quilt).
<coolbhavi> Older packages using source format 1.0 will need to explicitly use Quilt, usually by including a makefile into debian/rules. (ex: passing include /usr/share/quilt/quilt.make)
<coolbhavi> == Few Notes to take care while generating a patch ==
<coolbhavi> Do not change a packageâs patch system without discussing it with the Debian maintainer or relevant Ubuntu team. If there is no existing patch system then feel free to add Quilt.
<coolbhavi> Do not make any changes to the package such that it can break something. When in doubt, please consult the upstream maintainer
<coolbhavi> Its always beneficial to add patch tags or headers so that the main intention of the patch can easily be understood. (For patch tagging guidelines used in ubuntu please refer: http://dep.debian.net/deps/dep3/)
<coolbhavi> == Further references ==
<coolbhavi> The ubuntu packaging guide (developer.ubuntu.com/packaging) is always a great start towards learning the concepts of ubuntu development.
<coolbhavi> Still 15 minutes left
<coolbhavi> any questions?
<ClassBot> johnhamelink asked: when do you decide "this isn't for upstream, this is a patch"?
<coolbhavi> johnhamelink, good question :-) A simple answer would be when a particular bug/problem affects only the os you are using and other environments does'nt show such behaviour
<ClassBot> phoenix_firebrd asked: how do you refresh a old patch using quilt?
<coolbhavi> phoenix_firebrd, the simplest way I do that is first try to apply the patch and if it fails I would edit the patch and refresh it or just remove it if its not applicable to the present upstream version
<ClassBot> nnutter asked: Have you ever used git-buildpackage or similar? Is it worth using that over plain quilt or edit-patch?
<ClassBot> There are 10 minutes remaining in the current session.
<coolbhavi> nnutter, yes personally I use git when I am committing upstream or pulling for my packages and it certainly helps. but I use quilt on ubuntu/debian for its simplicity
<ClassBot> jincreator asked: Is bzr plugin for edit-patch(quilt) exists?
<coolbhavi> jincreator, yes basically I would do a edit-patch generate the patch and do a bzr add <patch name> for adding my patch to my bzr trunk
<ClassBot> There are 5 minutes remaining in the current session.
<coolbhavi> Thats it from me provided there are no more questions coming. Thanks for turning up and see you tomorrow for a session on ubuntu app review board :) good night! :)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Working with Upstreams - Instructors: tumbleweed
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<tumbleweed> Hello Ubuntu Developer Week!
<tumbleweed> I've just got back from supper, I guess it's time to start
<tumbleweed> Hope you are enjoying yourselves
<tumbleweed> Who is new here? Who has been involved in Ubuntu for a while, and is here to learn something new?
<tumbleweed> Please say hi in the chat channel - #ubuntu-classroom-chat
<tumbleweed> that is also the place to ask questions
<tumbleweed> please start them with QUESTION: so the bot can pick them up
<tumbleweed> If you have any questions with any of this, when you go home and do this, afterwards
<tumbleweed> I suggest sticking your nose into #ubuntu-motu and asking there
<tumbleweed> ok, we have an audience \o/
<tumbleweed> so, I'm Stefano Rivera, an Ubuntu Developer and a Debian Developer
<tumbleweed> I'm in sunny Cape Town, South Africa
<tumbleweed> and I'm here to talk about dealing with upstreams
 * tumbleweed sees a few familiar faces in the chat channel, and a good number of new ones
<tumbleweed> What do I mean by an upstream?
<tumbleweed> well, Ubuntu is made up of ~20 000 source packages, (which build ~40 000 binary packages)
<tumbleweed> we Ubuntu Developers don't write all of those ourselves. We only authored a tiny handful of them
<tumbleweed> everything else came from other projects
<tumbleweed> some of these are big projects like GNOME and KDE, which produce hundreds of packages
<tumbleweed> most are tiny little projects with one, or maybe half a dozen active contributors
<tumbleweed> these projects are our upstreams
<tumbleweed> they release new versions of their software, and we package it, make a few tweaks to get it to work nicely with the rest of Ubuntu, and ship it to users
<tumbleweed> then we are on the front-line of incoming bug reports, and have to forward the relevant ones back to the upstreams
<tumbleweed> that's what a linux distribution is, really
<tumbleweed> OK, I lied a bit there
<tumbleweed> I assume you all know that Ubuntu is derived from Debian
<tumbleweed> in fact, about 75% of packages in Universe are entirely unmodified from Debian
<tumbleweed> that's a very good thing
<tumbleweed> there's no need for those packages to be modified in Ubuntu
<tumbleweed> the vast majority of bugs that we'd encounter in them are relevant to Debian, Ubuntu, and (if except for packaging bugs, the original upstream)
<tumbleweed> We contribute a lot back to Debian (as much as possible)
<tumbleweed> https://wiki.ubuntu.com/Debian/ForUbuntuDevelopers
<tumbleweed> so, a lot of the work I do in Ubuntu
<tumbleweed> is fixing problems we come across, but they aren't necessarily specific to Ubuntu
<tumbleweed> and the best place to deal with the problem is as close to the source as possible
<tumbleweed> that means the least duplication of effort, and shares the benefit as widely as possible
<tumbleweed> if we submit a patch to the upstream developers, and they release a new release containing our bug fix, it benefits everyone:
<tumbleweed> users of other linux distributions, cygwin and macports users, people who installed this package themselves from scratch, etc.
<tumbleweed> I hope at this point, you are aware of some the advantages of working well with our upstreams
<tumbleweed> (and that I might have written up some of this beforehand, for pasting) :P
<tumbleweed> (actually, beforehand, for a previous Ubuntu Developer Week)
<tumbleweed> but I've kind of got to the end of the introduction now
<tumbleweed> let's go into some more specifics
<tumbleweed> and hopefully get piles of questions
<tumbleweed> who here has ever contributed a bug fix to an open source project?
<tumbleweed> yay, people are doing useful things :)
<tumbleweed> yeah, many big projects have complex processes
<tumbleweed> and it can be hard to figure out where the information for new contributors is
<tumbleweed> generally, it's best to start with the home page, and dig around for a bug tracker or documentation on contributing patches
<tumbleweed> you all clearly can use IRC (you're here)
<tumbleweed> so if a project has an IRC channel, that's often a good place to get advice on how to get things done
<tumbleweed> most of the time, if you submit a useful patch, someone will figure out what to do with
<tumbleweed> epikvision asks about mentors
<tumbleweed> many larger projects have mentors programs
<tumbleweed> Ubuntu doesn't (we had in the past, but they've dried up)
<tumbleweed> Debian has the #debian-mentors IRC channel, and debian-mentors mailing lists
<tumbleweed> but they aren't really a mentor finding system
<tumbleweed> so much as a place that new people can get help from experienced people
<tumbleweed> most of the time, if you get involved with a project, you'll slowly build a relationship with the existing contributors
<tumbleweed> and often one or more of them will act as mentors
<tumbleweed> Please preifx questions with QUESTION: it makes it easier for me to respond to them
<tumbleweed> yes, debian-mentors is more about package sponsorship than long term mentoring
<tumbleweed> 20:18 < CodeRed> question : so how to get a proper guidance ?
<tumbleweed> that depends on the project
<tumbleweed> if we are talking about Ubuntu
<tumbleweed> the best place to get guidance is in our public IRC channels
<tumbleweed> #ubuntu-motu and #ubuntu-devel are both great places to get help in working on Ubuntu
<tumbleweed> there's also a #ubuntu-packaging channel, that's more about general packaging, esp. in PPAs
<tumbleweed> one of the problems with one-on-one mentorship is that it can be very draining on the mentor
<ClassBot> There are 10 minutes remaining in the current session.
<tumbleweed> who are often busy people
<tumbleweed> so, I'd say it makes a lot of sense to get help in a public channel, where more than one person can help you
<tumbleweed> (whoever is available, basically)
<ClassBot> everestt asked: package sponsorship? what is that?
<tumbleweed> right, good question
<tumbleweed> you probably can't understand a thing I'm saying if you aren't already familiar with the Debian and Ubuntu processes :P
<tumbleweed> so, let me clarify
<tumbleweed> the way we work with new contributors in Debian and Ubuntu is through sponsored uploads
<tumbleweed> our existing developers who have upload privileges can  upload packages for new contributors
<tumbleweed> so, if you want to fix a bug in an Ubuntu package
<tumbleweed> you apply the patch on the source package, prepare an upload, and ask an Ubuntu developer to upload it
<tumbleweed> the recommended wayt o ask, is to put it on the sponsorship queue
<tumbleweed> https://wiki.ubuntu.com/SponsorshipProcess
<tumbleweed> and of course (I was here to talk about upstreams, right) you submit the patch to relevent the upstream developers
<tumbleweed> did that clarify?
<tumbleweed> great
<ClassBot> There are 5 minutes remaining in the current session.
<tumbleweed> while I'm here, I guess I might as well suggest good things to work on in Ubuntu
<tumbleweed> I recommend starting with easy patches, to learn the procedures (Ubuntu is a big and complex project)
<tumbleweed> harvest.ubuntu.com lets you find easy bugs (if you poke around it a bit)
<ClassBot> CodeRed asked: like i tried ubuntu-app-devel but couldn't find a way to start
<tumbleweed> CodeRed: I'm afraid I can't really cover that now. app development is too big a t opic for 3 mins
<ClassBot> bobweaver asked: say you found some code that no one has toched in a yeah or so.  you sent email to upstreamer and have waited 3 months. when is it ok to take the project over. if it is at all
<tumbleweed> bobweaver: that's a tough question
<tumbleweed> if a project has died, then taking it over can be a useful thing to do
<tumbleweed> if the project is useful to you, and you're prepared to toake it over, then you are doing everyone ag reat service
<tumbleweed> I suggest talking to the upstream about that, though
<tumbleweed> it's worth avoiding forking the project if possible
<tumbleweed> but yes, porjects do die
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: [On Air] Introduction to One Hundred Paper Cuts - Instructors: notgary
<tumbleweed> I'm afraid I'm out of time, notgary has the stage now
<JoseeAntonioR> Guys, next session is at www.ubuntuonair.com , so just go and click the play button :)
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
<mhall119> JoseeAntonioR: are you going to let everyone at ubuntuonair know that the next session is back in IRC?
<JoseeAntonioR> mhall119: yes
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu App Developer Tools - Instructors: mhall119
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.
<mhall119> hello everybody
<mhall119> I'm Michael Hall, one of the community managers for Canonical
<mhall119> has everyone been enjoying Ubuntu Developer Week so far?
<mhall119> in this session I'm going to give an overview of all the tools that are available to Ubuntu developers
<mhall119> if you have questions at any point, please ask them in the -chat channel, starting with QUESTION: and I will break periodically to answer them
<mhall119> if there is anything you want me to talk about, please ask about that too
<mhall119> and if there is time I'll get to it
<mhall119> alright, to get things started, if you've been following other sessions today I'm sure you've heard about Launchpad
<mhall119> Launcpad is an open source project hosting service developed and provided by Canonical
<mhall119> it's similar in a lot of ways to github or sourceforge, with some key differences that make it ideal for Ubuntu related development
<mhall119> like those other solutions, Launchpad is organized around Projects
<mhall119> if your Project is open source, you can use Launchpad free of charge
<mhall119> you can also optionally host proprietary code projects on Launchpad if you purchase a subscription
<mhall119> you don't really get anything extra by paying, it just lets you keep your proprietary code private
<mhall119> Launchpad also supports Teams, and pretty much anywhere you can set a person you can also set a team, so a team can be the owner of a project, which gives everybody in that team access to the project
<mhall119> project ownership lets you manage the project's settings and information, bug priority and so on
<mhall119> team ownership is a good idea because it means that even if you're away on holiday, somebody else can take care of anything that needs t obe done
<mhall119> Teams in Launchpad come in 4 levels of membership control:
<mhall119> Open Teams: These anybody with a Launchpad account can join
<mhall119> Moderated Teams: Anyboty with a Launchpad account can request to join, but an admin on that team must approve it
<mhall119> Delegated Teams: These are kind of a hybrid, the require admin approval for direct access, like Moderated Teams, but they can also have other teams as members without managing the membership of those other teams
<mhall119> finally, Restricted Teams: These you can only get membership by being invited by an admin, you can't request to join them
<ClassBot> amin_ asked: I'm a newbie in developing apps under linux, specifically under Ubuntu. I couldn't find too much useful stuff on "quickly". So my question is what are some extensive and complete documentations and references for quickly (especially glade and connecting ui to source)
<mhall119> there are tutorials for using quickly on our developer portal (developer.ubuntu.com) which I will talk about more soon
<ClassBot> JumpLink916061 asked: Is launchpad itself also open source?
<mhall119> Yes, Launchpad was open sourced years ago
<mhall119> and, of course, it uses itself for project hosting: https://launchpad.net/launchpad :)
<mhall119> Launchpad also gives you a bug tracker, like bugzilla, for each project
<mhall119> bugs can also be given custom tags that you define for your own project, that lets you easily categorize them
<mhall119> a common tag is "bitesize", which indicates that it is a small or easy fix, ideal for new contributors who want to get their feet wet
<mhall119> this has been widely adopted across projects on Launchpad, so if you want to start contributing to something, look for those bugs
<mhall119> next, one of Launchpad's most important features is tracking Bazaar branches
<mhall119> Launchpad and Bazaar go hand-in-hand, which shouldn't be surprising because they were both developed at the same time for the same target audience
<mhall119> Launchpad itself is a remote Bazaar repository that you can push to
<mhall119> branches in Launchpad can be owned by either an individual or a team
<mhall119> and a Project typically has one branch that is it's "Development Focus"
<mhall119> this branch is typically owned by the team that owns the project, meaning you have to be on the team to push to it
<mhall119> however, anybody can push a branch to that project's namespace, and then propose for it to be merged into the development focus
<mhall119> which takes us to the next big feature on LP: Merge Propsals
<mhall119> if you are a github user, these are like pull requests
<mhall119> since only the owning team can land changes in the development focus ("trunk" usually), everybody else sends a merge proposal that must be reviewed and accepted by that team
<mhall119> and Launchpad tracks all of this, you can keep tabs on the state of the request and the back-and-forth conversations all on Launchpad
<mhall119> finally, and rather unique to Launchpad, are PPAs, or Personal Package Archives
<mhall119> PPAs are a mini-repository for debian packages, they look to Apt and Ubuntu Software Center exactly like the main repositories, only they are owned by an individual or a team
<mhall119> PPAs are a great way to provide packages of your code or application to users, and keep those users up to date
<mhall119> it's often used for pre-release versions of code that will eventually make it's way into the main archives
<mhall119> any questions about Launchpad before I move on?
<mhall119> Launchpad user profiles and team membership is also used on many other Ubuntu related websites, so if you plan on doing much of anything in the Ubuntu ecosystem, you're going to want to sign up
<mhall119> alrighty, moving on
<mhall119> As I said earlier, Launchpad and Bzr go hand-in-hand
<mhall119> Bzr is the primary version control system used in Ubuntu development
<mhall119> it's similar in many ways to git or mercurial, because they all got started at about the same time, and borrowed many ideas from eachother
<mhall119> Bzr is very branch-focused, instead of "cloning" a remote repository, you branch it
<mhall119> also, unlike git and mercurial, bzr typically has separate directories for separate branches
<mhall119> these are commonly referred to as feature branches, because you create one for each feature or bug fix you are going to work on
<mhall119> so, for example, to get the code for Launchpad, you would run "bzr branch lp:launchpad ./my-launchpad-branch"
<mhall119> (don't do this right now, it's huge)
<mhall119> bzr can work over many different transport layers, HTTP is common, but it will also work over FTP, SSH and others
<mhall119> you'll also see some common aliases, like lp: and ubuntu:
<mhall119> lp: is short-hand for the development focus of a project, so lp:launchpad means the development focus branch (or trunk) for the "launchpad" project
<mhall119> lp:quicky for the quickly project, and so on
<mhall119> ubuntu: is short-hand for the package branch used to create the debian package in Ubuntu's archives
<mhall119> this is used more for those participating in ubuntu's distributed development, not by the original project's developers, who will typically use the lp: prefix
<mhall119> now, if you run "bzr branch lp:launchpad ./my-launchpad-branch", you will get both the branch history and a local checkout in ./my-launchpad-branch/
<mhall119> but bzr also lets you have a checkout separate from the branch history
<mhall119> so you can run "bzr checkout ./my-launchpad-branch/ ./my-launchpad-work/" and you'll have a checkout of the tip in your -work directory, but the rest of the branch history says in -branch
<mhall119> and, in fact, you can switch your checkout directory between branches
<mhall119> so you can "bzr branch ./my-launchpad-branch/ ./fixing-feature-x" to make a new feature branch
<mhall119> then, in your -work checkout directory, run "bzr switch ../fixing-feature-x" to retarget it
<mhall119> this lets you mimick git or mercurial branch switching workflows with the same local checkout
<mhall119> bzr also lets you assing bug-fix metadata to your commits, so if you are working on Launchpad bug#12345, you can run "bzr commit --fixes lp:12345" and it will store that in the branch history
<mhall119> later, when you push your branch to Launchpad, it will automatically associate your new branch with that bug number, so people viewing the bug can see it
<mhall119> this also lets Launchpad update the bug if your branch is merged into the development focus branch
<mhall119> I said earlier that anybody can submit a branch to a Launchpad project
<mhall119> to do this, you simply push your branch to a specific lp: url
<mhall119> the format is lp:~<your_lp_name>/<target_project_name>/<unique_branch_name>
<mhall119> so for me, it might look something like this:
<mhall119> bzr push lp:~mhall119/quickly/fix-bug-12345
<mhall119> if you want to push some personal code to Launchpad, but don't have a project, you can substitute the project part with "+junk"
<mhall119> so bzr push lp:~mhall119/+junk/my-cool-code
<mhall119> everybody on Launchpad has this +junk space for code that doesn't belong to a project
<mhall119> any questions about bzr and/or launchpad?
<ClassBot> epikvision asked: Can you explain what a "checkout" is?
<mhall119> a "checkout" is a copy of the code at a specific version (typically the head of the branch), that is separate from the branch history
<mhall119> basically, the branch metadata nd history is all stored in the /.bzr/ directory at the root of the branch
<mhall119> the files you see in that directory are the checkout
<mhall119> they usually go together, but you can separate them too
<mhall119> so, for example, when I work on a Django project, I create a checkout into a directory called "work", where I build my virtualenv and keep my database files
<mhall119> but then I can switch the code in that directory between my trunk and feature branches
<mhall119> so I can switch between working on feature-x and feature-y, without having to make separate virtualenvs for each
<mhall119> alright, next I wanted to talk about the developer portal
<mhall119> http://developer.ubuntu.com
<mhall119> this is the primary resource for information about writing apps that target Ubuntu
<mhall119> here you can find documentation on how to integrate with Unity, Ubuntu One, and other Ubuntu-specific features
<mhall119> you can also browse API documentation for the same
<mhall119> with the announcement of the Ubuntu Phone, we also posted on the developer portal how to get the new SDK preview and a tutorial on writing apps for the phone
<mhall119> and if you want to submit an independent application to the Ubuntu Software Center, you can do that through the MyApps section
<mhall119> there is also a blog component to the site, which you can follow for updates on our developer offerings
<mhall119> our tutorials are mostly provided by members of the community, so if you have something you think would be useful to others, please let me know and I'll get it added to the site
<mhall119> I'm running short on time, so I'll skip right ahead to Quickly
<mhall119> Quickly is local project management tool that makes is incredibly easy to start writing an application for Ubuntu
<mhall119> it provides a number of commands that cover the entire development life-cycle
<mhall119> to get started, you simple run "quickly create <template> <new_app_name>" and it will bootstrap everything for you
<mhall119> not only does it provide a code template, but it also starts you with a bzr branch
<mhall119> the most common template is currently "ubuntu-application", which is a python2/gtk3 codebase
<ClassBot> There are 10 minutes remaining in the current session.
<mhall119> while python and gtk are the most widely used, Quickly itself supports templates for any language and toolkit
<mhall119> quickly also provides commands for packaging your code, pushing it to launchpad and even uploading it to a PPA, all with a few simple commands
<mhall119> there is a video walk-through on http://developer.ubuntu.com/get-started/ that shows the process of using Quickly to create an application
<mhall119> and more documentation can be found at https://wiki.ubuntu.com/Quickly
<mhall119> alright, 7 minutes left, any questions before I move on?
<mhall119> I'm going to very, very quickly list some other resources available to Ubuntu developers
<mhall119> The Wiki (http://wiki.ubuntu.com) can be edited by anybody, and contains a massive amount of information about all aspects of Ubuntu and the Ubuntu Community
<mhall119> Etherpad (http://pad.ubuntu.com) is also available to anybody to use
<mhall119> you need to have a Launchpad account, and also become a member of ~ubuntu-etherpad to get access though
<ClassBot> There are 5 minutes remaining in the current session.
<mhall119> this was for spam-prevention
<mhall119> etherpad is fantastic for remote pair-programming or collaborative debugging
<mhall119> it's also used extensively during the Ubuntu Developer Summit to track discussions
<mhall119> Pastebin (paste.ubuntu.com) is available if you need to paste text for others to see
<mhall119> stgraber has also written a very handy tool called pastebinit which lets you quickly and easily paste files from the command line, or even pipe output from a process directly into it
<mhall119> Ubuntu One (http://one.ubuntu.com), it isn't just for personal file storage, you can also get a sharable URL for any file you upload
<mhall119> this is handy for sharing screenshots, data files, or whatever else you want
<mhall119> AskUbuntu (http://askubuntu.com) is  StackExchange site that is heavily used, you can ask your questions there or help answer others
<mhall119> Mailman (http://lists.ubuntu.com) we have many, many mailing lists
<mhall119> for ubuntu development, you might want to subscribe to ubuntu-devel and ubuntu-motu
<mhall119> LoCo Teams (http://loco.ubuntu.com) while primarily a community thing, it's always fun to hack on code with friends, especially local ones
<mhall119> we also have a twice-annual Global Jam, where we encourage people to meet up with Ubuntu users around them and contribute together
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html
<mhall119> Forums (http://forums.ubuntu.com), one of our oldest resources, there is a lot of built-up information there
* 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
<mhall119> Design (http://design.ubuntu.com) is a newer side, dedicated to providing visual and UX information
<mhall119> and of course IRC, besides this classroom channel, we also have #ubuntu-devel, #ubuntu-app-devel, #ubuntu-unity, #ubuntu-phone, and on and on
<mhall119> you can run "/msg alis list #ubuntu*" for an extensive list of ubuntu channels
<mhall119> and with that I'm one
<JoseeAntonioR> Thanks for being here today, we'll have more sessions tomorrow, starting at 15 UTC! See you there!
<mhall119> if anybody has any other questions, feel free to ping me on irc, or email me: mhall119 @ubuntu.com
<jderose> exit
<jderose> hehe, wrong window :P
#ubuntu-classroom 2013-01-30
<mofium> Hey there, I'm doing the yesterdays first session atm wonder what's the difference between changelog.dch
<mofium> and the normal changelog file
<mofium> by running "dch -i" the first time it created and opened changelog.dch, but after building the package the changelog sais the last edit was done by  holbach although I left my log
<mofium> running the dch-i again resultes in the following error
<mofium> dch: fatal error at line 757:
<mofium> The backup file debian/changelog.dch already exists --
<mofium> please move it before trying again
<tuxfan_> No work today waiting for next class!Hi everybody!
<IdleOne> starting in 11 minutes
<smartboyhw> 10 minutes!
<JoseeAntonioR> hey guys, we're starting in a short while!
<Marin> hello all :)
<wei2912> JoseeAntonioR, great :D
<wei2912> i've been idling here waiting for a class to start
 * rick_timmis waves
<rick_timmis> BRB, Just go grab a coffeee
<tuxfan_> and RIM is presenting BB10 right now :)....
<wei2912> :)
<wei2912> btw, i'm curious about what will happen during the class?
<tuxfan_> Is it app development today?
<wei2912> should be.
<wei2912> should be starting soon, How to write apps for Ubuntu.
<wei2912> (great coincidence that this is the class i was planning to listen to)
<tuxfan_> 4 mins to go :)
<wei2912> tuxfan_, do we just listen to the class, or can we ask our questions while the class is ongoing?
<IdleOne> wei2912: you can ask questions in #ubuntu-classroom-chat
<JoseeAntonioR> WELCOME EVERYBODY!
<JoseeAntonioR> This is day 2 of Ubuntu Developer Week and if you're completely new to the the event, you might want to check out https://wiki.ubuntu.com/UbuntuDeveloperWeek to review the schedule. This is also the place where logs and links to videos will be posted after the sessions.
<wei2912> IdleOne, thanks
<JoseeAntonioR> If you want to ask questions and join the conversation about the sessions, please make sure you also join #ubuntu-classroom-chat
<JoseeAntonioR> When you ask questions, please make sure you prefix them with QUESTION: otherwise they will not be picked up.
 * rick_timmis waves
<wei2912> great...
<JoseeAntonioR> We're starting in just a couple seconds! Have fun today!
<wei2912> have fun 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 Developer Week - Current Session: How to write apps for Ubuntu - Instructors: dpm
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<dpm> hi everyone!
<dpm> Welcome to this introductory session on writing apps for Ubuntu
<dpm> aka the first step to becoming a full-blown Ubuntu App Developer :)
<dpm> For those of you who don't know me, I'm David Planella,
<dpm> and I work as the Ubuntu App Development Liaison in the Community team at Canonical.
<dpm> In the past I've work as Ubuntu Translations Coordinator as well,
<dpm> but these days I'm more focused on our App Developer story.
<dpm> App Development is an exciting territory, and I hope you enjoy it as much as I do :)
<dpm> What we are going to see today is a very gentle but quick-paced introduction to
<dpm> writing apps for Ubuntu, both on the desktop and for the phone.
<dpm> The idea is to get you familiar with the tools and processes to use and to follow throughout your app's lifecycle, which hopefully will whet your appetite for more :)
<dpm> I'll be focusing on the desktop story for now, but I will talk a bit about app development for the phone with our preview SDK at the end.
<dpm> This is an area that you all probably have heard about, and you probably also know that it's changing, evolving and getting defined very rapidly, but I'll give you the lowdown of the tools available to app devs today.
<dpm> I'll also be directing you to the right places to ask for help
<dpm> The way the session will be structured will be a bit like the developer journey on the app developer site at developer.ubuntu.com,
<dpm> so it will be similar to a tour through the site,
<dpm> which is the place you'll generally go to whenever you need more information or whenever you submit an app to ultimately be published in the Software Centre.
<dpm>  
<dpm> So something like:
<dpm>  
<dpm> 1. Get started
<dpm> 2. Resources
<dpm> 3. Publish
<dpm> 4. Community
<dpm>  
<dpm> Oh, and the developer site is, of course, at http://developer.ubuntu.com :)
<dpm> Go and check it out :)
<dpm> The time is limited, so we'll go into more detail into the more practical step of getting started, which is more fun,
<dpm> and we'll just say a few words on the other steps.
<dpm> If you've got questions during the session, feel free to ask at any time!
<dpm> just do it on #ubuntu-classroom-chat and prepend them with QUESTION:
<ClassBot> tuxfan_ asked: mobile application too?
<dpm> Yes, we'll see a bit about mobile apps too :)
<dpm> So,
<dpm> let's roll!
<dpm>  
<dpm> Developing apps on the desktop
<dpm> ==============================
<dpm>  
<dpm> The tools
<dpm> ---------
<dpm>  During the first part of the session I'll be talking about Quickly.
<dpm> This is what we'll use to create Ubuntu desktop apps. At the technical level,
<dpm> Quickly is nothing else than a command-line utility which acts as a wrapper around the tools we chose to be part of the Ubuntu app developer story.
<dpm> It provides a set of commands to act as shortcuts to the key actions a developer most usually needs while writing a piece of software.
<dpm> They are quite handy, and they really make life easier for you.
<dpm> Here are some examples of such commands:
<dpm>  
<dpm> $ quickly edit # To open your code files in an editor of your choice
<dpm> $ quickly debug # To start debugging your application graphically
<dpm> $ quickly package # To automatically package your app for you
<dpm>  
<dpm> As you see, very easy to use
<dpm> Note that you don't have to use Quickly commands if you are already familiar with the underlying tools it invokes.
<dpm> Quickly just provides the glue and a few handy shortcuts.
<dpm> So for instance using 'quickly save' is the same thing as 'bzr commit' (the command to commit files to the Bazaar distributed revision control system).
<dpm> You can see a nice overview of those underlying tools and the commands to activate them here:
<dpm>  
<dpm>     http://developer.ubuntu.com/get-started/quickly-workflow/
<ClassBot> wei2912 asked: do you mind providing some examples? :)
<dpm> Yes, we'll get into the examples in a minute :)
<ClassBot> tuxfan_ asked: Quickly provides a command adding new Dialogs(GTK.Dialog) how about new Windows (Gtk.Window)?
<dpm> indeed it does. Right now there is no command to automatically generate the code to create new windows for you, but as you've rightly noted, we do have a dedicated command for the more usual operation of creating a dialog
<ClassBot> bobweaver asked: do you know if there are other options besides just gedit ? like quickly edit <IDE goes here> as gedit is not a Pure IDE and I sometimes have trouble with it
<dpm> There are plenty indeed. We're just making an opinionated choice to provide guidance and to concentrate on a set of tools we can support
<dpm> So while we recommend Gedit, you can use any other programmer's editor such as Vim, Emacs, Geany... etc.
<dpm> If it's your first time writing apps for Ubuntu and you want to try something else than Gedit, Geany might be a good option
<dpm> If you want to go for a full-blown IDE, you can try Eclipse with the Python dev plugin, or Ninja IDE, etc
<ClassBot> wei2912 asked: could you go indepth into how the application is packaged, as a DEB file or?
<dpm> sure, let me go through the example app and then talk a bit about packaging
<dpm> Ok, so moving on...
<dpm> The technologies you'll see today are Python, Glade and a bit of Bazaar and Debian packaging, although those two will rather be working in the background
<dpm> The other nice thing about Quickly is that it installs all the packages you'll need to get started hacking on Ubuntu.
<dpm> (as in hacking a new app)
<dpm> So if you want to follow along and create your first desktop app, go ahead and:
<dpm>  
<dpm> * Install quickly by opening http://apt.ubuntu.com/p/quickly on your browser
<dpm>  
<dpm> In principle, you can use any combination of tools and programming languages for Ubuntu apps.
<dpm>  It's just that we simply cannot support every single combination under the sun, so we made a set of oppinionated choices on the tools we think are best and are best supported in Ubuntu and put them together with quickly
<dpm> So if you create apps with quickly, they'll be easier to create, review and publish in the Software Centre
<dpm> ok, let's finally move on to the fun part :)
<dpm>  
<dpm> Step 1: Get started
<dpm> -------------------
<dpm>  
<dpm> This is the stage we get straight to business and put on our developer hats for some hacking fun.
<dpm> At this point we generally have an idea of the type of app we want to write and go for the implementation.
<dpm> In this case, we'll be writing a very very simple 'Hello world!' type ofapp, but with a twist: ours will be an 'Ubuntu rocks!' app.
<dpm> There is also a video tutorial you can watch the later at http://developer.ubuntu.com/get-started/, it's detailed but quick to the point,
<dpm> but for now, and given that we've already installed the tools, we'll start writing some code.
<dpm> Or rather, we'll be writing a minimum amount of code and let Quickly do the heavy lifting for us :)
<dpm> Ok, enough talk, now let's get onto it:
<dpm> 1. Open a terminal (press the Ctrl+Alt+t key combination)
<dpm> 2. Run the following command (again, don't type the leading "$", it's just to mark that it's a command):
<dpm>    $ quickly create ubuntu-application ubuntu-rocks
<dpm>    -- This will create the boilerplate code for your app, and a first saved revision, so you can concentrate on other more important things :)
<dpm> 3. Enter the folder where the code lives now, by running:
<dpm>    $ cd ubuntu-rocks
<dpm>    -- You'll see all the files Quickly created there. Don't worry too much about them for now, but you can examine them with the file browser later on (e.g. typing 'nautilus .' to fire up the file browser in the folder)
<dpm> 4. Next up, we'll modify the AUTHORS file to indicate we're the authors of the code. This is needed by some commands later on. Now type the following:
<dpm>    $ gedit AUTHORS
<dpm> 5. On the text editor window, add your name and e-mail using the format in the example in there (you'll just need to replace it), then you can save and close the file
<dpm> It seems we've got some questions, let me try to answer them quickly
<ClassBot> wei2912 asked: what editor do you mostly use?
<dpm> I use both Gedit and GVim, the graphical version of Vim, depending on the mood and on the task that I'm working on :)
<ClassBot> tuxfan_ asked: So that would be quickly edit <path to eclipse>?
<dpm> Quickly currently only provides support for text editors, so while you could use Eclipse for code editing, there wouldn't be direct integration with Quickly
<dpm> That is, you could still use the commands, but not within Eclipse (unless you manually add them as external commands to invoke)
<ClassBot> JumpLink915836 asked: Is it planned to support more languages with Quickly?
<dpm> good question. The way Quickly is designed, it can already support almost any language through its modular design based on templates
<dpm> but at the core we focus on Python and a basic Ubuntu GUI app
<dpm> There is a community project for those interested in providing templates for app types or different languages for Quickly: https://launchpad.net/quickly-community-templates
<ClassBot> xkernel asked: "quickly create ubuntu-application" by defaults create Python app, what if I want to use C or C++?
<dpm> I believe the above should also answer this question too :)
<dpm> Ok, let's continue
<dpm> 6. In order to keep our work, it is good practice to save revisions from time to time. Now it's as good a time as ever. You can do that now by typing:
<dpm>    $ quickly save "Updated authors file"
<dpm>    -- Now there is a revision identified by a number and the message you passed quickly saved under revision control. You can always come back to it if you like. This command will effectively invoke bzr, the distributed version control system
<dpm> 7. Now let's have a look at the code, fire up the text editor to open all the project files:
<dpm>    $ quickly edit
<dpm>    -- Generally you will be modifying the UbuntuRocksWindow.py file, do not worry about the others for now.
<dpm> 8. Ok, now that you know how to edit code, we'll modify the UI a bit to give you a taste of UI design. Fire up glade, the GUI designer:
<dpm>     $ quickly design
<dpm>     -- What you see are the widgets that are part of your app's main window. You can modify them visually with Glade.
<dpm> 9. Go to the widget tree on the top right-hand side, expand the ubuntu_rocks_window until you find 'label1' and select it.
<dpm> 10. Now go to the properties dialog below the widget tree and find the 'Label:' property. Change it to something like: "Ubuntu rocks!"
<dpm> 11. Check out that the app runs with your UI changes:
<dpm>     $ quickly run
<dpm> VoilÃ , your first Ubuntu app, congrats! :-)
<dpm> 12. Save the final version of your app:
<dpm>     $ quickly save "Modified the GUI with a note"
<dpm> At this point I'll leave it up to you to experiment with Quickly and let your imagination run wild with your apps :)
<dpm> Unfortunately, we're running out of time, so I'll have to be brief on the packaging command
<dpm> However, it works almost magically, just try it:
<dpm>     $ quickly package
<dpm> and it will package your app automatically for you, which is rather awesome :)
<ClassBot> tuxfan_ asked: Why do you put a string after the save command?
<dpm> good question. That string will be used as a comment next to the version Quickly (via bzr) will commit. That will help you reviewing history and remembering what you did at each point while developing your app
<dpm> you can see such comments using the 'bzr log' command, or any visual revision history viewer
<ClassBot> xkernel asked: quickly package raised this error "(setup.py:27328): WARNING **: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken"
<dpm> This looks more like a warning than an error to me. Have a look at whether Quickly generated the package or not
<dpm> if it didn't, I'd suggest trying to get help on Ask Ubuntu: http://askubuntu.com/questions/tagged/application-development
<dpm> which is an awesome resource for all your questions related to Ubuntu, including app development
<dpm> I've asked questions there and got answers for the most obscure development topics there, so it's worth checking out
<dpm> Ok, so let's move on to mobile, but let me quickly point you to a few useful resources
<dpm> http://developer.ubuntu.com/resources/
<dpm> Do check out the tutorials in there!
<dpm> Also: http://developer.ubuntu.com/community/
<dpm> There you'll find all the info you need to get support, and if you like to get involved in the app developer community
<dpm>  
<ClassBot> tuxfan_ asked: Does that mean i can use the string provided to roll in a previous version?
<dpm> ah, let me answer the questions quickly before moving on...
<dpm> The string (or comment) is used as a description only (as a human, you are better equipped to understand the description of what you were doing rather than the revision number where you did it). For rolling in previous version you'll use the bzr revision number to which the comment is attached to
<ClassBot> yellabs-r2 asked: will future bring integration into glade ?  Or an standalone version for apps development
<ClassBot> There are 10 minutes remaining in the current session.
<dpm> Quickly is already integrated with Glade in the sense that it invokes it, but tighter integration through an API is planned via the Quickly Reboot project
<ClassBot> spav asked: Ok. quickly use gtk+ for UI we can use also Qt witch will use phone version of ubuntu UI
<dpm> We're not yet using Quickly for our developer story, as we've just released a preview of our SDK. The Ubuntu SDK preview uses QML for creating mobile apps
<dpm> Ok, let's talk more about mobile
<dpm>  
<dpm> Developing apps for the phone
<dpm> =============================
<dpm>  
<dpm> The part that you should get familiar with today is the Ubuntu UI Toolkit, which is part of the Ubuntu SDK preview.
<dpm> This is being developer as a separate story from the desktop for now, but you'll gradually see more and more parts converging in our master plan for Ubuntu world domination  :)
<dpm> You will find all of the details on how to install the Ubuntu SDK preview and get started here:
<dpm>  
<dpm> http://developer.ubuntu.com/get-started/gomobile/
<dpm>  
<dpm> Just try to go through step 1 in the process to install everything while I talk about the UI toolkit for a bit..
<dpm> Essentially, the UI Toolkit provides developers with a set of carefully (and beautifully, I shall say) designed standard GUI components
<dpm> to use as the building blocks for all user interaction. As such, you'll find labels, buttons, text boxes... all of the standard elements necessary to create a consistent and intuitive app.
<ClassBot> JumpLink asked: will it be possible to develop mobile apps with gtk? That would make it easier to port some apps.
<ClassBot> There are 5 minutes remaining in the current session.
<dpm> Right now we're basing our development toolkit on QML, so while technically possible, I'm not sure what kind of support there will be for developing GTK+ apps for the phone. We're focusing our efforts on developing apps on the QML toolkit only, as it's proven to scale well to different form factors on different devices
<ClassBot> tuxfan_ asked: go-mobile recomends 12.10...can it be installed in 12.04 too?
<dpm> It can now, but the level of support might not be the same as on 12.10. I believe installing on 12.04 should work already, but if you've got issues, try searching on ask ubuntu for instructions from folks who've already installed it
<dpm> The next step in the process is to run the tutorial to get a taste for a real-world working example and having you wanting to get more :)
<dpm> But as we're running out of time, what I'll do is to point you to it and let you run through it on your own time:
<dpm>  
<dpm> http://developer.ubuntu.com/resources/app-developer-cookbook/mobile/currency-converter-phone-app
<dpm>  
<dpm> What's been really overwhelming is that our community has already been creating lots apps with the Ubuntu SDK preview, which is pretty amazing when you think there still isn't a device for Ubuntu for phones available to them yet!
<dpm> Have a peek:
<dpm> https://plus.google.com/u/0/communities/111350780270925540549/stream/7914b6fd-cb15-485c-a50a-cd18b7768c2d
<dpm> They all look stunning
<dpm> As a taster, also have a look at this full-fledged Podcast client written by our friend Stuart Langridge (aquarius) in just a few lines of code
<dpm> http://paste.ubuntu.com/1564468/
<dpm> You can save it as a .qml file and run it with qmlscene filename.qml once you've installed the SDK preview
<dpm> Anyway, time to go,
<dpm> If you want to learn more, join Michael Hall and myself next Friday at 15:00 UTC in a public developer hangout, where we'll be talking in detail and answering all of your questions about this project and the phone developer story
<dpm> thank you for your time and questions!
<dpm> Next up, the awesome Bhavani Shankar will be talking about the Ubuntu App Review Board
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu App Review Process Explained - Instructors: coolbhavi
<dpm> coolbhavi, the floor is yours!
<coolbhavi> :) thanks dpm
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<coolbhavi> for the cool session
<coolbhavi> Alright. Hi All and welcome to my session on introduction to ubuntu app review board, who are we and what we do
<coolbhavi> Here is a short intro on me (for those who dont know me :)): I am Bhavani Shankar a Ubuntu developer, currently serving on the Application Review Board and LoCo council in Ubuntu.
<coolbhavi> == Who is the Ubuntu App review board and why are we here? ==
<coolbhavi> The Application Review Board (ARB) is the team governance council for assessing post-release applications in ubuntu and releasing them into the software center through -extras repository.
<coolbhavi> == Our Process ==
<coolbhavi> Our process mainly consists of 3 main parts:
<coolbhavi> First, when someone uploads their app into myapps portal (https://myapps.developer.ubuntu.com/dev/) we do the following checks primarily:
<coolbhavi> We check for the contents of the app as per arb guidelines, check if the app runs as expected, packaged as per arb guidelines. (and vote on them)
<coolbhavi> Secondly, Once the compliance checks above are complete we do a qa check after uploading to extras repository.
<coolbhavi> Thirdly we publish the app if everything is fine wrt step 1 and 2
<coolbhavi> Any questions?
<ClassBot> anish1307i asked: arb guidelines ?
<coolbhavi> anish1307i, I am going to explain the same in detail as the session goes on :)
<ClassBot> jierro asked: how many dudes are in ARB?
<coolbhavi> jierro, currently there are 5 members on the ARB https://launchpad.net/~app-review-board/+members#active
<coolbhavi> so moving ahead...
<coolbhavi> == Seems interesting? Here is a bit more info on the process ==
<coolbhavi> == Our general goal ==
<coolbhavi> Our focus is on lightweight apps. To give you a general idea, we're looking for the kind of apps that could be reviewed for functionality and security in about an hour reading through the code. We'll also do a licensing and packaging review.
<coolbhavi> Submissions should be applications, not stand-alone documentation or media (image bundles, fonts, movies) and we review only free apps
<coolbhavi> Apps should not be forks or updates of existing applications in the Ubuntu archive (main/universe/etc).
<coolbhavi> Apps should be well integrated into the desktop, working well with the Dash and Launcher. The ARB reviews graphical apps, not command-line apps.  (for the sake of simplicity in reviewing)
<coolbhavi> == Content ==
<coolbhavi> Content must be suitable under the terms of the Ubuntu Code Of Conduct
<ClassBot> bobweaver asked: with more and more developer's every day has there been a movement at all to get more then just X amount of people to ARB ?
<coolbhavi> bobweaver, thats the precise reason we are working on automating the review process which I ll come to at a later stage
<ClassBot> jincreator asked: If ARB review only free apps, then who review non-free apps?
<coolbhavi> jincreator, there is a separate queue for commercial apps handled by the myapps team in a separate queue
<ClassBot> jierro asked: and who review heavyweight programs?
<coolbhavi> jierro, if you want some app with a lot of features and code functionalities and other functionalities included which is beyond the scope of lightweight apps defined by the ARB, one could go through the normal sponsorship queue in ubuntu
<coolbhavi> Applications must be Free/Libre/Open Source software. We follow the Ubuntu Licensing Policy. (http://people.canonical.com/~cjwatson/ubuntu-policy/policy.html/ch-archive.html#s-ulp)
<coolbhavi> Apps should be useful or interesting to a general audience.
<coolbhavi> Apps must be able to be built with tools & libraries in the Ubuntu archive. Apps may bundle additional libraries they depend on, but may not include new versions of already packaged libraries.
<coolbhavi> == Running of the app ==
<coolbhavi> running of the app on a machine covers the below points:
<coolbhavi> Application runs correctly
<coolbhavi> Major features operate as expected
<coolbhavi> most importantly, Does not perform any malicious actions (like accessing/modifying system files)
<coolbhavi> == Packaging of the app ==
<coolbhavi> The application is well packaged using the Debian packaging system
<ClassBot> jierro asked: what is going on with apps from "Ubuntu App Showdown", that are still not in Software Centre?
<coolbhavi> jierro, due to the transition from manual reviews to automated reviews, and since most people contribute in their free time, reviews are going on at a slow pace and we are trying our level best to speed up reviews and include the apps into USC
<coolbhavi> which we will definitely do in due course of time
<coolbhavi> The application is well packaged using the Debian packaging system
<coolbhavi> All correct dependencies are met
<coolbhavi> Application installs cleanly
<coolbhavi> Application can be removed cleanly
<coolbhavi> Includes suitable copyright and licensing content
<coolbhavi> Application integrates into the desktop, with appropriate Launcher or menu entries
<ClassBot> JumpLink asked: the same applies for a new (developer) library instead a app?
<coolbhavi> JumpLink, I'll cover the packaging requirements in detail next as its pretty strict
<coolbhavi> == A bit more info on packaging guidelines which is pretty strict ==
<coolbhavi> We greatly prefer source tarballs with a standard versioning scheme, such as foobar-1.2.3.tar.gz or foobar_1.2.3.orig.tar.gz, that unpacks into a directory named foobar-1.2.3.
<coolbhavi> The version for your package in debian/changelog should use the format <upstream>-0extras<ubunturelease>.<packagerev> where packagerev starts at 1 with the first upload. Example: 1.2.3-0extras11.10.1 for the first upload of a package with the upstream version 1.2.3. [Note: This is different from the standard requirements for Debian/Ubuntu packages]
<coolbhavi> wherein we use 0ubuntu1 and target it at the main repositories for instance
<coolbhavi> you need to have just one entry for each version that's published to Extras.
<coolbhavi> (in debian/changelog)
<coolbhavi> Make sure the target distro in debian/changelog is the current release of Ubuntu, not an older version, or the development version that hasn't been released yet.
<coolbhavi> Your package should install most files in /opt/extras.ubuntu.com/<packagename>. This includes all libraries, binaries, and configuration files, much as a part of avoiding namespace conflicts if any, with extras
<coolbhavi> However there are a few exceptions:
<coolbhavi> copyright, changelog, and other example files pertaining to the app is allowed to be installed in /usr/share/doc/<packagename>
<coolbhavi> The .desktop file is allowed to be installed in /usr/share/applications with the only condition that it should have a extras prefix to it
<coolbhavi> Example: extras-foobar.desktop for a package named foobar.
<coolbhavi> Same condition goes with any lenses too which are allowed to be installed in their standard locations  but with an extras prefix to the service
<coolbhavi> As a side note: this link provides info on some of the awesome apps we received during the app showdown: http://www.omgubuntu.co.uk/2012/08/ubuntu-app-showdown-winners-announced
<coolbhavi> == Seems bit too complex? ==
<coolbhavi> There is no need to worry as we are automating the process above (as a  after result of our wildly successful recent app developer showdown http://developer.ubuntu.com/showdown/apps/ wherein we reviewed 133 cool apps in a single week)
<coolbhavi> The whole spec is here: https://wiki.ubuntu.com/AppDevUploadProcess
<coolbhavi> on which we have started working (Presumably lengthy for a first read)
<coolbhavi> We hope to have everything in place for 14.04 (and on a personal note, have contributed creation of a lintian profile to check arb-package compliance towards the same)
<coolbhavi> and any help in implementing the spec or help in manual reviews as of now (As more hands speed up the review process and the voting process which is a +2 votes currently for an app to get through) You can join the app review contributors team here: https://launchpad.net/~ubuntu-app-review-contributors
<coolbhavi> and start reviewing apps which come on the ARB queue
<ClassBot> There are 10 minutes remaining in the current session.
<coolbhavi> and of course our eternal gratitude will be there with you for your offer of help :)
<coolbhavi> Thats it pretty much from my side and the floor is open to any questions.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/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 || No Sessions Currently in Progress
<coolbhavi> JumpLink,  basically you ll need to use the software in the ubuntu archives but it can be allowed if it runs in your program as expected
<coolbhavi> Original question was <JumpLink> QUESTION: E.g. the JavaScript environment Node.js is not in the Ubuntu archive, is it allowed to use node.js if I install it to /opt / extras.ubuntu.com / <packagename>?
<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 Developer Week - Current Session: Ubuntu App Review Process Explained - Instructors: coolbhavi
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<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 Developer Week - Current Session: [On Air] Finding Memory Leaks - Instructors: achiang
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<JoseeAntonioR> Hey, guys! You can check the next session at www.ubuntuonair.com
<achiang> http://pad.ubuntu.com/9J5hd9GmQK
<achiang> If you are on raring, simply:
<achiang> $ sudo apt-get install apport-valgrind
<achiang> If you are on an older release, create a raring chroot and then:
<achiang> $ apt-get source apport-valgrind
<achiang> Alternatively, download the following:
<achiang> https://launchpad.net/ubuntu/+archive/primary/+files/apport_2.8-0ubuntu2.diff.gz
<achiang> https://launchpad.net/ubuntu/+archive/primary/+files/apport_2.8-0ubuntu2.dsc
<achiang> https://launchpad.net/ubuntu/+archive/primary/+files/apport_2.8.orig.tar.gz
<achiang> And extract with:
<achiang> $ dpkg-source -x apport_2.8-0ubuntu2.dsc
<achiang> You will also need a newer valgrind, which can be obtained:
<achiang> https://launchpad.net/~jtaylor/+archive/jtaylor
<achiang> You will also want:
<achiang> $ sudo apt-get install ctags cscope
<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 Developer Week - Current Session: Testing with Autopilot - Instructors: balloons, thomi
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<balloons> Hello everyone
<balloons> My name is Nicholas Skaggs, I'm the QA community coordinator..  Recently, we've taken up using autopilot to help meet our automated testing needs. So today I'll be talking about what autopilot is, how it works, and how you might be able to use it yourself for your application
<balloons> With me today is Thomi, I'll let him introduce himself as well
 * thomi waves
<thomi> I'm THomi Richards - I work for Canonical on a number of different projects focused around the desktop & automated testing. I'm here because I'm one of the main authors of autopilot, so hopefully I can help answer any questions you might have....
<thomi> it's also really early in New Zealand, so if I don't make sense, I probably just need more coffee
<balloons> yes, do thank thomi for getting up early to hang out with us :-)
<balloons> so let's begin shall we
<balloons> first of all, what is autopilot exactly?
<balloons> Well, as eluded to, autopilot is an automated testing tool, originally developed by the unity team for testing unity.
<balloons> The goal of autopilot tests is to provide higher level application and functional testing. The tests are written in python and can be user executed or scripted via a test runner such as UTAH or jenkins to run and publish results automatically.
<balloons> So what can it do? Well, autopilot can be used to perform functional testing of an application.
<balloons> Practically, this means you can simulate user input and drive your application just like a human would. If you have unit tests and build tests for your application, adding autopilot tests will help you to ensure the application actually executes properly when interacted with by a user.
<balloons> This allows you to add that final level of what might be called acceptance testing of your application in an autmated way
<thomi> Right - autopilot provides a very high-level test. The goal is to simulate user input, and verify that your application does what's expected of it.
<balloons> Now, this all sounds good, so you might be asking how this is different from other testing tools
<balloons> I'll let thomi pitch in here as well, but.. The unique part of autopilot is that it doesnât rely on doing screengrabs to interpret application interaction. Instead, the autopilot team has implemented dbus introspection to allow you to machine read the data driving the application interface instead.
<balloons> This allows you to read the values being displayed by the application without having to visually look at them. The upsides of this are the ease of maintenance and writing the test. The potential downside is that it does not verify how the application actually appears, since it is not âlookingâ at it. (Though I will posit you could probably add an assertion to do this, haha!)
<thomi> Right - autopilot relies on having code execute inside the application under test. This is easy for the Unity shell (since we wrote it), and for Gtk & Qt applications we have our own autopilot plugin that we persuide the application under test to load for us. THese plugins export internal application values over DBus, for your autopilot tests to read.
<thomi> balloons: correctly identified that you cannot verify how something actually looks on the monitor with autopilot. However, hopefully your GUI framework of choice (Gtk+, Qt) contains those sorts of tests. In practise, we haven't missed this functionality at all.
<balloons> So, how do you get it? Well autopilot is in the repository since precise I believe..
<balloons> but Iâd encourage you to get the latest upstream version by installing from the ppa. Upstream development is still happening fast, so itâs nice to use the latest and greatest ;-)
<balloons> sudo add-apt-repository ppa:autopilot/ppa
<balloons> sudo apt-get update && sudo apt-get install python-autopilot
<thomi> balloons: not sure about precise. Quantal & onwards I believe. The application plugins are in the autopilot PPA, so you may want to add 'ppa:autopilot' to your system in order to get them
<thomi> If you're running raring, autopilot is released almost daily into the OS, so... yay!
<balloons> ^^ :-)
<balloons> So, before we delve into the details of how this works, let me show you an example testcase from unity so you can see how a testcase looks
<balloons> http://bazaar.launchpad.net/~unity-team/unity/trunk/view/head:/tests/autopilot/unity/tests/test_home_lens.py
<balloons> for those of you familar with xunit tests, you'll feel right at home here
<thomi> Autopilot is built on top of the standard python test tools, so we try and keep the structure as simple as possible
<balloons> you can probably follow along with what's going on inside the testcase... you have a setup and teardown step which is run before and after each test respectively, and then (in this case) one test function defined
<balloons> We'll talk more about writing these testcases in a few mins.. for now, I'd like to ask thomi to talk a little bit about the technical side of autopilot
<balloons> please, feel free to ask question as we go.. just prefix your question with 'QUESTION:' in the chat
<thomi> sure. I won't go into too much detail, because test authors don't need to know too much about how things work under the hood, but...
<balloons> :-)
<thomi> as an example, another unity test suite: http://bazaar.launchpad.net/~unity-team/unity/trunk/view/head:/tests/autopilot/unity/tests/test_spread.py
<thomi> this one tests the spread functionality of the launcher icons.
<thomi> err, I mean "application windows"
<thomi> in the AP test, where we access a python attribute like "self.window_manager.scale_active", we're actually causing a DBus round-trip to the application under test
<thomi> so under the hood, autopilot is creating a query that asks unity to provide updated state for the WindowManager object
<thomi> when autopilot gets that new information back, it can then pass the new value to python, and the test can be evaluated.
<thomi> To run autopilot tests, you can use any standard python test runner
<thomi> so, nosetests, testtools, unittest, whatever. *or*, you can use autopilot itself
<thomi> autopilot gives you a number of features that other test runners don't, including:
<thomi>  * You can record videos of failed tests. We use this *a lot* for the Unity tests. They're run automatically on a jenkins machine, and failed tests appear both as a test result inside jenkins, and as a video/build artifact.
<thomi>   this makes it really easy to 'see' why a test is failing on the test machine.
<thomi>  * We can also save test results to Junit XML file format, which makes jenkins integration much easier
<thomi> So... I'm sure I've forgotten things - any questions about the technical side of autopilot at ths stage?
<balloons> if not, let's talk a bit about writing the cases
<balloons> I want to mention some resources available to everyone for help
<balloons> This friday weâre having a hackfest were weâre encouraging people to come out, learn about autopilot (and autopkg) automated testing, and to contribute some tests. https://wiki.ubuntu.com/QATeam/AutomatedTesting/Hackfest. Weâll give a demo and be on-hand to guide you through contributing and writing tests.
<balloons> If your interested in learning to write testcases, attending the session is an excellent place to start. If your not able to attend, the videos will be available afterwards and #ubuntu-quality is always a good place to get help. The autopilot guys as well as myself and other testwriters all idle in the channel.
<balloons> In the meantime, please do check out the resources available to you. The official autopilot documentation is a great place to start.
<thomi> also, people should feel free to ping me on IRC and ask questions - I might not be awake, but I'll answer them when I see them
<balloons> Here's the links to the docs:
<balloons> http://unity.ubuntu.com/autopilot/
<balloons> Note that the website is still missing docs (build error :-(, weâll get it fixed), but once youâve installed autopilot you have a full documentation set locally on your machine. I would encourage you to use this documentation.
<balloons> file:///usr/share/doc/python-autopilot/html/tutorial/getting_started.html
<balloons> Finally, there is a set of tutorials I have written on my blog that guide you through writing your first autopilot testcases:
<balloons> http://www.theorangenotebook.com/2012/11/getting-started-with-autopilot.html
<balloons> http://www.theorangenotebook.com/2012/11/our-first-autopilot-testcase.html
<balloons> http://www.theorangenotebook.com/2013/01/introspecting-with-autopilot.html
<balloons> I owe thomi getting this into the official documentation ;-)
<balloons> Last bits of the last session, hang in there everyone :-) Let's talk a bit more now about how ubuntu uses autopilot as an example of how it can help contribute to your application development and release process
<balloons> As mentioned, the unity team originally created autopilot to solve their needs for automatically functionally testing unity. This allowed them to test and assure that the designed and coded features actually performed as expected when interacted with by the user. Being a primarily user interaction application, the need for something like autopilot to test was vital.
<thomi> Right - this was for the precise release. We needed a way to automatically detect when we'd broken a feature.
<balloons> I would encourage you to read a bit about how autopilot plays a role in there release process by reading the excellent articles didrocks has posted on the subject (Unity: release early, release oftenâ¦ release daily!) http://blog.didrocks.fr/
<balloons> In addition, we as a ubuntu quality community team are utilizing autopilot to help with our testing efforts. Currently, weâre focused on getting tests for our desktop applications, with the goal of also using autopilot to automate image installations and do other useful tests :-) There is a project page for our work here:
<balloons> https://launchpad.net/ubuntu-autopilot-tests
<balloons> If your interested in helping, please do come out to the hackfest this friday.
<balloons> https://wiki.ubuntu.com/QATeam/AutomatedTesting/Hackfest
<balloons> thomi, if you would like to say anything more about how unity uses ap, jump in now ;-) Then we'll field questions
<thomi> sure
<thomi> so we've been building a test suite since precise
<thomi> Right now we have pretty good coverage we have....786 tests in the unity test suite
<thomi> which takes over an hour to run right through
<thomi> we test all of the main unity components - the dash, launcher, panel, etc...
<thomi> we *require* a new feature branch to have an autopilot test before it gets merged
<thomi> since the precise release, autopilot has helped us catch *lots* of regressions before we release Unity
<thomi> resulting in a more stable & usable development release.
<thomi> We also run the unity AP tests over a selection of different hardware
<thomi> including machines with ati, nvidia, and intel gfx chipsets, to help catch issues where nux has some bad interactions with the graphics drivers
<thomi> we also test with both the free and proprietary drivers
<thomi> so... I think the best thing now is to answer questions you may have
<ClassBot> manavakos asked: how do we get autopilt? simple apt-get?
<thomi> yup - simple apt-get - if you're in raring. Even then, it's best to have the autopilot PPA added. We're hoping to make sure everything is released into Ubuntu proper before too long
<balloons> The autopilot ppa is sudo add-apt-repository ppa:autopilot/ppa
<ClassBot> manavakos asked: so autopilot is a tool for testing ANY kind of code or of a specific language (python)?
<thomi> autopilot is still in very active development, so things change all the time, so the PPA really is your best bet. If you have any problems, ping myself or balloons
<thomi> Autopilot can test any Qt4, Qt5, or Gtk+ application (or Unity), but your tests must be written in python
<balloons> thomi, so I can't write my tests in smalltalk?
<balloons> :-p
<thomi> so a typical application will have a C++ component for the actual application, and a python component for the tests
<thomi> smalltalk..... no.. just.. no
<ClassBot> epikvision asked: What's a unit test and a build test?
<balloons> I think this is a good question we can address actually.. So we are saying autopilot fits in the testing strategy as a functional or acceptance testing tool
<thomi> right - A unit test is a test that verifies a single unit of code - hopefully a single function. It's written in the same language as the application itself
<thomi> so unit tests are about testing very low level functionality - you care about a certain function working as it should...
<thomi> autopilot tests, on the other hand, are very high-level tests - we care about the functionality of the applicaton, rather than any specific piece of code
<thomi> you need both levels (and a few in-between) in order to have any confidence in your application
<thomi> so Unity also has unit tests, written in C++ and using the gtest framework
<thomi> ...but that's a discussion for another day :)
<balloons> indeed :-) It's important to have tests addressing the different levels to help ensure your application is performing correctly
<thomi> We picked python as the language for autopilot because Canonical, and the Ubuntu community in general have many python testing experts.
<thomi> so we've got a great body of knowledge around how to write good tests in python :)
<thomi> compared to say.. ruby...
<balloons> I won't spout on too much about this, but if your curious, google and wikipedia are your friends -- try looking at release and testing methodologies to see a more complete picture of generically how the levels work
<balloons> alright, any other questions?
<thomi> AMA :)
<ClassBot> balloons asked: Do I need to modify my application to use autopilot?
<thomi> derp derp
<thomi> as long as you haven't prevented Qt/Gtk from loading plugins, then you don't need to modify your application to load the autopilot plugin
<thomi> however
<thomi> it helps *a lot* if the objects in your application have sensible names
<thomi> you use these names in your test to retrieve the objects you care about
<thomi> so please - Qt authors, name your objects!
<thomi> (I'm sure you do this already)
<thomi> but apart from naming your objects sensibly, No: autopilot doesn't require you to change / rebuild your application
<thomi> (which is kind of cool) :)
<thomi> any other questions?
 * thomi glares at balloons
 * balloons smiles
<balloons> alright, thanks everyone for coming out (and/or reading this log)
<ClassBot> There are 10 minutes remaining in the current session.
<thomi> I'd encourage people interested in contributing to Ubuntu to help balloons out and start writing AP tests. It's a great way to get involved without having to learn the application internals
<thomi> I'm on IRC 24/7, but only awake some of the time. I'm more than happy to help people out when they have questions
<balloons> An for application developers, it's a great way to bridge your testing needs easily
<balloons> Let's leave some contact information in case you'd like to follow-up
<balloons> for myself, I'm balloons on IRC, ping me anytime.. My launchpad page is here and it has other forms of contact info like email as well
<balloons> https://launchpad.net/~nskaggs
<balloons> #ubuntu-quality is the place to be if you have questions
<thomi> I'm also in #ubuntu-quality, and my contact details are listed here: https://launchpad.net/~thomir
 * thomi waves
<ClassBot> epikvision asked: Is it recommended to do ap on raring?
<thomi> yes
<thomi> :)
<thomi> we update AP all the time, and those new features are only released to raring
<balloons> same here if you want to contribute tests to the community project
<balloons> raring is our focus for testing
<balloons> plus ap has the goodies on raring
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> manavakos asked: what kind of help can we provide, could you be a bit more specific??
<balloons> hopefully this answers it for you, but you can do a couple things
<balloons> 1) if your an app developer, adopt autopilot and write some tests for your app.. We'll thank you and your users will too :-) not to mention, you'll thank yourself for easier debugging and regression prevention ;)
<balloons> 2) If your interested in contributing to ubuntu, learn to write autopilot tests.. We need tests for ubuntu default applications, image installation, and other things we probably haven't thought of yet
<balloons> We are happy to take your contribution and help you learn about writing tests.. it's a great way to be invovled
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Unity Integration - Instructors: mhall119
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.
<mhall119> hello everyone
<mhall119> for this session I'm going to be talking about how to integrate applications with the Unity desktop
<mhall119> which means using the available APIs to add information about your app (or an existing app) to the Unity launchper, indicators, and notifications
<mhall119> I'm going to start off with the simplest things you can do to improve how an application looks and works on Ubuntu
<mhall119> first of all, provide a hi-resolution icon for the app
<mhall119> Unity shows larger icons than Gnome 2.x used in many places, the dash, the launcher and the apt-tab switcher
<mhall119> if the app only provides smaller bitmap images, they will be up-scaled to fit, and that doesn't look very good
<mhall119> providing large bitmaps (128x128) helps improve the look of the app in Unity
<mhall119> SVG icons are even better, as they can be scaled to exacly the right size while staying perfectly clear
<mhall119> secondly, there are some easy things you can do with the application's .desktop file to improve it's integration, without any code changes
<mhall119> the first of these is the Keywords field
<mhall119> Unity uses this field when searching in the Dash, along with the name and description fields
<mhall119> so if you have a text editor, it should include "Text" and "Editor" in the Keywords
<mhall119> and any other keywords you think a user might search for when they want your application
<mhall119> the second thing you can do with the .desktop file is add actions
<mhall119> Actions are a new addition to the XDG specification: http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#extra-actions
<mhall119> in Unity, these actions become Quicklist entries in the launcher, which can be accessed even when the application isn't running
<mhall119> Actions can be anything that you can trigger from the command-line
<mhall119> again, this does not require any code change, just changes to the text in the .desktop file
<mhall119> alright, those are the easy ones, any questions so far?
<ClassBot> manavakos asked: can you give an example of an "action"? what yould one write on the command line?
<mhall119> an Action is represented as a sub-section in the .desktop file
<mhall119> a common one is to start a new window of an app
<mhall119> so you'd create a new section at the bottom of the .desktop called:
<mhall119> [Desktop Action NewWindow]
<mhall119> and inside that you would have:
<mhall119> Name=Open a New Windows
<mhall119> Exec=yourexecutable --new-window
<mhall119> assuming your application takes a --new-window flag
<mhall119> you can see more examples of this here: http://developer.ubuntu.com/resources/technologies/launcher/
<mhall119> and also the XDG specification link I pasted earlier
<mhall119> alright, now let's get into what you can do inside the application itself
<mhall119> the Actions mentioned above are called "static" Quicklist actions, because they can be accessed even when your application isn't running, but they don't change
<mhall119> you can also have a "dynamic" Quicklist, which can be updated from the application's code itself
<mhall119> if you scroll down a little bit further on the above link, you will see python examples of how to do this
<mhall119> but basically you create a new LauncherEntry object for your .desktop file, then attach a DBusMenu to it
<mhall119> unlike static quicklists, you can add or remove entries from this dynamic menu
<mhall119> you can also use different menu entry types, such as a checkbox or radio selection
<mhall119> and of course you connect these menu items to callback functions in your code
<mhall119> in addition to dynamic quick lists, you can also add status information to your LauncherEntry that will be displayed on your application's Launcher icon
<mhall119> For example, you can set the "count" property, which will show a number in the upper-right corner of your icon
<mhall119> this is used to indicate new messages in Thunderbird, for example
<mhall119> you can also set the "progress" property, which will draw a progress bar across the middle of your application's icon
<mhall119> and finally, you can set the "urgent" propery, which will make your application's icon wiggle and catch the user's attention
<mhall119> any questions on Launcher integration?
<mhall119> ok, moving on
<mhall119> if your application deals with messaging at all, then you probably want to integrate it with the Messaging Menu
<mhall119> this is useful to let the user know when they have new messages, or how long ago a message was received
<mhall119> now the API for this changed with 12.10, but the way it works is essentially the same
<mhall119> you create a new MessagingMenu object with your application's .desktop file
<mhall119> which, like the Launcher, is where it gets the icon and name to display
<mhall119> from there you can add as many "sources" as your application needs
<mhall119> for example, Thunderbird uses a source per mail folder
<mhall119> Empathy uses a source per user
<mhall119> you can give your source either a count, or a time
<mhall119> the Count is simply displayed as it is, next to the source label
<mhall119> the time, however, is show as the amount of time between it and the current time
<mhall119> so Unity handles updating that as time passes
<mhall119> you can also tell the Messaging Menu whether or not to get the user's attention, which wil change the icon's color
<mhall119> your sources can also be given a callback function that is executed when the user clicks on it in the MessagingMenu
<mhall119> any questions on the MessagingMenu?
<mhall119> documentation on that can be found here: http://developer.ubuntu.com/resources/technologies/messaging-menu/
<mhall119> and the new API docs are here: http://developer.ubuntu.com/api/ubuntu-12.10/python/MessagingMenu-1.0.html
<mhall119> alright, moving on to the Sound Menu
<mhall119> this is a little less common for apps to integrate with, but it's useful if you are doing anythign with multi-media playback
<mhall119> once again, the process begins by using your application's .desktop file to create a new MusicPlayer instance
<mhall119> this will put your application, along with it's icon, into the Sound Menu
<mhall119> you can also connect callbacks for play/pause, previos and next, allowing the user to control your app from within the sound menu itself
<mhall119> and, if your application has some concept of Playlists, you can add those to the Sound Menu as well
<mhall119> documentation on all of this is available here: http://developer.ubuntu.com/resources/technologies/sound-menu/
<mhall119> something new that was introduced in 12.10 is Unity Webapps integration
<mhall119> what this does is exposes all of the APIs I've mentioned, the Launcher, MessagingMenu and SoundMenu, to javascript in the browser
<mhall119> this lets any website that wants it, to integrate with your desktop to provide you with information
<mhall119> these APIs are write-only, so you don't need to worry about website gaining information about you or your system
<mhall119> but it means you can, for example, get gmail inbox counts without installing a separate script, or change tracks in Grooveshark without switching away from your code editor
<mhall119> more information about integrating webapps can be found here: http://developer.ubuntu.com/resources/technologies/webapps/
<mhall119> any questions before I move on?
<mhall119> guess not
<mhall119> ok, next up are Application Indicators
<mhall119> these sit alongside the Messaging and Sound menus in the top Unity panel
<mhall119> any application can add their own indicator
<mhall119> as you would expect, this starts with your .desktop file, and creating a new AppIndicator object
<mhall119> your indicator has 3 possible states, Active, Passive, and Attention
<mhall119> both Active and Attention can have separate icons, Active being the default and Attention for when you want the user to do something
<mhall119> When your AppIndicator is in the Passive state, the icon is not displayed on the Unity panel, but your AppIndicator code is still running
<mhall119> And of course you can attach a Menu to your indicator
<mhall119> These menus can contain either action entries, which just run a callback function
<mhall119> the can also contain Checkbox and Radio entries, as well as separators
<mhall119> Lastly we have Notifications
<mhall119> Unity uses notify-osd to display unobtrusive message bubbles
<mhall119> To create these, you would use the XDG Nofify API, which can support multiple back-end implementations, such as notify-osd
<mhall119> the notification can contain an icon, a short title, and a longer body
<mhall119> the background color, like other parts of Unity, is determined by the user's wallpaper
<mhall119> notify-osd supports three different methods for notifications
<mhall119> the first, and most common, is simply creating a new notification
<mhall119> these are queued and displayed one at a time to the user
<mhall119> you can also update a notification you have already sent, and if it is still being displayed Unity will swap out the text and icons for the new ones
<mhall119> finally you can append body text to an existing message, which is helpful if more information becomes available while it is being displayed, but you don't want to completely replace the old information
<mhall119> more information and examples for using Nofications is available here: http://developer.ubuntu.com/resources/technologies/notification/
<mhall119> and those are the major integration points that are available to applications in Unity
<mhall119> any questions about any of these areas?
<mhall119> all of these APIs communicate over DBus to the Unity Shell, and can be implemented in a way that won't break the application if it's running in something other than Unity
<mhall119> it's also worth pointing out that these APIs will be identical on all formfactors support by Ubuntu, which includes the desktop, TV, and the recently announced Phone
<mhall119> so even if they may be visually different in the way they are displayed, from a developer's perspective you won't have to worry about where it is being run
<mhall119> all of the documentation for these areas, as well as API docs for each, can be found on the Ubuntu Developer Portal, which I have been linking to throughout this session: http://developer.ubuntu.com/resources/
<mhall119> and if there aren't any further questions, we'll call it a wrap for the day
<ClassBot> There are 10 minutes remaining in the current session.
<mhall119> thank you everybody for coming, and thanks to the volunteers who are coordinating these sessions and helping us instructors
<mhall119> Be sure to come back tomorrow for the last day of UDW
<ClassBot> There are 5 minutes remaining in the current session.
<JoseeAntonioR> Thanks everyone for being here today, we'll be back tomorrow at 15UTC! Make sure to not miss it!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/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 || No Sessions Currently in Progress
#ubuntu-classroom 2013-01-31
<pitti> !m
<ubot2> Factoid 'm' not found
<pitti> (sorry, just trying https://wiki.ubuntu.com/Classroom/ClassBot before I mess up stuff during the actual session)
<pitti> seems the bot isn't active yet
<pitti> ah, ClassBot, got it
<IdleOne> I believe classbot commands are sent to it via PM
<wei2912> pitti: hosting a session soon? :D
<pitti> wei2912: yeah, in 45 mins
<pitti> IdleOne: confirmed
<wei2912> yep
<wei2912> pitti: good luck and have fun :)
<wei2912> and please answer our queries :)
<pitti> wei2912: don't tell me, tell whoever will listen :)
<wei2912> pitti: I bet loads will
<wei2912> Yep, automated testing :)
<dholbach> balloons, I blogged about the hackfest - maybe we should mention it in a couple more other places as well?
<pitti> dholbach: I'll mention it, too
<dholbach> pitti, oops, wrong channel, yes :)
<dholbach> thanks!
<JoseeAntonioR> WELCOME EVERYBODY!
<JoseeAntonioR> This is day 3 (yes, our last day :( ) of Ubuntu Developer Week and if you're completely new to the the event, you might want to check out https://wiki.ubuntu.com/UbuntuDeveloperWeek to review the schedule. This is also the place where logs and links to videos will be posted after the sessions.
<JoseeAntonioR> If you want to ask questions and join the conversation about the sessions, please make sure you also join #ubuntu-classroom-chat
<JoseeAntonioR> When you ask questions, please make sure you prefix them with QUESTION: otherwise they will not be picked up.
<JoseeAntonioR> Up next, we have an 'Automated testing in Ubuntu' session with pitti. Have fun today!
 * pitti waves hello
<pitti> please wave in #chat if you are listening in, to get an impression who and how many people are interested in this
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Automated Testing in Ubuntu - Instructors: pitti
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<pitti> hm, nobody?
<pitti> anyway, let's start
<pitti> Hello everyone!
<pitti> I'm Martin Pitt, working as an upstream QA engineer in the Ubuntu Platform team.
<pitti> Until some 1.5 years ago the development paradigm of Ubuntu has mostly been a, let's call it "opportunistic"/"crossing fingers" approach which was mostly driven by things like feature freeze, bug reports, and human testing.
<pitti> However, we realized that this was not practicable, sustainable, and good enough any more for a multitude of reaons, and that we need a more rigorous, automated, and preemtive approach to ensure that regressions are avoided and developers of (and also on) Ubuntu can have a much more stable system.
<pitti> So over time we have developed various kinds of automated tests which help us to eventually get there.
<pitti> I want to give an overview about what we currently do as well as what we have planned, and some pointers where you can look at the details of each test and where to go if you want to help with improving them.
<pitti> This will take some 20 minutes, so that we'll have 10 minutes at the end for questions and/or a break.
<pitti> == Daily images ==
<pitti> Since 12.04 LTS the Ubuntu Platform team set itself the goal to produce a working installation image every day; an image which fails to build or install for whatever reason is being considered as a major fault which shall cause developers to drop what they are doing and fix it immediately.
<pitti> This helps to prevent a "too much to do, we'll fix it by the next milestone" attitude, and also makes it a lot easier to identify and fix the regression as the knowledge what changed in the last 24 hours is still fresh in everyone's mind.
<pitti> To make this possible, we run "smoke tests" of the installation images whenever there is a new one on http://cdimage.ubuntu.com/ .
<pitti> The iso is being automatically installed (through pre-seeding) into a virtual machine in various modes such as "default", "encrypted home", "LVM", "OEM mode", or the various tasks for the server images such as "Samba server", "Print server", or RAID 1.
<pitti> After that the VM will be rebooted and checked if it ends up in a running Unity (for desktop images), or you can ssh into it (for server images), plus a few more general tests.
<pitti> If you are interested in the details, you can have a look at https://code.launchpad.net/ubuntu-test-cases which hosts all the relevant branches.
<pitti> In the same vein we also test that dist-upgrades work from the previous stable release and, if we are currently developing a new LTS release, from the previous LTS. The scripts are at https://code.launchpad.net/~auto-upgrade-testing-dev/auto-upgrade-testing/trunk/ .
<pitti> All of those tests run in Canonical's QA lab in Jenkins. We have a public mirror for it here:
<pitti>    https://jenkins.qa.ubuntu.com/view/Raring/view/Smoke%20Testing/
<pitti> There you can see all the image and upgrade tests that are run every day, their recent stability, and which ones currently fail.
<pitti> You can also click on the individual jobs, see their recent history, and for every run see the installer/upgrade logs that were produced so that you have immediate access to debugging information.
<pitti> I'm giving everyone half a minute to click around and get a first impression, in case you have further questions.
<pitti> there is also this view: http://reports.qa.ubuntu.com/smoke/raring/flat/ (thanks gema)
<pitti> Parameswaran Sivatharman (psivaa on IRC) is watching the results every day, and filing bugs for problems and regressions; so if you have some questions about all those or want to discuss a particular installation problem that you are seeing, you can talk to him.
<pitti> Javier Collado (jcollado on IRC) is the main developer of the tests themselves these days. If you have an idea and a branch with new or improved tests for images or upgrades, please go talk to him.
<pitti> This has already helped us a great deal to have a much less crazy milestone/beta/final release process and ensure that everybody can test Ubuntu every day without having to fear a complete failure.
<pitti> But of course any automated testing only gets you so far; in particular, installer UI oddities and bugs will not be discovered by this, and neither will bugs which affect the installed system and particular applications.
<pitti> So manual testing is still necessary and appreciated, but with this it should be a lot more enjoyable.
<pitti> == Packages ==
<pitti> Until 12.04 LTS, using the development release has always required a certain knowledge about the packaging system and, most importantly, caution when doing the daily dist-upgrade dance.
<pitti> In a lot of situations packages would build on some architectures but failed on others, causing apt to want to remove half of your system; or a missing dependency or half-done library transition caused the upgrade to not work at all.
<pitti> So since 12.10, uploads do not go directly into the development release any more, but are instead put into a staging area. Only when they are built on *all* architectures (including ports), and do not cause any uninstallability they are propagated into the development release.
<pitti> For you as user of the development release this means that it is now safe at all times to run apt-get dist-upgrade without having to manually double-check, and there should never be any half-done library or package renaming transitions.
<pitti> For you as a developer this means that it is now required to immediately fix up all consequences when you encounter a build failure or start a library transition, as otherwise your work won't land.
<pitti> This ensures a much smoother experience for everyone, and avoids building up a heap of "to fix later by someone else" liabilities, as we had had in the past.
<pitti> That settles the "dist-upgrade will not completely break my packaging system and OS" part, but we really want to do much more: not only should the package install, it should also actually work and not break other packages.
<pitti> For example, if we upload a new glib version, this might break something in gedit, pygobject, or the installer.
<pitti> Ideally we would have a set of automated tests for each package which we would then run against new uploads of that package, as well as whenever any of the package's dependency changes.
<pitti> So if the new glib breaks gedit, we want glib to stay in the staging area until the problem has been fixed (in glib or gedit), and only when everything is green again it should be promoted to the devel release.
<pitti> A lot of packages run existing upstream tests during package build. That's useful for many things, but is not enough to ensure above "does not break other package" property, as we don't rebuild gedit everytime we update any of its dependencies such as glib or GTK.
<pitti> That's what "autopkgtests" do.
<pitti> These are automatic tests which are shipped in many of our source packages and get run against the *installed version* of that package.
<pitti> So they can be run at any time, and also check that the packaging is correct (i. e. that the gedit package actually ships all the files that gedit needs, as opposed to just building them during package build).
<pitti> Debian has a defined standard how to ship and declare such tests (http://dep.debian.net/deps/dep8/) as well as an existing implementation which we refined quite a lot to work (http://packages.debian.org/autopkgtest)
<pitti> You can see the list of packages that have tests, and their status at https://jenkins.qa.ubuntu.com/view/Raring/view/AutoPkgTest/
<pitti> Again you can click through each of those and see all the logs and history, so that it should be quite obvious what failed and why.
<pitti> As you notice, there are currently quite a lot of failures. Some of them just have never succeeded in our test environment, but some of them are actual regressions.
<pitti> Right now we do not yet enforce a succeeding autopkgtest for a package to get promoted to the devel release, but we are working on getting this for raring still.
<pitti> At that point developers will hopefully pay more attention to when their tests start failing. :-)
<pitti> So any help with fixing the failing ones, as well as adding new ones is again greatly appreciated.
<pitti> Tomorrow (and every couple of weeks) we will have an "autopkgtest hackfest" in #ubuntu-quality where some of us will take time to guide you with creating and fixing tests, reproducing failures, etc. But of course you are welcome to show up and ask at any time.
<pitti> See dholbach's announcement at http://daniel.holba.ch/blog/2013/01/automated-testing-hackfest-2/
<pitti> All the scripts are publicly available at https://code.launchpad.net/+branch/auto-package-testing/.
<pitti> In essence this provides a script "prepare-testbed" which builds a virtual machine for running tests in, and a "run-adt-test" script which exercises a package's tests in that built VM, either from the archive, a branch, a PPA, or a locally built source package.
<pitti> So creating and running tests is really easy these days. You can read all the steps for it in the packaging guide:
<pitti>   http://developer.ubuntu.com/packaging/html/auto-pkg-test.html
<pitti> == Upstream (4') ==
<pitti> So now we are at a conceptual point where we avoid regressions to land in Ubuntu.
<pitti> However, that's not the end of wisdom:
<pitti> Even with this the feedback cycle between upstream making a change, then doing a release, someone packaging the release for Ubuntu, and noticing that it causes a regression somewhere else can still take several months.
<pitti> We want to apply our "continuous integration test" principle to our key upstreams such as GNOME or LibreOffice, and ideally tighten that feedback cycle to a by-commit granularity with getting test results within minutes.
<pitti> This consists of three major parts:
<pitti>  (1) Writing tests
<pitti>  (2) Running them regularly, and
<pitti> (3) Notify the relevant people if something goes wrong.
<pitti> We do very little of this at a production level yet, most of this is still in the experimental/planning stage.
<pitti> For (1), some components such as LibreOffice and some GNOME libraries already have an extensive test suite.
<pitti> For others we have contributed some tests, such as GNOME's power management or gvfs (GNOME's handling of remote sftp/ftp/samba file systems or removable devices).
<pitti> These new tests already have served to identify and fix quite a lot of bugs.
<pitti> For GNOME power management in particular I'm really happy to see that my initial "seed" of 5 tests now has led upstream (Bastien Nocera in particular) to add a lot more, and going wild on fixing the bugs that got discovered with those. :-)
<pitti> That's actually where we want to go with this, as we can't possibly maintain and develop tests for all upstreams out there.
<ClassBot> There are 10 minutes remaining in the current session.
<pitti> But we want to develop and provide technology to create tests, maybe provide the resources for running them regularly, and help upstream with setting up initial tests.
<pitti> As usual, finding a way to create a test bed and write the first few test is the hardest part; adding a tenth test to an existing suite is usually rather easy and fun.
<pitti> If it's not, we have done something wrong and need to go back to the drawing board :)
<pitti> But writing tests for user interface or hardware related things is still inordinarily hard or even impossible, so we first need some better research and technology there. I'll explain more about this in the next talk.
<pitti> For (2), we have built the current LibreOffice git head and run its tests for some time (https://jenkins.qa.ubuntu.com/job/quantal-pkg-libreoffice_git/); this is going to be resurrected for Raring eventually.
<pitti> We are also experimenting with building the current GNOME git trees on every commit and running tests: https://jenkins.qa.ubuntu.com/view/Raring/view/JHBuild%20Gnome/
<pitti> But again, this needs more time to stabilize the builds, working with upstream to keep them succeeding.
<pitti> For (3), there is currently only one mailing list which aggregates all state changes (passâ fail or vice versa), which obviously isn't very useful.
<pitti> We will sit down with our key upstreams to discuss how to design a notification system, which is always a compromise between spamming people and telling them early that a real problem has arisen.
<pitti> As you can see there is still lots of work to be done in this area. Please ping me if you are interested in any of this!
<pitti> A good example for this is Canonical's product strategy team, who managed to completely automate the landing of new code, regression-testing it, and rolling out new packages into the distribution.
<pitti> That might not be applicable to _all_ our upstreams of course, but it gives some nice inspiration what is already possible these days.
<pitti> == Q&A ==
<pitti> Thank you for your attention so far! We have some 10 minutes left for questions and discussion, so please fire away!
<pitti> (well, actually more like 6 now)
<pitti> !q
<pitti> sorry
<ClassBot> There are 5 minutes remaining in the current session.
<pitti> wei2912: for a "newbie to tests", I recommend to join an autopkgtest hackfest, as there are some classes of tests which are rather easy to write, but still very useful
<pitti> manavakos: depends on what kind of test you want to work on really; you should have a general understanding of how the thing that you want to test is supposed to work, and some understanding how to create testbeds for various situations
<pitti> but in a lot of regards it's much like programming itself
<ClassBot> wei2912 asked: for a newbie to tests, what would you recommend to start helping out?
<ClassBot> manavakos asked: basic skills and knowledge for writing tests?
<pitti> (sorry, figuring this out)
<ClassBot> jderose asked: is it possible for in-development apps (not yet in the archive) to get their autopkgtest-defined tests run? say for every new build that lands in their daily PPA?
<pitti> jderose: in principle yes, but in practice it's a resource limitation; if you have something like that, please talk to me and jibel in #ubuntu-quality
<pitti> jderose: we are doing this for e. g. Firefox
<pitti> so, thanks again everyone! next talk in 1 minute
<ClassBot> wei2912 asked: is there a specific procedure for submitting tests?
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Automated Testing Technologies - Instructors: pitti
<pitti> wei2912: in general I'd start with the usual sponsoring procedure, especially for autopkgtests; but it's all in above autopkgtest documentation
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<pitti> Another "welcome" from me to any potential newcomers who haven't been here at the previous slot yet.
<pitti> In the last talk I gave an overview about WHAT we test in Ubuntu, WHERE that happens, and where to see daily logs and failure information.
<pitti> Now I want to drill down to the HOW, i. e. what technologies are available to write tests for particular application/problem classes.
<pitti> For automatic testing, the most "approachable" things are functions and libraries which are pure logic, or only affect the file system and the network, such as glibc, coreutils, PostgreSQL, or Apache.
<pitti> I don't want to cover these, as from a perspective of how to build test beds they are very obvious and well understood.
<pitti> I rather want to show methods for testing things which talk to hardware or the plumbing stack, where ordinarily you need root privileges, do intrusive changes to the system, and where putting your actual system to be in the condition that you want to test is hard to impossible.
<pitti> Another interesting case is testing graphical applications, which has very little precedent at least in the Open Source world.
<pitti> == Interaction with D-BUS services ==
<pitti> The modern desktop world usually splits the actual user interface and policy from the parts that accesses hardware and needs privileged (root) access. The latter usually sits on the session or system D-BUS and provides objects that the desktop interacts with.
<pitti> For example, the NetworkManager daemon controls the actual hardware and things like wpasupplicant, and exports available devices and networks as D-BUS objects. On the desktop there are various things that use those, such as nm-applet, indicator-network, or GNOME Shell plugins.
<pitti> Another example is UPower, a system daemon which exports all power providing devices (batteries, ACs) as D-BUS objects and provides methods for suspending or hibernating the machine.
<pitti> A non-hardware related example are the Telepathy daemons which provide a view of your chat accounts (Jabber, GTalk, etc.) and conversations on D-BUS.
<pitti> Now, suppose you want to write tests for those:
<pitti> - nm-applet: verify the behaviour when the current wifi network gets out of range
<pitti> - gnome-settings-daemon's power plugin: ensure the user gets notified and an emergency suspend gets done when the battery goes critical
<pitti> - empathy pops up a new window when someone sends you a Jabber message, and the message indicator should notify you about this
<pitti> In the first two cases it is rather impractical to actually replicate that situation on hardware, and in the telepathy case it would be a lot of unnecessary work to set up a fake Jabber server just for testing the GUI.
<pitti> What you really want to do is to build a hardware/network independent "sandbox" which provides the same D-BUS APIs than the real NM, upower, or telepathy and enough of its behaviour for what you want to test.
<pitti> This gives you the flexibility to set up arbitrary scenarios, while not touching and damaging your actually running system.
<pitti> I wrote a project called "python-dbusmock" for this some months ago: http://pypi.python.org/pypi/python-dbusmock
<pitti> This provides an API to construct arbitrary mocks, and also already ships a number of "templates", readymade mocks for common services that are needed in a lot of tests such as notification-daemon, upower, NetworkManager, or gnome-screensaver.
<pitti> It is most convenient to use from Python; you just need to derive your tests from dbusmock.DBusTestCase instead of unittest.TestCase, and with literally 2 lines you can start a mock system bus and load a template with customized properties:
<pitti>     self.start_system_bus()
<pitti>     self.spawn_server_template('upower', {'OnBattery': True, 'HibernateAllowed': False})
<pitti> However, you can also use python-dbusmock from any other programming language as all of its functionality is controlled via D-BUS.
<pitti> Above web page has some examples how to do it in plain shell with using the "gdbus" command.
<pitti> python-dbusmock is the right choice if you want to effortlessly set up a couple of plumbing APIs but don't need a lot of actual behaviour from them.
<pitti> As an example you can look at the tests for gnome-settings-daemon's power plugin which recently landed in upstream git:
<pitti>   http://git.gnome.org/browse/gnome-settings-daemon/tree/tests/gsdtestcase.py
<pitti>   http://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/power/test.py
<pitti> (not now please, though  :) )
<pitti> That uses mocks for systemd's logind, upower, and notification-daemon.
<pitti> The first is created "from scratch" with AddMethod(), AddProperty() and so on, the other two are templates.
<pitti> There is a second very interesting project called "Bendy Bus": http://gitorious.org/bendy-bus
<pitti> It takes a lot more effort to set up a mock, but it allows the mocks to have very rich behaviour:
<pitti> you can write complete state machines, and Bendy Bus provides automatic fuzzing of responses for smoketesting your application's responses to unexpected answers which usually finds a lot of crashers.
<pitti> == Interaction with hardware ==
<pitti> But what if you want to test the D-BUS (or other) daemons themselves?
<pitti> Then you need to mock the hardware on the API level that these daemons are talking to, which is usually /sys, /dev/, uevents, and ioctls
<pitti> sometimes there are also specific kernel APIs and direct hardware access through mapped memory, most notably for network and graphic devices.
<pitti> A very robust tool that has been around for a long time is the "scsi_debug" kernel module. When you load it, it adds a virtual SCSI drive and partition which is backed entirely by RAM.
<pitti> Unlike a simple loop device (which is actually quite sufficient in many cases) these look like a "real" drive (/dev/sdb) which you can partition, eject, and so on.
<pitti> You can create arbitrarily many of those, can also tell it to act as a CD-ROM, can configure it to return random read/write errors or return data with a particular delay.
<pitti> "modinfo scsi_debug" shows all the parameters, and http://sg.danny.cz/sg/sdebug26.html provides a nice HOWTO.
<pitti> scsi_debug is being used in the tests of udisks (http://cgit.freedesktop.org/udisks/tree/src/tests/integration-test) and gvfs (https://bugzilla.gnome.org/show_bug.cgi?id=691336).
<pitti> The main drawback is that it requires root privileges, so it is a bit difficult to integrate into the usual "make check". But there is no other real alternative these days.
<pitti> For cases where your application only looks at sysfs, but doesn't do "write" access to the device, you can create a sysfs-like directory/file tree yourself, and set $SYSFS_PATH to it, so that libudev (the standard library for hardware discovery) will look into your sandbox instead of the real /sys.
<pitti> That's the approach which upower had used for a long time (http://cgit.freedesktop.org/upower/tree/src/linux/integration-test), as devices like batteries, UPSes, and ACs fall into that category.
<pitti> However, this stopped working with recent udev/systemd versions, as $SYSFS_PATH is not supported any more. Ubuntu still has an older udev which still supports that, though.
<pitti> It also doesn't work if your application doesn't use libudev but looks into /sys directly, and doesn't help you for mocking /dev nodes, uevents (hardware change notifications that the kernel sends out on hotplug events), or ioctls.
<pitti> For this I am currently developing a tool called "umockdev" (https://github.com/martinpitt/umockdev) which provides all those.
<pitti> It has been able to mock a /sys tree and uevents for quite some time, and recently grew support for mocking /dev/.
<pitti> Just two days ago I got it to successfully mock devices like PtP cameras and MTP media players, i. e. USB devices which use the "usbdevfs" protocol over ioctls.
<pitti> It does not need any particular privileges, as it does all the mocking through an LD_PRELOAD library, so it does not disturb the running system in the slightest.
<pitti> It provides an API to add or change individual devices to the mock /sys, synthesize arbitrary uevents for it, and an "umockdump" tool to create a text file representation of the sysfs attributes, udev properties, and ioctl responses of an actual device.
<pitti> You can later load that text file into an umockdev sandbox and run a program in that, such as mtp-files or gphoto2 --get-all-files or the gvfs daemons.
<pitti> It does not have a release yet as it is still a research project, but if you are interested in this please talk to me.
<pitti> For the case of userspace programs talking directly to the hardware or have custom kernel APIs, such as network devices or graphic cards there is no mocking solution right now.
<pitti> For the time being it is probably best to use complete system virtualization like qemu/kvm.
<pitti> == Graphical Applications ===
<pitti> By nature, this is the least approachable class from an automation perspective.
<pitti> There has been a number of attempts to create a generic UI testing framework, but unfortunately none of them has matured enough to be called "the standard".
<pitti> Also, for full disclosure I don't have personal experience with most of these, as I'm primarily a "backend" guy, but I want to at least introduce the most common ones.
<pitti> Some test frameworks record and replay the precise user actions (mouse moves and key strokes), take a screenshot of the manipulated screen area, and compare it against an expected value.
<pitti> where "value" means "image"
<pitti> An example is https://launchpad.net/xpresser, and I've also heard from e. g. VMWare's UDS presentation that they use that approach, too to test successful installation of VM clients.
<pitti> This approach is the only choice that you have if you have no control at all about what is being tested, and you just have a bitmap to test against.
<pitti> But tests written in that way are very sensitive against any kind of toolkit, theme, screen resolution difference, and of course force you to update half of your tests with every UI change or new feature of your program.
<pitti> So the cost-benefit ratio of this approach is prohibitively high for most use cases.
<pitti> A much better approach is to disregard the actual pixels and instead inspect the widget tree.
<pitti>  I. e. you find an "action" widget in your tree, such as a button, your test triggers a synthetic "clicked" event, and you wait for an expected action to happen, expressed in terms of structural and property changes of the widget tree.
<pitti> This is very toolkit (GTK, Qt, etc.) specific, but results in tests which are robust against feature changes, independent from each other, and independent of the actual presentation in terms of themes, resolution, or icons.
<pitti> The most prominent examples for those are the Linux Desktop Testing Project (http://ldtp.freedesktop.org) and dogtail, with its successor "strongwind" (http://medsphere.org/community/project/strongwind).
<pitti> Both of these rely on accessibility being enabled in your desktop (which is now the default, though) and the application, as they identify widgets and their properties through the AT-SPI framework.
<pitti> A number of projects, and Ubuntu itself (http://mago.ubuntu.com/) has/had used this approach for a long time, but Ubuntu gave up mago some cycles ago because the approach has some inherent race conditions that lead to too much instability, and AT-SPI does not export enough interesting properties of widgets.
<pitti> But I haven't used strongwind nor LDTP personally yet, so I'm afraid I cannot say much more about it.
<pitti> Ubuntu's currently preferred framework is "autopilot" (http://unity.ubuntu.com/autopilot/).
<pitti> This has originally been created to write tests for Unity (which are in the unity-autopilot package), but has since then been extended to work for Qt and GTK as well.
<pitti> It uses the XTest framework for injecting events, which look like
<pitti>   self.keyboard.press_and_release('Ctrl+a')
<pitti>   self.mouse.move_to_object(my_button)
<pitti> and uses plugins for the toolkits to directly export the widget tree to D-BUS, so that AT-SPI is not necessary.
<pitti> It also provides temporal comparison operators like
<pitti>   self.assertThat(my_button.visible, Eventually(Equals(True)))
<pitti> which help a lot in avoiding race conditions due to hardcoded sleep() statements.
<pitti> I played around with autopilot-GTK a bit, which is unfortunately the least supported autopilot module and still has some bugs.
<ClassBot> There are 10 minutes remaining in the current session.
<pitti> That's partially because Unity itself does not use GTK, and also because GTK in particular doesn't expose the widget identifiers that you define in the GtkBuilder files, so it's rather inconvenient to find the desired widget.  That's something which eventually needs to be fixed in GTK itself. If you use Qt, it should work much better.
<pitti> But even without that, it works relatively well already even for GTK based programs, as you can see in some example tests that community members created:
<pitti>   http://bazaar.launchpad.net/~ubuntu-testcase/ubuntu-autopilot-tests/trunk/files
<pitti> == Q&A ==
<pitti> Thank you for your attention so far!
<pitti> We have 9 minutes left for questions and discussion, so please fire away!
<pitti> (conversation apparently has moved to -chat as there hasn't been an official question yet)
<ClassBot> There are 5 minutes remaining in the current session.
<pitti> ok, so thanks everyone! Enjoy the other sessions!
<ClassBot> lorddelta asked: I'm generally interested in cross development (in fact I must admit I'm on Windows 7 at this moment for various reasons, although I generally prefer Ubuntu), how easy is it to port/find these sort of mockup frameworks cross platform? E.g. if I want to simulate DBUS in Windows/Mac? Or is most of what you talked about today Ubuntu specific. Sorry if this question is off topic.
<pitti> lorddelta: none of this is ubuntu specific, but e. g. umockdev is highly Linux specific
<pitti> lorddelta: mocking d-bus services is possible in windows as well, but presumably you'll need wholly different services that you emulate
<pitti> as windows doesn't use d-bus natively
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Syncing your app's data with u1db - Instructors: aquarius
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<aquarius> thanks, pitti!
<aquarius> go use autopilot; it is very cool :)
<aquarius> Hi! I'm Stuart Langridge, and I'm here to talk about u1db.
<aquarius> This talk is called "syncing your app's data with u1db", and that's exactly what u1db is for.
<aquarius> This will be a fairly simple overview of what u1db is, why it's cool, and what you might want to use it for, along with how
<aquarius> You build an app, and use u1db to store its data, and you can then sync that data to your app on other machines and other devices and other platforms.
<aquarius> So if you built an Ubuntu mobile app, you could have the same data sync to your Ubuntu laptop, meaning that your data is everywhere.
<aquarius> You could also sync to other platforms, so an Android app could share the same data, and so on.
<aquarius> Imagine your shopping lists and your notes and your movie watching habits and your music ratings in your Ubuntu phone and desktop and on the web available from anywhere.
<aquarius> So far, this is just syncing, like Ubuntu One file sync: why have a database?
<aquarius> U1DB is good at dealing with data; file sync, not so much.
<aquarius> Some people have thought in the past "hey, my app stores things in SQLite; I'll just use U1 to sync my app's data folder and then my data is synced everywhere, woo!"
<aquarius> This is great, until it isn't.
<aquarius> If you make changes to your SQLite database on two different machines, they'll conflict, because SQLite isn't designed for syncing.
<aquarius> So you'll get a conflict from Ubuntu One file sync, which you'll have to resolve.
<aquarius> U1DB is cleverer than that; changes to your data won't conflict unless they really, really need to, so it's much more suitable for syncing.
<aquarius> You probably have questions at this point, but let's see some code first and then we can discuss.
<aquarius> First, you'll need u1db, of course.
<aquarius> For this talk, you'll need to get u1db from launchpad, with "bzr branch lp:u1db"
<aquarius> (U1DB itself is of course available in Ubuntu 12.10, but for this demo please get the Launchpad version because it contains the example app as well!)
<aquarius> For this demonstration, we'll use the Python version of U1DB.
<aquarius> It is available in C, Python, and soon as part of the Ubuntu SDK for Ubuntu mobile apps based on QML.
<aquarius> Once you have u1db, this should work and not throw errors: PYTHONPATH=u1db python -c "import u1db"
<ClassBot> jincreator asked: Simple one. Is u1db acronym for Ubuntu One DataBase?
<aquarius> Not really. "U1DB" is just a name.
<aquarius> It's built by the Ubuntu One team, and Ubuntu One provides a server that you can sync to
<aquarius> but it's just a name: you can use U1DB to store data without ever using Ubuntu One if that's what you prefer.
<aquarius> So, those of you following along at home should have the Python version of u1db working, from Launchpad so you've got the example app :)
<aquarius> Let's try a simple example of a working app first: the u1db distribution comes with an example app called "cosas", which is a small todo list.
<aquarius> (you might need to apt-get install python-qt4 if you don't have it to run cosas)
<aquarius> (Everyone writes a todo list now: it's like the Hello World of the 21st century)
<aquarius> cd u1db/cosas
<aquarius> PYTHONPATH=.. python ui.py
<aquarius> and you should see a todo list window pop up, looking like http://ubuntuone.com/7aOvtpIljWwbwB1FEFbs5L
<aquarius> Add a couple of tasks, tick a couple
<aquarius> Then from the app menu, do File > Synchronize
<aquarius> and choose Ubuntu One and Synchronize Now
<aquarius> (this demo is for people who have an Ubuntu One account; if you don't have one, just skip doing this and take my word for it. You can sync u1db without using Ubuntu One at all by running your own server)
<aquarius> Your little todo list is now synced with your U1 account!
<aquarius> You can prove this: quit cosas and then delete the file ~/.local/share/cosas/cosas.u1db, as if you're a second machine
<aquarius> If you now restart cosas you'll have no todo list items... just File > Synchronize again and they'll be synced to you!
<aquarius> Obviously you could be running cosas on many different Ubuntu machines and the data could be synced to all of them.
<ClassBot> jsjgruber-l85-q asked: How does u1db differ from the couchdb service Ubuntu One started with?
<aquarius> jsjgruber-l85-q, they have some things in common, and a bunch of things different.
<aquarius> U1DB is designed to be implemented, and implementable, in many different environments
<aquarius> and U1DB explicitly has client and server separation, so that a U1DB-using app can be a client without being a server: that is, your app syncs to other places, but you don't have to allow other places to sync to you
<aquarius> That makes it simpler to implement a U1DB-using app in environments like the client-side web, or smartphones, which really only want to consume data and sync it but not be a server for other clients.
<aquarius> And it's possible to build a whole new U1DB implementation in a language and environment of your choice relatively easily; so one does not try and bring up the U1DB client/server architecture on a new platform, but instead write a new U1DB implementation for that platform in that platform's way
<aquarius> so, for example, to have U1DB available to apps on Android, use the Android Java implementation of U1DB, which will be a from-scratch reimplementation, tested for compliance with the comprehensive compliance test suite that u1db provides.
<aquarius> Also, U1DB is in-process. It's not a separate daemon running a server; it's basically implemented as a library that your app includes.
<aquarius> so there's no separate daemon.
<aquarius> jsjgruber-l85-q, hope that answers the question!
<aquarius> So, let's see how this actually works. I'll show using U1DB from Python on Ubuntu, but as mentioned it's also available in other platforms and languages too, which I'll talk about later.
<aquarius> Start with some simple examples, taken from the documentation at http://packages.python.org/u1db/
<aquarius> Start a python interpreter with "python"
<aquarius> >>> import u1db
<aquarius> )>>> db = u1db.open("mydb.u1db", create=True)
<aquarius> We've now created a U1DB database named mydb.u1db.
<aquarius> Next, we'll create a document in it. U1DB is a document-based database: you save JSON documents into it. So, a simple document naming a person:
<aquarius> >>> content = {"name": "Alan Hansen"}
<aquarius> >>> doc = db.create_doc(content)
<aquarius> And the Document is saved in the database.
<aquarius> You can still see the Document's content:
<aquarius> >>> doc.content
<aquarius> {'name': 'Alan Hansen'}
<aquarius> We can edit the content of that document, of course:
<aquarius> >>> doc.content = {"name": "Alan Hansen", "position": "defence"}
<aquarius> After changing the content, we need to save that updated Document:
<aquarius> >>> rev = db.put_doc(doc)
<aquarius> And now the updated document is saved in the DB, ready to be retrieved or queried or synced.
<aquarius> Let's create a couple more documents:
<aquarius> >>> doc2 = db.create_doc({"name": "John Barnes", "position": "defence"})
<aquarius> (and we'll change the content before saving: Document.content is a dictionary)
<aquarius> >>> doc2.content["position"] = "forward"
<aquarius> >>> db.put_doc(doc2)
<aquarius> >>> doc3 = db.create_doc({"name": "Ian Rush", "position": "forward"})
<aquarius> Retrieving documents from the database with a query is done by creating an "index".
<aquarius> To create an index, give it a name, and the field(s) in the document that you want to query on:
<aquarius> >>> db.create_index("by-position", "position") # create an index by passing a field name
<aquarius> And now we can query that index for a particular value. If we want to get everyone with position="forward" in our list of people:
<aquarius> >>> results = db.get_from_index("by-position", "forward")
<aquarius> And our results is a list of two Documents:
<aquarius> >>> len(results)
<aquarius> 2
<aquarius> And you can manipulate that list just like a standard Python list, which is what it is:
<aquarius> >>> data = [result.content for result in results]
<aquarius> >>> names = [item["name"] for item in data]
<aquarius> >>> sorted(names)
<aquarius> [u'Ian Rush', u'John Barnes']
<aquarius> That's the very basics of using u1db: saving data, loading it, and querying for it, same as any database.
<aquarius> The documentation at http://packages.python.org/u1db/ goes into much, much more detail.
<aquarius> In particular, the tutorial at http://packages.python.org/u1db/tutorial.html walks through cosas, the example todo list app, and explains how it structures its data and how to sync a U1DB with other places, like Ubuntu One.
<aquarius> As I said right at the beginning, U1DB is designed to work everywhere.
<aquarius> This means that there will be, or could be, a U1DB implementation for any choice of platform and language.
<aquarius> What I've shown above is the Python implementation, which should work on any platform where you have Python (so Ubuntu, other Linuxes, Windows, Mac, N9, etc).
<aquarius> You'll be able to use U1DB directly in Ubuntu mobile apps; it'll be a standard part of the SDK, and it'll be the easiest way to save any data you have if you're writing a QML application.
<aquarius> And you can work with U1DB data, declaratively, from pure QML -- no C++ required!
<aquarius> This Ubuntu mobile support for U1DB in QML and Qt is being developed as part of the "skunkworks" project, which is pretty cool.
<aquarius> U1DB data does not *have* to be synced. It's a good idea to use U1DB anyway, because then if later on you decide you *want* to sync this data between all platforms, you can just flip a switch to turn it on.
<aquarius> And U1DB's very easy to use to put data in and get it out again, especially if you're using QML.
<aquarius> There is also a C implementation, so if you're writing apps in C or some other C-bound language you can use the C version.
<aquarius> At U1 we're also building an Android Java version and an iOS Objective-C version, in time.
<aquarius> There's also a command line client (u1db-client, and u1db-serve to run a simple server).
<aquarius> Members of the U1DB team are also bringing U1DB to Vala, Go, and in-browser JavaScript.
<aquarius> So apps using all those languages on all those platforms will be able to sync data: imagine your app on Ubuntu desktop and a mobile version on your Ubuntu phone or an Android phone and a web version, all able to sync data between themselves.
<aquarius> U1DB is in Ubuntu 12.10 and later, so your apps can depend on it.
<aquarius> That's a brief summary of U1DB
<aquarius> There were a few questions during it, but I'm happy to take others if anyone has any, because I've got a little more time than I expected :)
<aquarius> LocalHero mentions Vala: I should be clear hat the Vala implementation of U1DB (which is at lp:shardbridge) isn't finished; it was a part-time project by someone here on the U1 team.
<aquarius> I'm sure they'd be interested in having a conversation about picking it up again if someone wanted to help, though :)
<ClassBot> jsjgruber-l85-q asked: Except for import statements, this looks a lot like the old Ubuntu One database. (I guess because they both used JSON.) Is there anything other than import statements that need to change for applications that once used the old implementation?
<aquarius> It's similar in concept but not in implementation. The old approach, using CouchDB and desktopcouch.records, is not the way U1DB works.
<aquarius> So porting an application from one to the other is more than just changing the import statements
<aquarius> but the *mindset* of working with JSON documents is still similar, so that will help,
<ClassBot> bobweaver asked: you said that you all are working on Qml plugin for the Phone?  DO you have XMLListModels and what not some where so I can tie into other software ?
<aquarius> that's the idea. A U1DBQuery will be a ListModel, so you can just declare a query and then directly use it as the model for a ListView or similar.
<aquarius> Exactly what that API looks like is still being worked out, but rest assured it'll be properly declarative
<aquarius> I'm personally really excited by that; I've been working with the early versions of the SDK to build Ubuntu mobile apps in pure QML, and I want U1DB available to those apps :)
<ClassBot> jsjgruber-l85-q asked: For using with Ubuntu One, how well will the server scale? I seem to remember that there were problems with this with the old approach.
<aquarius> That's one of the reasons why we've moved to U1DB. It's extensively tested to make the server scalable even at very large loads.
<aquarius> Some of the assumptions underlying how U1DB works and why it is the way it is are partially driven by making it possible to make the server scale a long way.
<aquarius> There's a page discussing those assumptions in the documentation, called "philosophy".
<aquarius> bobweaver says: "I would love to get my hands on that so I can start synching everything to my Ubuntu TV"... and I agree, and you can do that, today :) Build apps which use U1DB right now, with Ubuntu 12.10, and use them on Ubuntu TV :)
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> johnhamelink asked: how would you go about syncing with other DBs if you have a large system and want to output to mobile? Would u1db be appropriate?
<aquarius> I'm not sure I understand the question. If you're thinking about storing data in a different kind of database -- for example, you've got a PostgreSQL server, and you want to sync that with a U1DB -- then you can't do that, I'm afraid. U1DB is designed to be syncable; other DBs, not so much :)
<aquarius> I've got about five minutes left for final questions
<aquarius> If you're interested in using U1DB, then as mentioned it'll be part of the SDK for great Ubuntu mobile apps, and you can find out lots more from the U1DB documentation
<aquarius> abou tthe different implementations and so on
<aquarius> you can find the u1db team in #u1db on freenode
<ClassBot> JoseeAntonioR asked: Are there any upcoming improvements/bug fixes in u1db?
<ClassBot> There are 5 minutes remaining in the current session.
<aquarius> bugs? there are no bugs. Just... improving features ;)
<aquarius> The U1DB API is roughly stable. We've fixed various bugs, but it's in a pretty good state right now
<aquarius> Cool, I think that's all the questions: if you have others, have a chat to us in #u1db, or ping me directly if you prefer
<aquarius> next on your list is tumbleweed talking about interacting with the Debian BTS
<aquarius> so thank you for your time :-)
<aquarius> ooh, one quick one
<ClassBot> lorddelta asked: Are there plans for a U1DB nodejs package?
<aquarius> not immediately, but the existing JavaScript implementation, while built primarily for client-side JS usage, would be very easy to make nodeable by someone who was familiar with node.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Interacting with Debian's Bug Tracking System - Instructors: tumbleweed
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<tumbleweed> thanks aquarius
<tumbleweed> Hello again Ubuntu Developer Week!
<tumbleweed> Hope everyone has had a good week
<tumbleweed> Please say hi in the chat channel - #ubuntu-classroom-chat
<tumbleweed> that is also the place to ask questions
<tumbleweed> if you want me to answer a qusestion, please start it with QUESTION: so the bot can pick them up
<tumbleweed> If you have any questions with any of this, when you go home and do this, afterwards
<tumbleweed> I suggest sticking your nose into #ubuntu-motu and asking there
<tumbleweed> so, I'm Stefano Rivera, an Ubuntu Developer and a Debian Developer
<tumbleweed> I'm in sunny (and today, rather windy) Cape Town, South Africa
<tumbleweed> (in fact, at the pub, with a beer)
<tumbleweed> And today, I'm here to talk about interacting with Debian, specifically Debian's bug tracking system
<tumbleweed> Let's first cover some basics: source and binary packages:
<tumbleweed> Every binary package in Debian/Ubuntu is built from a source package
<tumbleweed> Sometimes they have the same name, but not always.
<tumbleweed> this can be pretty confusing, if you haven't seen this before
<tumbleweed> e.g. the beautifulsoup source package builds a binary package called python-beautifulsoup:
<tumbleweed> You can see that on the Debian Package Tracking System: http://packages.qa.debian.org/beautifulsoup
<tumbleweed> or Launchpad: https://launchpad.net/ubuntu/+source/beautifulsoup
<tumbleweed> or by running apt-cache showsrc beautifulsoup
<tumbleweed> or apt-cache show python-beautifulsoup
<tumbleweed> (from the other side)
<tumbleweed> that enough? get the idea? :)
<tumbleweed> Some source packages build multiple binary packages, e.g. beautifulsoup4 builds python-bs4, python3-bs4, and python-bs4-doc
<tumbleweed> http://packages.qa.debian.org/beautifulsoup4
<tumbleweed> etc.
<tumbleweed> So, when we are developing on Debian/Ubuntu, we mostly think in terms of source packages
<tumbleweed> Those are what we apply packages to, and build
<tumbleweed> They are also how we organise our bugs
<tumbleweed> e.g. https://bugs.launchpad.net/ubuntu/+source/beautifulsoup
<tumbleweed> and http://bugs.debian.org/src:beautifulsoup
<tumbleweed> (see how both of those URLs have the source package name, not the binary package names)
<tumbleweed> In Ubuntu, we only organise bugs by source package
<tumbleweed> but the Debian bug tracker understands the relationship between source and binary packages
<tumbleweed> So, I can also go to http://bugs.debian.org/python-beautifulsoup
<tumbleweed> and I'll see the same bugs.
<tumbleweed> you can see that for the BTS, src: means "source package"
<tumbleweed> Well, actually that is the subset of src:beautifulsoup bugs that were reported against python-beautifulsoup
<tumbleweed> If you look at the bug reports, you'll see they start with Package: python-beautifulsoup
<tumbleweed> that's how it knows which binary package they were reported against
<tumbleweed> we actually have something fairly similar in Launchpad, for Ubuntu bugs. But launchpad doesn't do anything with them
<tumbleweed> One can also report Debian bugs against the source package itself (that's often the best thing to do for packaging bugs)
<tumbleweed> But then they will only show up on the source package's bug page, not any of it's binary pages.
<tumbleweed> Hopefully that wasn't too confusing, but it should show you how to find the bugs for a Debian package
<tumbleweed> http://bugs.debian.org/src:SOURCE_PACKAGE
<tumbleweed> is almost always what you want
<tumbleweed> (and I've probably lost half my audience by now...)
<tumbleweed> Now that you know how to find bugs, let's talk about interacting with the bug tracking system
<tumbleweed> The Debian BTS is entirely e-mail driven
<tumbleweed> that may sound crazy, but it actually works fairly well, you just have to learn the commands
<tumbleweed> there's no sign-up or anything like that, you just send e-mails to it, and it'll do stuff for you
<tumbleweed> Filing a bug is done by sending a specially formatted e-mail to submit@bugs.debian.org
<tumbleweed> Most of the time, you don't do that by hand, but you use the reportbug tool to do so for you
<tumbleweed> But it needs to know how to send e-mail, so create a ~/.reportbugrc that looks like http://paste.debian.net/230791/
<tumbleweed> (if you run a working mailserver on your machine, that can send to the outside world, you don't need to do anything)
<tumbleweed> (that example I pastebinned there comes from submittodebian - which makes it easy to submit bugs to debian, if you've perpared an Ubuntu upload)
<tumbleweed> Commenting on a bug is doen by e-mailing BUG_NUMBER@bugs.debian.org (and CC-ing anyone relevant from the bug's discussion)
<tumbleweed> I find the easiest way to do that is to run: bts show --mbox BUG_NUMBER
<tumbleweed> This downloads an mbox of all the comments on this bug, and opens it in my mail reader
<tumbleweed> Then I can easily reply to the appropriate message
<tumbleweed> If you don't use a local mail client, this probably isn't something you'll find useful :)
<tumbleweed> real example time:
<tumbleweed> Let's look at all the rest of the things you can do. Here's a bug about mercurial: http://bugs.debian.org/698634
<tumbleweed> First, we can see the bug has already been fixed. It says "Done" at the top
<tumbleweed> and if you scroll down, you can see a comment on the bug, saying it was done
<tumbleweed> that comment was automatically generated by uploading a package to Debian that fixed the bug
<tumbleweed> (it was closed from the changelog)
<tumbleweed> we have a similar mechanism in Ubuntu
<tumbleweed> in Debian, one closes bugs with Closes: #XXXX
<tumbleweed> we close Launchpad bugs with LP: #XXXX
<tumbleweed> yuo can even close Launchpad bugs from Debian uploads, but let's not go there right now
<tumbleweed> We can alse see that it was found in version 2.2.2-1
<tumbleweed> Yes, the Debian BTS tracks versions
<tumbleweed> This is also something we don't really do in Ubuntu
<tumbleweed> In Ubuntu, we may target a bug to a release series, if we want to fix it in a stable release
<tumbleweed> but we track this kind of thing manually, not automatically like Debian
<tumbleweed> The bug was marked as being fixed in 2.2.2-2, 2.2.3-1, and 2.3-1.
<tumbleweed> And you can see from the graph on the right which releases that applies to
<tumbleweed> 2.2.2-1 is still in testing, so it's broken in testing
<tumbleweed> 2.2.2-2 fixed the bug in unstable
<tumbleweed> but that hasn't migrated to testing yet
<tumbleweed> it was also fixed in experimental (before this bug was even filed)
<tumbleweed> let's go back a bit
<tumbleweed> How did it know it was found in 2.2.2-1?
<tumbleweed> Look at the satrt of the e-amil from Neil
<tumbleweed> Those first 3 lines (the pseudo-headers) provide information about the bug to the BTS
<tumbleweed> http://www.debian.org/Bugs/Reporting#additionalpseudoheaders (for all the gory details about pseudo-headers)
<tumbleweed> They can be changed in existing bugs by sending messages to the control bot: control@bugs.debian.org
<tumbleweed> http://www.debian.org/Bugs/server-control for the commands
<tumbleweed> You can see Julien and Javi did so a bunch of times (click Full text to see those messages)
<tumbleweed> The easy way to send messages like that is to use the bts command line tool
<tumbleweed> (but it needs a working mail server locally, or configured in ~/.devscripts)
<tumbleweed> but of course: you can just write the e-mail by hand, and send it to the bug bot
<tumbleweed> it's fairly common to send an e-mail to the bug, and CCing the control bot. Then one starts the e-mail with commands fro the bot, say thanks, to mark the end of the commands, then continue with the comment
<tumbleweed> More recently, one can include those control commands in a reply to the bug, using a Control pesudo-header.
<tumbleweed> if you use the Control pseudo-header, you don't need to CC the bot
<tumbleweed> (it's a great new feature)
<tumbleweed> I think I've done a whirlwind coverage of the basics
<tumbleweed> let's do questions, yes
<ClassBot> kermit666 asked: where can we find the control command syntax?
<tumbleweed> it's the same syntax as messages to the control bot
<tumbleweed> http://www.debian.org/Bugs/server-control
<tumbleweed> to reassign a bug to the python-beautifulsoup package I'd do
<tumbleweed> Control: reassign -1 python-beautifulsoup
<tumbleweed> -1 is a special bug number meaning "this bug", for Control: pseudo-header messages
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> jsjgruber-l85-q asked: So when you report a bug you should cc the package maintainer as you send to the bts?
<tumbleweed> it's a good question
<tumbleweed> generally, maintainers are subscribed to bugs for their packages
<tumbleweed> in particular, anyone in the Maintainer field of the source package is automatically subscribed to incoming bugs
<tumbleweed> but people in Uploaders aren't
<tumbleweed> they have to subscribe themselves manually
<tumbleweed> so, it's often not a bad idea to CC a maintainer
<ClassBot> geryon6 asked: Isn't this quite a steep learning curve for interaction with a BTS?
<tumbleweed> absolutely :)
<tumbleweed> but that's only if yo uwant to do fancy things with it
<tumbleweed> if someone CCed you about a bug, you can just "reply to all" and your reply will go into the bug log
<tumbleweed> and if you want to file a bug, you can just send an e-mail with two special lines at the beginning, and it'll do everything else for you
<tumbleweed> so, for most interactions, you don't to know all the crazyness
<tumbleweed> but it is useful to know what's going on, and how to see what releases a bug affects
<tumbleweed> is that it? in that case I'll go into one more feature I didn't cover
<tumbleweed> when you use submittodebian to file a bug, you'll see that it adds "Usertag" pseudo-headers
<ClassBot> There are 5 minutes remaining in the current session.
<tumbleweed> usertags a way for people to collect related bugs
<tumbleweed> for example, for Ubuntu bugs, we have tracked all the bugs filed by submittodebian
<tumbleweed> http://udd.debian.org/cgi-bin/bts-usertags.cgi?tag=ubuntu-patch&user=ubuntu-devel%40lists.ubuntu.com
<tumbleweed> (one can also see that in the BTS, but I've forgotten the URL syntax...)
<tumbleweed> turns out we track a few Ubuntu-related things: http://udd.debian.org/cgi-bin/bts-usertags.cgi?user=ubuntu-devel%40lists.ubuntu.com
<tumbleweed> another example is a python team I'm involved in
<tumbleweed> tracks particular classes of bugs: http://udd.debian.org/cgi-bin/bts-usertags.cgi?user=python-modules-team%40lists.alioth.debian.org
<tumbleweed> anyone can create any tags they want, under their own e-mail address
<tumbleweed> and tag bugs with it
<tumbleweed> ok, I'm out of time
<tumbleweed> have a good evening everyone. Maybe I'll check back later, after my pub quiz
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Building Ubuntu Images - Instructors: ogra
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<ogra> ok, seems i managed to get along with the bot
<ogra> so this is a quick overview of the ubuntu image build infrastructure, how we roll them and what their specifics are ...
<ogra> i prepared some text i will paste here, taking a break after each paragraph, so if you have questions, shout in the gap between the pastes :)
<ogra> so lets get started ....
<ogra> The Software:
<ogra> The Ubuntu build infrastructure is an integrated system consisting of several tools for the
<ogra> different tasks happening during an image build and one "glue" wrapper that cares for the
<ogra> interaction between them.
<ogra> Tools:
<ogra>  * ubuntu-cdimage is a wrapper around the build process and also responsible for the publishing
<ogra>    (publishing includes the proper naming of images as well as creation of the html download pages
<ogra>    for cdimage.ubuntu.com). It also manages the interaction of the tools below.
<ogra>  * livecd-rootfs - A wrapper and set of configuration for live-build, historically this was our
<ogra>    rootfs creation tool (a 200 line shell script) before we switched to live-build
<ogra>    (see the live-build subdir in the source package for configurations and function enhancements)
<ogra>  * live-build - Used to create rootfs tarballs and filesystem images
<ogra>  * debian-cd - assembles rootfs and bootloader bits into an image, creates alternate images
<ogra>    with a full package pool and debian-installer on them
<ogra> Getting sources for the tools:
<ogra>  * ubuntu-cdimage - bzr branch lp:ubuntu-cdimage
<ogra>  * livecd-rootfs - bzr branch lp:livecd-rootfs
<ogra>  * live-build - bzr branch lp:live-build
<ogra>  * debian-cd - bzr branch lp:ubuntu/debian-cd
<ogra> In case you want to help with the tools, fix a bug or so, pull the above source and send a merge
<ogra> request to the ubuntu-cdimage team who will review and process it. Most of the members of this team
<ogra> are residents in the #ubuntu-release channel, feel free to talk to us there.
<ogra> hmm, sorry, i thought the formatting would come a cross a bit better
<ogra> any questions about the software stack ? if so, ask away :)
<ogra> well, seems not (i didnt expect any anyway) :)
<ogra>  
<ogra> The Hardware:
<ogra>  
<ogra> A central build server (nusakan) coordinates the whole build process. On this machne the ubuntu-cdimage
<ogra> scripts run on a scheduled base. The root filesystems used in the images get built natively on the
<ogra> image target architecture by so called livefs builders. Packages used to build the images come from
<ogra> a central non-public mirror for these builds. There is at least one livefs builder for each
<ogra> architecture. These machines run a minimal rootfs (ubuntu-core) that has livecd-rootfs and
<ogra> live-build installed. Builds on these machines are triggered by ssh from nusakan. Nusakan also promotes
<ogra> the file and directory structure for cdimage.ubuntu.com, where they get mirrored to regulary.
<ogra>  
<ogra> any questions about the hardware setup ? feel free to ask
<ogra> so lets get to the actual build process now that we know the SW and HW used ...
<ogra>  
<ogra> The Process:
<ogra>  
<ogra> Depending on the image type the images are built in either one or two runs.
<ogra>  
<ogra> Alternate images simply require runining the "for-project" tool wrapper from ubuntu-cdimage. This sets some global
<ogra> variables and triggers debian-cd to create a package pool, add debian-installer and finally merge these bits into a bootable image.
<ogra>  
<ogra> Unlike alternate images the live images require a two step process. Ubuntu live images use a rootfs
<ogra> filesystem image to boot instead of booting into a minimal system like debian-installer which then installs
<ogra> the single .deb packages.
<ogra> In live images the installation of deb's happens at build time during the creation of the filesystem image.
<ogra>  
<ogra> For this step, ubuntu-cdimage has the tool "buildlive". This tool determines for which architecture the
<ogra> build is, connects to the respective livefs builder via ssh and calls the "BuildLiveCD" script from livecd-rootfs
<ogra> which in turn executes live-build with the right options and settings.
<ogra>  
<ogra> A chroot is created and all needed packages are installed into this chroot. Then the chroot is packaged as
<ogra> a rootfs image, initrd and kernel are extracted and all bits are sent back to the master build server.
<ogra>  
<ogra> On the central build server another "for-project" run happens which then assembles the above bits into a
<ogra> bootable image.
<ogra>  
<ogra> so this is the process ...
<ogra> it is relatively easy to understand once you looked at the tools and infrastructure around it ... it is nontheless not trivial to set up at home without experience ...
<ogra> i.e. in case you want to build your own ubuntu :)
<ClassBot> kermit666 asked: so how long does it last to build one image?
<ogra> that totally depends on the architecture and on the image type
<ogra> for an alternate x86 or amd64 image this is fairly quick since most of the prcess means copying bits to the /pool directory and at the end run mkisofs on them
<ogra> for a live image it really depends on the architecture ... an ARM livefs builder is simply slower than a powerful x86 or amd64 machine and during the live build process all debs get installed step by step
<ogra> current average ARM images  take around 90min for a livefs build
<ogra> an x86 alternate can be done in 30min
 * ogra sees no more questions and moves on 
<ogra>  
<ogra> Booting:
<ogra>  
<ogra> Even though this talk is supposed to be focused on the image creation, i will say some words about the boot
<ogra> and installation process of the different image types.
<ogra>  
<ogra> Generally all installations from Ubuntu images happen via a customized initramfs. The initramfs of alternate
<ogra> images contains debian-installer which is an extremely cut down environment designed to run in very limited
<ogra> environments. To get functionality and features into this environment (partitioning, formatting, selecting
<ogra> packages for installation etc etc) debian-installer offers the capability to load so called udeb packages
<ogra> which provide the desired function. As mentioned above images of this type will install every single package
<ogra> step by step in the target system. this is indeed a time consuming process.
<ogra>  
<ogra> Live images use a different approach using an initramfs extension called casper. Similar to the alternate
<ogra> images you are dropped into a customized initrd which instead of running debian-installer executes the casper tool.
<ogra> Casper then scans teh boot media for a filesystem image, creates a tmpfs and mounts it, mounts the readonly rootfilesystem
<ogra> image and merges these two mountpoints into a writable "copy on write" union mount as / of the booting system.
<ogra>  
<ogra> The installation from a live image unlike the alternate install actually copies the content of the readonly
<ogra> filesystem image into the target and then removes all unneeded bits. This is significantly faster than the package by
<ogra> package approach used in alternate CDs but indeed you are tied to the content of the filesystem image and can not do as
<ogra> fine grained installs as you can with debian-installer images.
<ogra>  
<ogra> Up to quantal these were the two standard image types Ubuntu produced (server installs were generally alternate ones
<ogra> while desktop installs generally were live images (though indeed you can install a desktop from an alternate server CD))
<ogra>  
<ogra> On DVDs both methods have been made available and selectable through a boot menu.
<ogra>  
<ogra> With quantal the server guys got tired of having to handle slow installations because every single deb had to be
<ogra> installed in the process so a new hybrid mechanism using debians "live-installer" udeb was added to debian-installer.
<ogra> This offers teh opportunity to actually install a filesystem image from a debian-installer session and then use the
<ogra> traditional debian-installer way if installing single deb packages on top of it. This is now teh default setup for
<ogra> server images.
<ogra>  
<ogra> i see a question ...
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> xnox asked: Can one "cross-build" livefs bit? E.g. use an amd64 builder to create armhf livefs
<ogra> you should be able to use a foreign chroot through i.e. qemu-user-static to actually run live-build in there
<ogra> i'm not sure that is used much in practice yet, it might be that the canonical PES team uses it in this context though
<ogra> (they have their own build system)
<ogra>  
<ogra> Other image types:
<ogra>  
<ogra> There are a few other images types, created for specific ways of booting or for specific HW limitations (specifically
<ogra> for ARM or even cloud images). The ARM variants will be handled in the nexus7 image talk in the next slot.
<ogra>  
<ogra> Documentation for customizing images on the ubuntu wiki:
<ogra>  
<ogra> https://help.ubuntu.com/community/LiveCDCustomization
<ogra> https://help.ubuntu.com/community/InstallCDCustomization
<ogra> https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
<ogra>  
<ogra> thats all i had to paste :)
<ogra> and yes, i suck if it comes to the vs the
<ogra> bah
<ogra> xchat corrects it :P
<ogra> the whole talk above is supposed to get thrown on a wikipage the next days, the image build system is very badly documented and i though i should take the opportunity of this talk to start some documentation :)
<ClassBot> xnox asked: how are cloud images build?
<ClassBot> There are 5 minutes remaining in the current session.
<ogra> this is a question i have to defer to #ubuntu-server sadly
<ogra> i know they are using their own initramfs tool replacing casper thouugh
<ogra> well, if there are no more questions happy idling until the hour :) and thanks for listening (my next talk isnt prepared and will be way more chaotic, so enjoy the silence for a moment :) )
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: The Ubuntu Nexus 7 Images - Instructors: ogra
<ogra> heya
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<ogra> so unlike in the last talk i have no prepared text and will try to type freely ...
<ogra> additionally to the image types i explained in the last session, we have some very specific customized images
<ogra> i will focus the arm ones here ...
<ogra> many arm devices have either restrictions of how they boot or restrictions on where the rootfs can live, to manage these restrictions we developed some very special image types
<ogra> as iu explained in the former talk all ubuntu installs use some kind of special initramfs
<ogra> the special arm images we have are all based on the live images, this has some advantages like being able to build images from universe (debian-installer expects the kernel package to be in main and fully supported for example, a fact we cant necessarily fulfill with some of the arm kernels)
<ogra> devices like the pandaboard can also only boot from SD card (or in case of the nexus from eMMC)
<ogra> and some devices can not use one media (SD card) to install to another media (USB disk) ... i.e. the nexus7 only has that single MMC inside and no easy way to attach a USB disk
<ogra> so for the panda images we developed a tool called jasper-initramfs that actually re-uses the existing filesystem image on the SD card, expands the rootfs partition to the full device size and grows the filesystem in that partition
<ogra> so the full install actually happened at build time and all you see during the physical installation is a short decompression ... you can immediately boot into this system and are greeted with the oem-config setup screen from our ubiquity installer
<ogra> for the nexus7 the world is actually even more different, i explained the panda images above because we base on that setup for the nexus though
<ogra> the nexus7 image comes actually in two parts ...
<ogra> we re-use the existing partitioning on the MMC
<ogra> this partitioning provides a "flash" like kernel/boot partition (raw and no mountable filesystem here)
<ogra> and we (ab)use the userdata partition for the root filesystem
<ogra> our special initramfs tool in this setup is called ac100-tarball-installer
<ogra> when you install to the nexus7 you need another computer ... and need the fastboot tool ...
<ogra> with this tool you write the two parts of the image (bootimg and img files) to the respective places on the MMC
<ogra> on booting now, once you enter the initrd, the tarball installer is fired up (the img file actually only contains a tarred up rootfs) and looks for a matching tarball on the target partition
<ogra> it then extracts the tarball, removes itself and re-generates the initrd without a tarball installer :)
<ogra> after that it moves on with the boot and dumps you into a oem-config session where you can personalize the device
<ogra> if you want to modify the installation you can just apt-get source ac100-tarball-installer the code is very easy (its a shell script and the nexus7 bits are small)
<ogra> the images themselves are created (so that fastboot can hadle them) by using make_ext4fs from the fastboot-fsutils package
<ogra> this package also ships the simg2img tool to extract such images into a mountable format
<ogra> so imagine you want to replace the tarball with your own rootfs
<ogra> you create a chroot with your installation inside ... tar it up and copy it to an empty dir
<ClassBot> There are 10 minutes remaining in the current session.
<ogra> then you run make_ext4fs -l 6G -s my-imageext4.img your_temporary_dir/
<ogra> this will get you an img file the installer can handle ... oh and the tarball needs to be named rootfs.tar.gz
<ogra> an alternative (if you dont want to replace the whole thing) is to use simg2img and turn the img file into a mountable image
<ogra> then loop mount it and just dump your stuff in there
<ogra>  the / of the img will also be the / of your final install so you can just add a directory structure and files to it (as long as the untrarring doe not overwrite them indeed)
<ogra> ok, i think thats it so far ... and i see questions :)
<ClassBot> xnox asked: Is the same set of software used to create nexus7 images as the desktop images? (e.g. livebuild build-live and the rest of them as presented before)
<ogra> yes, we use live-build and livecd-rootfs as explained in the former session
<ogra> if you look at the source of live-build you will see some nexus7 (just grep for it) code in live-build/auto/build and live-build/auto/config
<ClassBot> kermit666 asked: Is something similar to a dual-boot possible on a Nexus 7? E.g. for Android and Ubuntu. Will there be some sort of (semi-)official support for this?
<ogra> yes and no :)
<ClassBot> There are 5 minutes remaining in the current session.
<ogra> yes, there exists a dual boot option https://wiki.ubuntu.com/Nexus7/Installation links to it
<ogra> but our focus is to run ubuntu natively and standalone on the nexus7 so this wont get support from our side
<ogra> (indeed nobody with support questions is sent away in #ubuntu-arm, but there wont be any official images
<ogra> the dual boot requires some hackery that even in the linked install setup hasnt been properly solved yet
<ogra> (kernel updates fail in the dualboot img for example)
 * ogra sees no more questions 
<ogra> so thanks all, i hope the unprepared nature of the second session wasnt to bad :)
<ClassBot> kermit666 asked: Unrelated to building images, but you seem to know your way around chroot - is it worth doing daily Ubuntu development in a chroot environment? I heard it's a bit hard to get the desktop running. Or should I use a VM or a LXC?
<ogra> i personally use chroots but a VM or LXC container will also serve the purpose
<ogra> i guess thats based on personal preference, try out the different methods and find your favorite ;)
<ogra> thanks for listening !
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Fixing packages to cross-build - Instructors: xnox
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<xnox> Hello all!
<xnox> This is my first time doing a session at a Developer Week =) Hope it goes well!
<xnox> ..
<xnox> == Fixing packages to cross-build ==
<xnox> Back at UDS-R in Copenhagen there were a few sessions [1] essentially
<xnox> targetting to impove cross-compilation of debian packages.  This was
<xnox> done in the context of mobile platforms & upcomming aarch64
<xnox> architecture.
<xnox> [1] foundations-r-aarch64 foundations-r-aarch64-porting foundations-r-improve-cross-compilation
<xnox> Typically when compiling debian packages one would compile .deb for
<xnox> the same architure one is running. E.g. if I'm running amd64 machine
<xnox> (64-bit intel) the packages created after running debuild will be
<xnox> *_amd64.deb. On some architectures it is possible to use multilib or a
<xnox> chroot to compile natively for a compatible instruction set. For
<xnox> example I can have an i386 chroot on my amd64 machine and compile
<xnox> *_i386.deb packages.
<xnox> ..
<xnox> But what about amd64 -> armhf? One can use qemu to create an armhf
<xnox> chroot with qemu-static installed, such that one can execute armhf
<xnox> binaries via qemu emulation layer. Such chroots can be automatically
<xnox> be created using mk-sbuild's --arch option. But... it's slow. As one
<xnox> is emulating execution when one doesn't need to: e.g. sh, make,
<xnox> autoconf, etc. Here is where multiarch comes into play.
<xnox> ..
<xnox> Thanks to multiarch [2], we can declare and mix & match architectures
<xnox> of our build-dependencies.
<xnox> ..
<xnox> [2] https://wiki.ubuntu.com/MultiarchSpec#Binary_package_control_fields
<xnox> Any questions so far?
<xnox> To cross-build a package one would typically need: a cross-compiler,
<xnox> target architecture dependencies (libfoo-dev:armhf) and any
<xnox> architecture auxiliary tools (e.g. pkg-config, debhelper etc).
<xnox> Now in Raring, we have made a massive progress to simplify and
<xnox> automate this. The landing page for this project is here [3].
<xnox> [3] https://wiki.ubuntu.com/CrossBuilding
<xnox> ..
<xnox> (this page should have like anything & everything up to date with respect to cross-building, definatly bookmark worthy)
<xnox> First of all, mk-sbuild gained --target option to create a chroot
<xnox> setup with correct cross-compiler. Many libraries are multiarched to
<xnox> allow co-installation (in case you both need native and target
<xnox> architecture at the same time). Many tools are now marked as
<xnox> Mutli-arch: foreign. And the coolest thing we have automatic
<xnox> cross-builder running and publishing the restults. [4]
<xnox> [4] http://people.canonical.com/~cjwatson/cross/armhf/raring/
<xnox> ..
<xnox> If you navigate to that page, you can see that it's a fairly simple table of a good subset of packages in main
<xnox> together with their cross-building status, last tried version and plausible reason for failure.
<xnox> Clicking a package should give you a more detailed log.
<xnox> ..
<xnox> The onces that are in state "build-attempted" usually means that their dependencies are satisfied and it should be possible to cross-build a package, but it failed to do so. And hence needs to be modified in some way.
<xnox> So why do packages fail to cross-compile?
<xnox> There are 4 main reasons:
<xnox> * Trying to execute compiled binaries
<xnox> * Making wrong assumptions in configure scripts
<xnox> * Not using correct compiler
<xnox> * Uninstallable build-dependencies
<xnox> ..
<xnox> Each one of them has simple solutions.
<xnox> * One should not execute compiled binaries. Typically that means
<xnox>   skipping running compiled test-suites when cross-compiling. If this
<xnox>   is required as part of configure tests, we instead ship autoconf
<xnox>   caches with known/correct/guessed values.
<xnox> ..
<xnox> * Sometimes configure scripts try to poke the kernel or the installed
<xnox>   system & end up making wrong assumption, e.g. that target is
<xnox>   amd64. Those simply need fixing to be sensitive to --target option
<xnox>   or to DEB_HOST_ARCH variable from dpkg-architecture.
<xnox> ..
<xnox> * Not using correct compiler - simply set correct compiler in
<xnox>   ./debian/rules
<xnox> ..
<xnox> * Well - troubleshoot why they are uninstallable and make them
<xnox>   installable one way or the other.
<xnox> ..
<xnox> Do these important points make sense to everyone?
<xnox> Ok. I have a few examples to go through & how they were fixed.
<xnox> ..
<xnox> * ed - is a text processing utility some packages build-depend on. It
<xnox>   simply needs to be marked Multi-Arch foreign, since the host needs
<xnox>   to simply execute it.
<xnox> ..
<xnox>   Fix: https://launchpadlibrarian.net/128824103/ed_1.6-2_1.6-2ubuntu1.diff.gz
<xnox> Essentially it's a one line of
<xnox> +Multi-Arch: foreign
<xnox> simply some packages depended to run `ed` command (which is the standard text editor)
<xnox> naturally it should be for the host sysmtem (amd64 when cross-compiling for amd64 -> armhf). Instead of making _all_ packages to change their build-dependency to "ed:any" we can mark it as foreign and then voila the native one will be used everywhere.
<xnox> ..
<xnox> (i really should have would which packages build-depend on ed, but I didn't. This is left as an excercise to the readers for later ;-) )
<xnox> ..
<xnox> Next example?!
<xnox> ..
<xnox> * bsd-mailx doesn't have any fancy configuration system, it simply
<xnox>   uses $CC compiler by default. Well, to make it cross-compile the
<xnox>   solution was to export cross-compiler in the debian/rules
<xnox> ..
<xnox>   Fail: http://people.canonical.com/~cjwatson/cross/armhf/raring/bsd-mailx_8.1.2-0.20111106cvs-1build1_armhf-20121207-0217
<xnox>   Fix: https://launchpadlibrarian.net/126375751/bsd-mailx_8.1.2-0.20111106cvs-1build1_8.1.2-0.20111106cvs-1ubuntu1.diff.gz
<xnox>   Pass: http://people.canonical.com/~cjwatson/cross/armhf/raring/bsd-mailx_8.1.2-0.20111106cvs-1ubuntu1_armhf-20121219-0219
<xnox> ..
<xnox> Looking at the Fail log you notice (down at the bottom) that "gcc" (native) compiler is used, instead of the correct "arm-linux-gnueabihf-gcc" (cross-compiler from native to armhf)
<xnox> After spotting this, the fix was simple.
<xnox> You can see at the very bottom of the fix, where debian/rules is modified to check:
<xnox>  - if host != build (that means crosscompiling)
<ClassBot> There are 10 minutes remaining in the current session.
<xnox>  - set CC compiler to $(DEB_HOST_GNU_TYPE)-gcc (which will be the correct cross-compiler)
<xnox> ..
<xnox> Questions?
<xnox> Last example.
<xnox> ..
<xnox> * zsh had a couple of problems. It was using native strip, objcopy
<xnox>   instead of cross-utilities. It was trying to execute just built zsh
<xnox>   to zcompile scripts. It also had pessimistic fallbacks in it's
<xnox>   compiled autoconf macros, and hence building only half the modules
<xnox>   and finally it was missing a dependency on libelf-dev.
<xnox> ..
<xnox>   (well there were multiple fail logs, as after fixing each issue I
<xnox>   was discovering next one)
<xnox>   Fail: http://people.canonical.com/~cjwatson/cross/armhf/raring/zsh_5.0.0-2ubuntu2_armhf-20121202-0125
<xnox>   Fix: https://launchpadlibrarian.net/126425777/zsh_5.0.0-2ubuntu2_5.0.0-2ubuntu3.diff.gz
<xnox>   Pass: http://people.canonical.com/~cjwatson/cross/armhf/raring/zsh_5.0.0-2ubuntu3_armhf-20130103-1406
<xnox> ..
<xnox> There are a few fixes there. If you want commentry on particular pieces of the fix, just ask in -chat.
<xnox> ..
<xnox> So how to get involved?
<xnox> Step 1: follow local setup from https://wiki.ubuntu.com/CrossBuilding
<xnox> ( I recommend using mk-sbuild from lp:ubuntu-dev-tools )
<xnox> Step 2: Spot a problem in http://people.canonical.com/~cjwatson/cross/armhf/raring/
<xnox> Step 3: Fix it & submit a patch/branch
<xnox> Final Questions????????
<xnox> everyone seems a bit quite =) I'm not sure if I lost some people along the road or not =/
<xnox> The point is that for most packages that use good autoconf principles and use `dh` or `cdbs` style debian/rules they all should just correctly cross-build.
<ClassBot> There are 5 minutes remaining in the current session.
<xnox> And when some packages don't, it's quite trivial to fix them.
<xnox> (most of the time0
<xnox> (most of the time)
<xnox> If you need help, just ping me here or chat on #ubuntu-devel or #ubuntu-motu a few people on those channels work on cross-compiling packages.
<xnox> Thank you all for your time!
<xnox> Next up will be bdrung & geser with Developers Roundtable =))))))))
<xnox> in a few moments.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Developers Roundtable - Instructors: bdrung, geser
<bdrung> hi, welcome to the Developers Roundtable.
<geser> Hi
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html following the conclusion of the session.
<bdrung> It is a open session where you can ask questions.
<bdrung> You can ask your question in this channel.
<bdrung> Until the first question arise, let us introduce ourselves.
<geser> My name is Michael Bienia and I've been a MOTU for almost 6 years now (I'm surprised it's so long already)
<geser> I've been working mostly on trying to keep the archive (mostly packages from universe) in an installable and buildable state (fixing unmet dependencies and build failures)
<geser> it's a task where you have to deal with many different packages (and also different packages styles) and also different errors
<bdrung> My name is Benjamin Drung. I am born in 1985 and am currently writing my master thesis in computer engineering. I have been core-dev and Debian Developer for years (time flies by).
<bdrung> My involvement changed over time.
<bdrung> Now I am maintaining a bunch of packages in Debian (e.g. VLC, Audacity, development tools like devscripts) and doing sponsoring.
<bdrung> And I have been a member of the Developer Membership Board (DMB) for nearly two years.
<ClassBot> JumpLink asked: Ubuntu Online Accounts is forked from MeeGo, right?
<JoseeAntonioR> so, UOA was first developed for MeeGo
<JoseeAntonioR> and it was used on the Nokia N9
<JoseeAntonioR> but then, it became UOA
<ClassBot> kermit666 asked: how stable is UDD at the moment? When somebody new is starting, would you recommend to use it or is the old patch mechanism still preferred?
<bdrung> UDD is usable in most cases, but there are a few packages that have no up-to-date bzr branches. In these cases falling back to traditional way is required.
<bdrung> You probably want to know how to work with packages outside of UDD if you want to collaborate with Debian.
<bdrung> Most of my Debian package use git as version control system.
<bdrung> UDD has some advantages, but some rough edges. I recommend to try both ways and use the one that you like more.
<ClassBot> jsjgruber-l85-q asked: How should applications be changed to be compatible with new devices?
<JoseeAntonioR> so basically, if you're talking about the phone
<JoseeAntonioR> it's all about screen size, battery life, and limited resources
<JoseeAntonioR> taking libreoffice as an example, you can run it on the phone, but it wouldn't look good as it's not designed for that screen size
<JoseeAntonioR> battery life is another constraint as it may run off pretty quickly if the app is not designed to use low resources
<JoseeAntonioR> and respecting limited resources, the RAM, you need to take in count that you have the apps, the radios, some push services running, etc.
<JoseeAntonioR> so, that's it
<JoseeAntonioR> now guys, I'd like to know what were your impressions about the Ubuntu Developer Week for this cycle
<JoseeAntonioR> you can answer in this channel if you like
<xnox> with respect to UI, the native applications will most often use the announced QML touch SDK with specific touch components it ships.
<JoseeAntonioR> what did you enjoy the most? did you feel you can get a bit more involved into devel now?
<gruber> Seems like there were some new things covered, which is very helpful, along with some sessions covering the usual basics we need each time for beginners.
<LocalHero> I only joined the Developer Week for today, but I can't wait to dig in to U1DB.
<JoseeAntonioR> it's good to see that you guys liked it
<JoseeAntonioR> and are there any sessions you'd like to see in upcoming events, or even on the next UDW?
<JumpLink> (note: you can not write with lerid here)
<JoseeAntonioR> JumpLink: yep, I'm also readin -chat in case there's someone with lernid
<ClassBot> kermit666 asked: Should people join the main #ubuntu-classrom channel now?
<bdrung> yes, please.
<ClassBot> Rcart asked: bdrung, would you please talk to us a bit about MoM and manual syncing?
<bdrung> MoM is https://merges.ubuntu.com/
<bdrung> ubuntu-dev-tools ships a script called grab-merge.
<bdrung> "grab-merge gxine" would pull the files for merging gxine.
<bdrung> MoM tries to automatically merge the new package from Debian and will report if some merges failed.
<bdrung> My merging style is a little different.
<Rcart> what is it?
<kermit664> ok, anyway, as I was saying on the -chat channel "I'd like to see some tutorials reviewing the source code of some important programs where people might contribute"
<bdrung> I start by visiting the Debian PTS page:  http://packages.qa.debian.org/g/gxine.html
<kermit664> I think that would help people out in contributing to some places, as big open source programs are usually a lot more complex than the stuff that people do at their universities etc.
<bdrung> there is a link for the Ubuntu change: http://patches.ubuntu.com/g/gxine/gxine_0.5.905-4ubuntu7.patch
<bdrung> Then I get the new package from Debian: pull-debian-source gxine
<bdrung> After reviewing the Ubuntu diff, I try to apply it and fix debian/changelog: patch -p1 < ../gxine_0.5.905-4ubuntu7.patch
<JumpLink> I liked the UDW well! In my opinion, it should give breaks between sessions or more time to ask.
<Rcart> bdrung: that is for keeping ubuntu changes right?
<bdrung> Instead of touching many package, I concentrated one a few ones and try to reduce the diff between Debian and Ubuntu.
<bdrung> Yes, this approach is used if there are remaining changes for Ubuntu.
<kermit664> also, I liked the approach in some of the developer hangouts where dholbach was fixing some bugs live. I think that such a hands-on approach would be nice in one or two sessions - maybe to lead people through the whole process of finding the bug cause, fixing it etc.
<bdrung> In case we can use the Debian package without modifications, we call it a sync.
<bdrung> We use the script "syncpackage" from ubuntu-dev-tools to sync a package from Debian to Ubuntu.
<ClassBot> There are 10 minutes remaining in the current session.
<bdrung> You can use "requestsync" from ubuntu-dev-tools if you want to have a package synced, but have no upload rights for that package.
<bdrung> requestsync creates a bug report requesting the sync and it will appear on http://reqorts.qa.ubuntu.com/reports/sponsoring/
<bdrung> kermit664: Finding a bug to work on is easy: which bug annoys you the most? Then you find the corresponding source package.
<Rcart> bdrung: great. Thanks (:
<bdrung> you're welcome. :)
<kermit664> do you also open up bug reports for stuff you're fixing yourself that doesn't have an open report?
<ClassBot> There are 5 minutes remaining in the current session.
<bdrung> kermit664: in some cases, yes
<bdrung> The usual way for me is to: Find the source package corresponding to your bug. Check if it is a packaging bug or upstream bug. Check if it is fixed upstream.
<bdrung> File an upstream bug if it is not fixed upstream.
<bdrung> You could cherry-pick the fix from upstream or wait until the upstream fix is in the next upstream release.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2013/01/31/%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
<JoseeAntonioR> So guys, that's been all the Developer Week for this cycle!
<JoseeAntonioR> I really hope you enjoyed it, and learned some things about Ubuntu Development
<kermit664> bdrung: I see. Thanks!
<JoseeAntonioR> Logs will be linked to the schedule in a whilw
<JoseeAntonioR> while*
<bdrung> kermit664: when you want to do a SRU, a bug report is needed
<JoseeAntonioR> Again, thanks so much to all of you for attending, we hope to see you soon!
<bdrung> You are welcome to ask more questions in #ubuntu-devel and #ubuntu-motu
<bdrung> Thanks for attending and asking questions.
<kermit664> thanks everybody!
<kermit664> Good night to those of you who are close to GMT!
<Rcart> thanks for the talks
<bdrung> it's UTC+1 here. so bed time is not that near. ;)
<JumpLink> thanks!
<wrbishop> Thanks!
<wrbishop> leave
#ubuntu-classroom 2013-02-01
 * dustubot is back (gone 28:03:21)
<JoseeAntonioR> dustubot: Hey! The Ubuntu Developer Week is now over.
<Tr3X> #wordpress
<Tr3X> quit
<Tr3X> exit
#ubuntu-classroom 2013-02-02
<Quacky2200_> Hi
#ubuntu-classroom 2013-02-03
<CSRedRat> Hello from Russia!
