#ubuntu-classroom 2007-08-27
<HarKoT> yop
<HarKoT> toujours personne ici ? :/
<HarKoT> toujours personne ici?
<HarKoT> \\o
<HarKoT> o//
<HarKoT> \o/
<vistakiller> :P
#ubuntu-classroom 2007-08-28
* Paddy_EIRE is away: Away
* Starting logfile irclogs/ubuntu-classroom.log
<HarKoT> ol
<jrib> did you read the README file?
<jrib> Laugh:
<Laugh> ok, listening
<Laugh> yes
<Laugh> i read it
<jrib> you need to address people in #ubuntu or no one will have any clue what you are talking about (including me)
<jrib> !who
<ubotu> As you can see, this is a large channel. If you're speaking to someone in particular, please put their nickname in what you say (use !tab), or else messages get lost and it becomes confusing :)
<Laugh> i finaly could install it i think
<jrib> Laugh: and did you try what the README said?
<Laugh> ok
<Laugh> jrib, i tried it, opened the terminal, found the commands by myself to start the installations, it started, said succesfully done
<jrib> k, and now?
<Laugh> jrib, but i could not find the murrine configurator nowhere yet.
<jrib> how did you install it?  paste the command you used here
<Laugh> give me a second
<Laugh> here it is (the command): sudo /home/alimurat/Desktop/newmurrineconfigurator/install.sh
<Laugh> sorry, jrip, here it is (the command): sudo /home/alimurat/Desktop/newmurrineconfigurator/install.sh
<Laugh> sorry, jrib, here it is (the command): sudo /home/alimurat/Desktop/newmurrineconfigurator/install.sh
<Laugh> again
<jrib> k, now what does this return: 'ls /usr/share/applications/murrine-configurator.desktop'
<Laugh> jrib, it says, "no such file or directory
<jrib> Laugh: pastebin the entire output of your 'sudo /home/alimurat/Desktop/newmurrineconfigurator/install.sh' command
<Laugh> jrib, i'm a new and a stupid user
<jrib> actually, I think I know what may be wrong
<Laugh> so, the things you write are sometimes too complex
<Laugh> pastebin for example
<jrib> !pastebin
<ubotu> pastebin is a service to post large texts so you don't flood the channel. The Ubuntu pastebin is at http://paste.ubuntu-nl.org (make sure you give us the URL for your paste - see also the #ubuntu channel topic)
<Laugh> !pastebin
<Laugh> jrib, done, here it is: http://paste.ubuntu-nl.org/35375
<jrib> k
<jrib> do this: cd /home/alimurat/Desktop/newmurrineconfigurator
<jrib> then run it like this: sudo ./install.sh
<jrib> then pastebin the output
<Laugh> ok, give me a second
<jrib> you can have more than one
<Laugh> jrib, ok, here it is: http://paste.ubuntu-nl.org/35378/
<jrib> this install script is not the smartest...
<jrib> run: ./install.sh --uninstall
<Laugh> jrib, all of them?
<jrib> what do you mean "all of them?"
<Laugh> jrib: i mean, should i write all of them to the terminal beginnning as: run: ......
<jrib> oh
<jrib> no, I just mean that you should now execute the command: ./install.sh --uninstall
<Laugh> ok
<Laugh> jrib, it says: succesfully uninstalled
<Laugh> successefully...??..:)
<jrib> great, now run this command and let me know the output: ls /usr/share/nmc /usr/share/pixmaps/murrine-configurator.png /usr/share/applications/murrine-configurator.desktop
<Laugh> jrib: http://paste.ubuntu-nl.org/35380/
<jrib> good
<jrib> do this: cd /home/alimurat/Desktop/newmurrineconfigurator
<Laugh> jrib... done
<jrib> applications that you install outside of the package manager should go to /usr/local
<Laugh> yes...?
<jrib> so now to install, do this: sudo ./install.sh --prefix=/usr/local
<Laugh> jrib: again...:(, all of them?
<jrib> just the stuff after the :
<jrib> sudo ./install.sh --prefix=/usr/local
<Laugh> ok, i meant about the prefix, maybe it should be something else...
<Laugh> starting
<Laugh> jrib, it says succesfully installed
<jrib> ok
<jrib> now check your settings menu
<jrib> probably in system -> preferences
<Laugh> ok, give me second
<Laugh> :), it's there... i hope it'll work and worth to give headaches to me and the helping you..:)
<Laugh> hey, jrib, can i change the language of it to english?
<Laugh> it looks like it's latin or something
<jrib> you'll have to check the program's source
<jrib> it wasn't in english here either
<Laugh> jrib: ok, thanks a lot
<Laugh> :
<Laugh> :)
<seba> hi all
<seba> how can i change keyboard setup on ubuntu serrver ?
<steveatlocalhost> hello
<jrib> hi
<jrib> arghh2D2: pastebin your /etc/apt/sources.list for me
<arghh2D2> jrib: http://paste.ubuntu-nl.org/35466/
<jrib> arghh2D2: try 'sudo apt-get -f install', pastebin the output before agreeing
<jrib> or at least read it before you agree
<arghh2D2> jrib: http://paste.ubuntu-nl.org/35467/
<jrib> arghh2D2: and when you agree?
<arghh2D2> working
<arghh2D2> justasec
<jrib> hmm weird
<arghh2D2> liscence agreements in ncurses stuff
<jrib> k, agree (if you agree)
<arghh2D2> jrib: http://paste.ubuntu-nl.org/35468/
<jrib> looks ok now
<jrib> does synaptic still complain?
<arghh2D2> jrib: nope
<jrib> k, not sure what went wrong there, but you should be good to go now
<arghh2D2> yeah, i think so, thanks a million pal.
<jrib> np
#ubuntu-classroom 2007-08-29
<Xarlock> hello
<Xarlock> would anyone mind helping me set up my screen res.?
<Xarlock> i'm stuck in 800x600 its not good
<con> hi can anyone tell how the mentoring system works?
#ubuntu-classroom 2007-08-30
<detectiveinspekt> hi
<jrib> detectiveinspekt: hi
<jrib> run this for kicks: find ~/.local ! -user $USER
<detectiveinspekt> i could solve this problem by uninstalling totem this works but my brother needs it for mythtv
<detectiveinspekt> k
<detectiveinspekt> jrib: "permission denied"
<jrib> nice
<jrib> you're running this as your user not root right?
<detectiveinspekt> yep
<jrib> ls -ld ~/.local
<jrib> output here
<detectiveinspekt> drwx------ 3 root root 4096 2007-02-27 18:25 /home/jonathan/.local
<jrib> alright, somehow root owns ~/.local.  This usually happens when you sudo gui apps
<jrib> to fix:  sudo chown -R $USER: ~/.local
<detectiveinspekt> shouldn't i own this?
<detectiveinspekt> yk
<detectiveinspekt> ok
<detectiveinspekt> oh yes it works now thanks
<jrib> np
<detectiveinspekt> i do find it difficult to know where everything is
<jrib> you may want to do: find ~ ! -user $USER
<detectiveinspekt> like conf files etc
<jrib> that will list everything in your HOME that isn't owned by you
<jrib> or just chown your whole HOME back to yourself if you are sure you don't want other ownership for anything in there
<detectiveinspekt> ok great it worked thanks
* #ubuntu-classroom  [freenode-info]  why register and identify? your IRC nick is how people know you. http://freenode.net/faq.shtml#nicksetup
* Starting logfile irclogs/ubuntu-classroom.log
#ubuntu-classroom 2008-08-27
<arkara> hellp
<arkara> anyone there?
<arkara> ..
<arkara> anyway
#ubuntu-classroom 2008-08-28
<nenelinux> hi to all
<tethridge> anybody here that helps organize developer week?
<pleia2> tethridge: you'll want to talk to james_w
<tethridge> james_w, ping
<tethridge> pleia2, I'm just wondering if any thought had been given to using something like dimdim.com for the sessions
<tethridge> they claim open source roots
<tethridge> I'm sure that a deal could be worked out, because it would be a good source of advertising
<tethridge> the overall experience would be a lot better for the users
<tethridge> I'm just curious
<pleia2> tethridge: not sure - it's fundamentally an irc-based project at the moment, and having additional (especially proprietary, no included in ubuntu) applications required for sessions increases the barrier for entry
<pleia2> also it looks like this product only is free for up to 20 users at a time?
<tethridge> from what I can tell yeah, but like I said, I bet that something could be worked out since it would be great advertising for them
<tethridge> they may allow us to use it for free
<tethridge> I don't think it requires anything major to get it going on ubuntu
<tethridge> I've done a lot of web training and being about to watch a demo and chat usually helps
<tethridge> then adding voice would help a lot
<pleia2> I think it's too late to implement something like this for developer week, but you're welcome to email the -classroom mailing list with some thoughts :)
<tethridge> where is that mailing list?
<tethridge> is there a mailman signup somewhere?
<james_w> hi tethridge
<pleia2> tethridge: https://lists.ubuntu.com/mailman/listinfo/ubuntu-classroom
<james_w> hey pleia2, how are you?
<pleia2> james_w: good good, been very busy :) you?
<james_w> good thanks. Feature freeze meant it's been pretty hectic the last few days, but I can take a breather and catch up now
 * pleia2 nods
#ubuntu-classroom 2008-08-29
* pleia2 changed the topic of #ubuntu-classroom to: Ubuntu Open Week is over, thanks for participating! | Information and Logs: https://wiki.ubuntu.com/UbuntuOpenWeek | Next Event: Ubuntu Developer Week: https://wiki.ubuntu.com/UbuntuDeveloperWeek
* pleia2 changed the topic of #ubuntu-classroom to: Ubuntu Classroom || https://wiki.ubuntu.com/Classroom || https://lists.ubuntu.com/mailman/listinfo/Ubuntu-classroom || Next Event: Ubuntu Developer Week: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<mib_04cywaog> i want compile gcc 2.95.3 but i cant compile on ubuntu 6.10
<mib_04cywaog> i want compile gcc 2.95.3 but i cant compile on ubuntu 6.10
<mib_04cywaog> i want compile gcc 2.95.3 but i cant compile on ubuntu 6.10
 * e-jat brb .. zzZZzz sleepy .. 
 * e-jat back .. 
<Oli``> Is there a minimum-skill-set or level that people need to be to participate next week?
<pleia2> Oli``: nope! there are classes for people of all skill levels :)
<Oli``> A lot of the material is going to be completely new to me but I'm desperate to find a good way in.
<Oli``> Awesome =)
<jpds> Oli``: There will be logs so you can read it whenever you want at your leisure.
#ubuntu-classroom 2008-08-30
<jscurtu> hi every one.... i saw the news about the UbuntuDeveloperWeek/Session here on IRC , i am interessted on packaging software on Ubuntu and wanted to know before i join in if the Session toutorials are for software dev's only, or if if Linux expirienced users can join in too??
<nalioth> anyone can sit in, jscurtu
<jscurtu> hey thats good...
<jscurtu> thanks
<quentusrex> Hello. I'm trying to learn to build a package. My first package I want to be able to add a debian package to my local private deb repo. I want to be able to build a package that will copy wallpaper images into the proper folder. What should I do first? I know how to run cp commands, but I don't have any experience building a package.
<pleia2> quentusrex: Ubuntu Developer Week starts on Monday, might want to see the link in the /topic for a session that can help you out - until then help on packaging is mostly in #ubuntu-motu
<quentusrex> thanks pleia2
<jrib> !packaging | pleia2
<ubot5> pleia2: The packaging guide is at http://wiki.ubuntu.com/PackagingGuide - See https://wiki.ubuntu.com/UbuntuDevelopment/NewPackages for information on getting a package integrated into Ubuntu - Other developer resources are at https://wiki.ubuntu.com/UbuntuDevelopment - See also !backports
<jrib> pleia2: if you want to get a headstart you can read those docs
<jrib> erm
<jrib> quentusrex: that was all for you :)
<pleia2> :P
<quentusrex> jrib, My issue is that I've never built a package before. I don't know what steps are involved or what requirements there are. I've only installed packages. My start point is that I have a folder with images, and I want to make a package that includes the images and copies them into a specific folder. What is my next step?
<jrib> quentusrex: http://wiki.ubuntu.com/PackagingGuide assumes no prior packaging experience
<quentusrex> persia, do you know how to build a package? would you be able to help walk me through the first few steps?
<jrib> quentusrex: you could probably grab the source package for something like ubuntu-calendar and see how it works
<quentusrex> jrib, you too?
<jrib> note that ubuntu-calendar has some artistic nudes in it, so depending on your environment, you may not want to open the actual images
<quentusrex> from what I can tell I want to use dh_* tools
<quentusrex> I want to put all the images in a single folder.
<persia> quentusrex: Yes, and Yes, but not today.
<quentusrex> :) ok
<persia> man dh_install will tell you most of what you need.
<quentusrex> ok
<persia> Also, as I mentioned before, there was a session here in July about packaging packages that didn't need compilation, but you'd have to review irclogs.ubuntu.com to find it, as nobody wrote it up for the wiki.
<quentusrex> because it seems most of what I need to setup the 'action' part of the package is in the 'rules' file.
<quentusrex> am I on the right track?
<quentusrex> persia, if you don't have time, I'm not trying to pester you. I'm also asking anyone else in this channel.
<persia> Yes, the rules file defines how the package is built.  You really want to read the link jrib posted, and look at some other packages.
<quentusrex> persia, I've read through a lot of that link.
<persia> Also, this channel isn't a general Q&A channel: it's scheduled for classes at various times.  Currently nothing is scheduled until monday at 16:00 UTC.
<quentusrex> but without any experience with building a package and what the terms mean, it doesn't make too much sense.
<quentusrex> aah, ok
<coolbhavi> hi persia
#ubuntu-classroom 2008-08-31
<cybertux_> hi
<cybertux_> hello
<Makhosi> Hi All
<kikoman> hello you'all
#ubuntu-classroom 2009-08-24
<openweek8> hola
#ubuntu-classroom 2009-08-25
<delcoyote> hi
<mimor> lo
#ubuntu-classroom 2009-08-26
<hggdh> for the classroom maintainers/schedulers: I would like to know if it is possible to reserve it for Friday Aug 28th, at 2200 UTC, for 90 minutes
<nhandler> hggdh: For what purpose?
<pleia2> there isn't anything on the schedule at the moment
<hggdh> dtchen has accepted giving a class on sound bugs triaging
<pleia2> great :)
<hggdh> so he would be the instructor, and someone from bugs-control would manage the questions
<nhandler> hggdh: Could you add it to the Fridge calendar? A blog post on the planet (and an email the the lists) would be nice too ;)
<pleia2> hggdh: I'll add it to the schedule - what is the title?
<pleia2> nhandler: I thought the fridge calendar was only for #ubuntu-meeting
<pleia2> (that's what it says anyway)
<nhandler> pleia2: I'll double check, but we have used it for #ubuntu-classroom stuff (like the packaging training sessions) as well as other ubuntu events like pycon
<hggdh> nhandler, I am still to set up my blogging on Planet... but I will find a volunteer ;-) an email to the lists (right now, only bug-(squad|control) is contemplated)
<pleia2> ah, ok, should probably update the page then
<nhandler> pleia2: I'll take care of that
<pleia2> nhandler: thanks :)
<nhandler> hggdh: If you write something up, I'm sure we could find a few people to blog about it. I could also toss it up on the Fridge blog
<hggdh> pleia2, what about "Triaging Sound Bugs"?
<pleia2> hggdh: sounds good!
<hggdh> nhandler, will do, thank you
 * nhandler hugs hggdh 
 * hggdh blushes, and hugs nhandler back
* 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: Fri 28 Aug @ 22:00 UTC: Triaging Sound Bugs; Mon 31 Aug - Fri 4 Sept 2009: Ubuntu Developer Week; Fri Sep 4 @ 21:00 UTC: How to run a successful Jam || Run 'date -u' in a terminal to find out the UTC time
<mayo1210> helloo
<animorphus> guys, i'm having trouble with my sound.
<animorphus> and i don't know what to do
<nalioth> animorphus: support is in #ubuntu
<sai_> date-u
<trinium> sss
#ubuntu-classroom 2009-08-27
* nhandler changed the topic of #ubuntu-classroom to: Ubuntu Classroom || Support in #ubuntu || https://wiki.ubuntu.com/Classroom || https://wiki.ubuntu.com/Packaging/Training || Now: Feature Freeze and Freeze Exceptions || Upcoming: Fri 28 Aug @ 22:00 UTC: Triaging Sound Bugs; Mon 31 Aug - Fri 4 Sept 2009: Ubuntu Developer Week; Fri Sep 4 @ 21:00 UTC: How to run a successful Jam || Run 'date -u' in a terminal to find out the UTC time
<nhandler> It is time for another Packaging Training Session! slangasek has kindling volunteered to lead a session about Feature Freeze and Freeze Exceptions.
<nhandler> slangasek: The floor is yours
 * slangasek waves
<slangasek> who all is here for the session?
<slangasek> (as opposed to just idling :)
<nhandler> o/
<slangasek> er, heh
<slangasek> nobody else? :-)
<Daviey> no :)
<warner> I'm listening
<slangasek> oh yay, people!
<slangasek> so the thing that makes this topical is this: https://lists.ubuntu.com/archives/ubuntu-devel-announce/2009-August/000606.html
<slangasek> according to my UTC clock, Thursday is here, which means we're now in Feature Freeze, which means the rules on how we do uploads for the remainder of the karmic cycle have changed :)
<slangasek> the reason we have a feature freeze is to make sure everybody's on the same page as far as preparing a release - so that people use the early part of the cycle for developing / uploading great new things, and the latter part of the cycle is focused on stabilization
<slangasek> so having a broad rule, that past a certain date we only do bugfixes, helps with that
<slangasek> bugfixes including everything from fixing segfaults, to typos, to documentation corrections, to translations...
<slangasek> but of course, every rule has exceptions, and ours are detailed here: https://wiki.ubuntu.com/FreezeExceptionProcess
<slangasek> warner: have you had occasion to request a feature freeze exception before?
<warner> nope, but there's a decent probability that I will need to in the next week :)
<warner> tell me how it works!
<slangasek> :)
<slangasek> that wiki url is a very useful reference - I suggest keeping it to hand when it comes time to file the exception request
 * Daviey must go to bed, but looks forward to reading scrollback. nn o/
<slangasek> but the basics are described right in the first section - file a bug report, and include:
<slangasek> # A description of the proposed changes, with sufficient detail to estimate their potential impact on the distribution
<slangasek> # A rationale for the exception, explaining the benefit of the change
<slangasek> # Any additional information which would be helpful in considering the decision
 * slangasek waves to Daviey 
<slangasek> and then once you have the bug filed against the package that needs an exception, you subscribe ubuntu-release if the package is in main/restricted, and motu-release if i's in universe/multiverse.
<slangasek> that's the gist of it - section 2 on that page gives some more specifics, but if you follow section 1, you're already well on your way
 * warner nods
<slangasek> I don't really have much to add, beyond that... I'll take questions, though :)
<warner> so, the most likely FFE that I may have to file depends upon two packages that are on their way into karmic, tahoe-lafs and python-pycryptopp
<slangasek> I should also link to https://lists.ubuntu.com/archives/ubuntu-devel/2009-August/028794.html - there are some cases where motu-release has delegated responsibility to a "domain expert" for certain packaging areas
<slangasek> so instead of subscribing motu-release, you can subscribe the delegate instead, which is faster
<warner> I may have to FFE tahoe (to change the packaging to relax a version requirement) if only the older version of pycryptopp gets in
<slangasek> warner: ok
<warner> or I may FFE pycryptopp to get the newer version in (which tahoe depends upon)
<warner> but I believe both will fall under the "FeatureFreeze for bug-fix-only updates" clause
<slangasek> tahoe-lafs is currently not in the archive, so I think that needs an FFe regardless
<slangasek> new packages are almost always considered "features"
<slangasek> the wiki page talks about new packages specifically: https://wiki.ubuntu.com/FreezeExceptionProcess#FeatureFreeze%20for%20new%20packages
<nhandler> What are ubuntu/motu -release looking for when deciding whether to accept a Freeze Exception request?
<warner> yeah, I thought that an MOTUer added it to NEW, but I may be wrong, and we've been scrambling to get the dependencies in place
<slangasek> (fwiw, I can't speak in detail to that policy since I'm not a member of motu-release, I'm just quoting the wiki page)
<slangasek> nhandler: it really is as simple as the list from before: why is it important to break the rule, what's in the change that carries a risk of regression
<slangasek> if the bug is something that's a small annoyance, but the diff is 5000 lines, that's probably not going to get an excepton :)
<slangasek> warner: well, the MOTU can upload it to NEW, but it won't be accepted unless it gets a freeze exception from motu-release
<warner> so in general, it sounds like I (as an end-user/upstream-developer/non-ubuntu/non-DD) must convince an MOTU member of the need-for/safety-of the update or new package, and they must enforce the FFE policy
<slangasek> well, the people who have to be convinced are the motu-release team
<slangasek> who are MOTUs, but a specific subset of MOTUs
<slangasek> you need to have a MOTU upload the package, but the uploader doesn't have to have any opinion at all about whether it warrants a FFe
<zooko> So, I might have missed some of the lesson.  The deadline for Feature Freeze for Karmic passed 18 minutes ago, right?
<slangasek> though they may ask for you to get the FFe approved first before they upload
<slangasek> zooko: yes - which means new packages uploaded from here have to get feature freeze exceptions (FFe)
<zooko> Okay, and while Tahoe-LAFS *was* already advocated one REVU, it was *not* actually included in the archive by an AA, I think.
<zooko> In fact, in addition to being advocated on REVU, Dustin Kirkland also uploaded it.
<slangasek> hmm, in the specific case of tahoe-lafs, I know kirkland mentioned it was rescinded because it still had other dependencies that need to be in first
<zooko> Okay, so it was uploaded but then, um, unuploaded.  :-)
<slangasek> rejected from the queue, yes. :)
<zooko> Okay.
<zooko> So Tahoe-LAFS is in the state of "advocated on REVU but not uploaded in the queue".  Is that right?
<zooko> And zfec is in the same state.
<zooko> And foolscap 0.4.2 is in a different state -- it doesn't need advocacy on REVU because it is already in Ubuntu, it just needs an upgrade, so its state is
 * zooko looks
<zooko> https://bugs.launchpad.net/foolscap/+bug/419510
<james_w> zooko: note that new packages from REVU generally need two advocates
 * zooko looks at REVU
<james_w> zfec appears to have been uploaded to NEW
<zooko> How can I tell?  I think that each of these packages have two advocates already: http://revu.ubuntuwire.com/p/tahoe-lafs http://revu.ubuntuwire.com/p/zfec
<zooko> So, what state is foolscap in? It is in the "request upgrade" state.
<slangasek> zfec: https://launchpad.net/ubuntu/karmic/+queue
<slangasek> er, except it's on the second page; I'll have to fix that by accepting some binaries, I guess. :)
<zooko> slangasek: so zfec is in the "queued" state?  Which is after the "REVU" state and before the "really into Karmic" state?
 * Laney wonders what these states are
<slangasek> zooko: it's in the NEW queue, which is when an archive admin confirms that it's legal for us to distribute and puts it in the right section of the archive
<zooko> Hey, there's a pycryptopp on that page.
<slangasek> for new packages after feature freeze, the pipeline is: REVU -> motu-release freeze exception -> upload -> archive admin processing -> into karmic
<slangasek> those packages that were uploaded before the FF started can reasonably be accepted by the archive admin without freeze exception paperwork
<zooko> slangasek: okay, which seems to include Tahoe-LAFS (except that it was rejected from the queue), and zfec, and pycryptopp-0.5.14.
 * slangasek nods
<warner> which means we need to start with getting foolscap and pycryptopp updated (with an FFE for that), and then we can apple for a new-package FFE for tahoe (and mention the two advocates as supporting material)
<slangasek> and foolscap needs to have a feature freeze requested, by following the procedure at https://wiki.ubuntu.com/FreezeExceptionProcess and subscribing motu-release
<warner> so, I'll start that process once foolscap-0.4.2 (which is now in debian) makes it past the next dinstall run, by using requestsync
<slangasek> you shouldn't need to use requestsync to open a new bug, you can just subscribe motu-release to the existing bug report
<zooko> Thanks for the explanations, slangasek.
<slangasek> (but be sure to fill in the information about why it should get an exception!)
<slangasek> no problem :)
<warner> I'll do the same for pycryptopp-0.5.15. Both will need an FFE, which will be easier to argue for pycryptopp (the 0.5.14-0.5.15 delta was a minor bugfix that doesn't affect debian), than for foolscap (which is a larger upgrade, since both debian and ubuntu had fallen a year behind upstream)
<slangasek> in cases where there's no bug report open, though, requestsync is a very nice way to request freeze exceptions using the '-e' option
<slangasek> when it opens the bug, it subscribes the -release team for you
<zooko> I still kind of think we shouldn't bother FFE'ing pycryptopp-0.5.15.
<zooko> We have to FFE foolscap-0.4.2
<zooko> https://bugs.launchpad.net/ubuntu/+source/foolscap/+bug/419510
<zooko> And we have to FFE Tahoe-LAFS
<zooko> But we don't have to FFE pycryptopp-0.5.15 in order to get Tahoe-LAFS in.
<warner> yeah, if the tahoe package had actually made it in, then we'd need the pycryptopp-0.5.15, but if we can change tahoe a bit before resubmitting it, we can go with 0.5.14
<zooko> It doesn't *hurt* to also FFE pycryptopp-0.5.15, but I guess I can't honestly claim in the FFE request that it is important to make an exception for it!  :-)
<zooko> Well, I really should attend to my family and maybe have a quick nap.
<slangasek> ok :-)
<warner> OTOH, accepting tahoe is a much larger decision than accepting a pycryptopp upgrade
<slangasek> zooko: thanks for coming!
<warner> i mean, if they accept tahoe, then they're highly likely to accept a new pycryptopp, or something
 * zooko lurks
<slangasek> warner: I think I would recommend filing a single bug report requesting the freeze exception for both packages, and laying out the options for motu-release to consider
<warner> yeah, that sounds like a good plan
<slangasek> if there are no other questions, then, I'm going to wander away from the keyboard now :-)
<warner> slangasek: thanks for all the help!
<slangasek> feel free to follow up in #ubuntu-motu
<slangasek> warner: my pleasure!
* nhandler 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 28 Aug @ 22:00 UTC: Triaging Sound Bugs; Mon 31 Aug - Fri 4 Sept 2009: Ubuntu Developer Week; Fri Sep 4 @ 21:00 UTC: How to run a successful Jam || Run 'date -u' in a terminal to find out the UTC time
<Bazoul> hi !
<Bazoul> anydody home ?
<mimor> yup
<eurythmia> no ... I'm at work.
 * limcore leaves his weed in locker room and sits in chair near blackboard
<limcore> there should be some ringbell bot that would ping everyone at 21 UTC ;)
<mhall119|work> ring
#ubuntu-classroom 2009-08-28
<lateralus01> does anyone know how to get a sound card working? specifically the headphone jack???
<lateralus01> help
<openweek9> hello
<DKcross> hello people
<DKcross> i have problems :) im testing karmic koala
<DKcross> exist any channel for karmic ?
<Andphe> #ubuntu+1
<hggdh> DKcross, go to #ubuntu+1
<DKcross> thanks
<blueyed> Hi. can somebody give me a hint already about debugging Pulseaudio. Until recently "pacmd .. list-sinks" only displayed a null device, now it has alsa as sink, but every non-KDE app still fails to play sound (or crashes on startup).
<komputes> Is the Audio troubleshooting classroom happening soon?
<andresmujica> in about 5 minutes...
 * kamusin ole olÃ©!
<komputes> sweeet
<komputes> hi dtchen !
<andresmujica> hi dtchen
<dtchen> hi
<dtchen> https://wiki.ubuntu.com/Packaging/Training/Logs/2009-08-28
<maco> hello
<dtchen> ok, hi everyone, tonight we'll be covering the topics listed at https://wiki.ubuntu.com/Packaging/Training/Logs/2009-08-28
<dtchen> just to reiterate, we're having a short session on triaging sound bugs in Ubuntu, though many of these procedures are handy for other modern Linux distributions
<dtchen> for those without access to the wiki currently, here's the agendum:
<dtchen> # Pedigree of Linux audio
<dtchen> # Modern sound architecture for x86 laptops/netbooks
<dtchen> # Triaging audio bugs using Launchpad
<dtchen> # Common problem(symptom)s and their resolutions/workarounds
<dtchen> # What's in store for Karmic and Karmic+1
<dtchen> i'd like to make this session as interactive as possible, so please feel free to ask questions in #ubuntu-classroom-chat
<dtchen> ok, let's dive in
<dtchen> Paraphrasing, ALSA began life as a GPL alternative to the languishing
<dtchen> OSS 3.x. From the onset, it was clearly designed to place only driver
<dtchen> and necessary core bits in kernelspace; the more complex and extensible
<dtchen> parts would be in userspace.
<dtchen> It's important here to note that despite ALSA having become the "blessed" sound subsystem for Linux 2.6, OSS development has continued outside of the Linux tree; other OSes like the BSDs use some parts of its current version, 4.x, and Solaris has its own "fork" of 4.x.
<dtchen> Early in Ubuntu development, i.e., 4.10 to 5.04, it was decided to pursue ALSA as the sole supported base. It seemed (as has proven to be) rather intelligent from a resource perspective, given upstreams were focusing on it.
<dtchen> Briefly, i'll describe the modern sound architecture on an Ubuntu release. Perhaps an ASCII diagram helps:
<dtchen> using the analog of a stack, it looks something akin to,
<dtchen> - Rhythmbox -
<dtchen> - GStreamer -
<dtchen> - PulseAudio -
<dtchen> - ALSA (-lib, userspace) -
<dtchen> - ALSA (linux, kernelspace) -
<dtchen> - hardware -
<dtchen> i.e., when you're listening to music using Rhythmbox in Ubuntu Jaunty, you're hitting six different parts of what i call the "audio stack"
<dtchen> triaging sound bugs in Ubuntu (and yes, in Linux generally) is complicated by the fact that every single part of that stack above is rife with problems
<dtchen> the most difficult parts to debug tend to be lower in the stack, e.g., hardware through PulseAudio
<dtchen> Because we're currently mid-stride (well, toward the latter end of) development of Karmic, there are a lot of fast-moving parts in the stack.
<dtchen> For people who use Karmic, you've likely seen my posts to the ubuntu-devel and ubuntu-devel-discuss mailing lists requesting testing using the ubuntu-audio-dev PPA
<dtchen> (https://launchpad.net/~ubuntu-audio-dev/+archive/ppa)
<dtchen> Now that Karmic is in Feature Freeze, it is more important than ever to track that PPA closely.
<dtchen> 18:10 < Out_Cold> so were do OSS plugins fit in for the stack?
<dtchen> It depends which OSS plugins Out_Cold's referring to.
<maco> <Out_Cold> alsa-oss
<dtchen> For instance, ALSA itself offers an older OSS compatibility option via two loadable kernel modules, snd-oss-pcm and snd-oss-mixer
<dtchen> Sorry, that would be snd-pcm-oss and snd-mixer-oss
<dtchen> Those two modules are loaded by default in Ubuntu and supported remixes to make accessibility (a11y) programs work more smoothly
<dtchen> (I'll cover that bit toward the end of this discussion.)
<maco> looks like no further questions
<dtchen> Having snd-{pcm,mixer}-oss loaded gives userspace /dev/dsp*, /dev/mixer*, /dev/audio*, and other OSS-provided devices.
<dtchen> So that's one major class of "OSS compatibility". However, there is another class known as "wrappers"; these would be things like edsp, alsa-oss, padsp, etc.
<bcurtiswx> ok sorry for the delay
<bcurtiswx> have we started?
<dtchen> This latter class of "wrappers" is simply LD_PRELOAD hacks. They're often not terribly effective, though they do suffice for an increasingly shrinking subset of popular programs.
<dtchen> (On the horizon is something called OSSp; we'll cover that briefly toward the end.)
<limcore> hello
<dtchen> Out_Cold's question regarding alsa-oss actually sits at the upper ALSA layer, i.e., in userspace. It attempts to redirect accesses to the OSS devices and route them through ALSA.
<dtchen> (the same holds for all wrappers, OSSp notwithstanding)
<dtchen> So, that should cover Out_Cold's question.
<andresmujica> stefg: any plans to have a (well needed) system wide EQ in the near future?
<Out_Cold> ty
<dtchen> There have been efforts to place an ALSA eq, though they have stalled. There is currently a branch of PulseAudio (PA) that has eq functionality. Calls for testers are on the pulseaudio-discuss mailing list.
<dtchen> (We're not really considering LADPSA at this point to be "eq".)
<dtchen> Any further questions?
<maco> <limcore> so, pulse audio fails in multi users scenario.   can we do something about this
<dtchen> That question needs more detail/context. Are we talking multiseat?
<limcore> PA is per-user not system wide. This is not good for my use case. When I switched it to system-wide, it works very badly
<dtchen> PulseAudio has plans for multiseat, yes, but they will not land for Fedora 12, Ubuntu Karmic, etc.
<limcore> in system-wide mode, often (on my hardware at least) sound gets very distorted, skipping/jumping (like some buffer fragments problems or something)
<limcore> then it will be not possible for another HALF YEAR to do trivial task like "user on VT-7 plays the music, and it keeps playing even when I switch VT's" ?
<dtchen> limcore: it's possible now, yes. It's not trivial using PA, fairly trivial using ALSA directly, but neither option is ideal.
<limcore> PA is the ideal solution / the goal for ubuntu right?
<dtchen> ok, i have a lot more background to cover before we can get to triaging, so let's continue.
<dtchen> (PA is the upstream momentum, so that's Ubuntu's momentum currently.)
<dtchen> Bringing the discussion back to triaging sound bugs, what we see a lot of are:
<dtchen> 0. sound muted bugs
<dtchen> 1. audio anomaly (crackling, popping) bugs
<dtchen> 2. general infrastructure bugs
<dtchen> To understand how these three major classes of bugs have arisen, it's useful to look at current commodity (consumer) laptops and netbooks.
<dtchen> There are two major audio specifications for laptops and netbooks: AC'97 and High Definition Audio (Azalia).
<dtchen> AC'97 was implemented by many OEMs, perhaps the most popular being the Creative/Sigmatel combination of Live! and Audigy families
<dtchen> It's important to note that both AC'97 and HDA are specifications, so looking at "lspci -v" to get e.g., Audio device: nVidia Corporation MCP67 High Definition Audio (rev a1), is pretty useless
<dtchen> Because AC'97 and HDA are only specs, OEMs have popularized lots of features that require driver enablement, which means that resources must be devoted to implementing them correctly on every OS.
<Out_Cold> lspci -v
<stefg> aplay -l
<dtchen> For modern laptops and netbooks, we're dealing essentially with HDA codecs and controllers, and that brings new classes of headaches.
<dtchen> One of the reasons for so many regressions between Ubuntu Gutsy and Ubuntu Intrepid was the tightening of codec enforcement.
<dtchen> This means that features were moved out of the generic driver/parser into codec-specific patch files (you can see these in the Linux source, sound/pci/hda/patch_*.c)
<dtchen> Further regressions between Intrepid and Jaunty, e.g., internal microphones not working, have been caused by an infrastructure extension
<dtchen> It used to be that jack-sensing was strictly tied to the driver and could not be manipulated by userspace programs. As of Karmic, that is no longer the case.
<dtchen> (e.g., when you insert headphones, your laptop's internal speakers mute)
<dtchen> So, now i'll cover the process from cold boot to GNOME session log in for Ubuntu Jaunty.
<dtchen> When you power on your laptop, your BIOS either programs the HDA codec for you, or it does not. Whether it does depends solely on the OEM making the machine.
<dtchen> Let's say you have a BIOS that programs the HDA codec for you, and it does so correctly. Life is good; you hear the drum sound for GDM; you login, hear the login sound, and continue on your merry way.
<dtchen> Let's say you have a BIOS that programs the HDA codec for you incorrectly, e.g., flipping two of the initialisation verbs so your headphone jack does nothing.
<dtchen> Here's how the ALSA driver works:
<dtchen> udev will match the modalias for your vendor and device and load the appropriate codec and controller kernel modules
<dtchen> once the controller module initialises, it runs through the generic parser unless it sees a more specific match (which actually short-circuits the match)
<dtchen> once the specific match is made, the appropriate patch path for your HDA codec is used
<dtchen> at this point, things get interesting: if there's a BIOS setup of the verb tables, that existing setup is used UNLESS there's a hard-coded model quirk passed via the command line (e.g., model=foo) or there's a hard-coded model quirk in the driver source itself
<dtchen> essentially, the order is always:
<dtchen> 0. use passed quirk
<dtchen> 1. use driver source quirk
<dtchen> 2. use existing verb table state
<dtchen> Note that (2) does not imply that the codec was correctly configured!
<dtchen> (the driver has no way to know if what exists is correct)
<dtchen> So, if your BIOS unluckily configures the table incorrectly, you stand a chance to reconfigure it on-the-fly using a tool called hda-verb.
<maco> dtchen: glossary request: <limcore> what is this "verb"
<dtchen> you need to load snd-hwdep to use hda-verb
<dtchen> verb tables are essentially "initial states"
<dtchen> aka "set this pin to route here"
<dtchen> the HDA specification has a whole list of verbs/commands
<limcore> and each sound card + main board  pair  needs some proper setup "verb"?
<dtchen> Now, we can move on to the heart of the discussion, which is triaging
<zyb> verb from german Verbindung =Connection ?
<bcurtiswx> questions in #ubuntu-classroom-chat please
<dtchen> let's return to the list above:
<dtchen> 18:27 < dtchen> 0. sound muted bugs
<dtchen> 18:27 < dtchen> 1. audio anomaly (crackling, popping) bugs
<dtchen> 18:27 < dtchen> 2. general infrastructure bugs
<dtchen> The first thing to remember when you're triaging sound bugs is that you may be dealing with multiple parts of the stack:
<dtchen> 18:07 < dtchen> - Rhythmbox -
<dtchen> 18:07 < dtchen> - GStreamer -
<dtchen> 18:07 < dtchen> - PulseAudio -
<dtchen> 18:07 < dtchen> - ALSA (-lib, userspace) -
<dtchen> 18:08 < dtchen> - ALSA (linux, kernelspace) -
<dtchen> 18:08 < dtchen> - hardware -
<dtchen> Realising that, the first action is to identify which part(s) of the stack are pertinent
<dtchen> After identifying which parts of the stack are pertinent, open a task for each portion of the stack
<dtchen> for simplicity, i'll use the following source packages:
<dtchen> kernelspace/driver -> linux
<dtchen> userspace/-lib -> alsa-lib or alsa-plugins
<dtchen> the rest are self-explanatory, so let's focus on how to differentiate between linux, alsa-lib, and alsa-plugins
<dtchen> first of all, please don't triage bugs against alsa-driver when you see them opened by apport
<dtchen> instead, please migrate them to linux
<dtchen> the alsa-driver source package is to be used only when the bug reporter has either explicitly mentioned using module-assistant with alsa-source or mentioned a bug in the modprobe.d conffiles associated with ALSA (linux-sound-base and/or alsa-base)
<dtchen> so, a typical work flow might be:
<dtchen> user A: my sound doesn't work!
<dtchen> brave triager: please file a bug using "ubuntu-bug alsa-base"
<dtchen> user A: ok, see bug #7000000
<dtchen> brave triager: ok, i'm moving bug #7000000 to affect linux instead of alsa-driver
<dtchen> ok, with that covered, let's cover the easiest part first:
<dtchen> alsa-plugins bugs are ones like "Skype didn't work until I downloaded V2.1"
<dtchen> or "OpenArena explodes when I use PulseAudio" (thanks, fta)
<dtchen> or "32-bit Adobe Flash on my 64-bit machine makes a spoo noise, and my cat died"
<dtchen> In other words, alsa-plugins are ones where the PulseAudio reroute is clearly to blame
#ubuntu-classroom 2009-08-29
<dtchen> cf. /usr/share/alsa/pulse*
<dtchen> please note that Kubuntu and Xubuntu don't use PA by default, so they're fairly unique to Ubuntu, Edubuntu, Ubuntu Studio, ...
<maco> <limcore> where is PA reroute to blame?  are there some tools to show exact patch of sound like  app --> allegro -> alsa --> PA --> alsa and that allow me to for example dump the sound stream at given point to see who messes up?
<maco> dtchen: er...ubuntu studio doesnt use PA either. its jack, remember?
<dtchen> there's nothing quite like what limcore alluded to
<dtchen> performing a "tracepath" or "traceroute" of audio is fairly labour-intensive ATM
<dtchen> the PA reroute can be identified as the culprit in SOME instances by using ALSA directly instead of PA
<dtchen> e.g., using "arecord -twav foo.wav" results in horrible distortion, but "arecord -Dplug:front:0 -twav foo.wav" is quite clear
<dtchen> in the first instance, arecord uses the default device, which routes through PA; in the second instance, arecord uses alsa-lib's front virtual device on card 0, bypassing PA altogether
<dtchen> maco: JACK is one component shipped in Ubuntu Studio. PA is still present.
<dtchen> alsa-lib bugs are more subtle but tend to be more catastrophic
<dtchen> e.g., bug 412677
<bcurtiswx> ubot4: Launchpad bug 412677 in alsa-lib "pulseaudio crashed with SIGFPE in snd_pcm_mmap_begin()" [Medium,Triaged] https://launchpad.net/bugs/412677
<bcurtiswx> :D
<dtchen> in that bug, it's not altogether clear whether the driver should be enforcing a minimum buffer_size or whether the userspace library should refuse to return mmapped region
<dtchen> neither is ideal, but the crash is difficult to trigger, and so in the context for Karmic, we'll simply propagate the error back up to PA, which will try again
<DarwinSurvivor> is there any way to make the permissions-selector-list wider? I can't read 3/4 of the permissions!
<DarwinSurvivor> oops, wrong channel :( , sorry
<dtchen> linux bugs are good defaults, which is why alsa-driver and linux tend to end up with most bugs
<maco> <limcore> ok so how to test if my game (say OpenArena) has sound problems because of PA or alsa kernel driver?   killall pulseaudio and restart my game, or something more clever?  Please present the commands one should enter to test
<dtchen> linux bugs are almost always restricted to hardware-enablement, e.g., "my speakers don't mute when I insert headphones unless I pass model=foobar"
<dtchen> limcore: generally you'll want to identify whether it's alsa-plugins or PA, not linux or PA
<dtchen> if it's linux, you'll see the symptoms regardless whether ALSA directly (no PA) or PA is used
<dtchen> i think what you meant to ask is "how do i disable PA to test whether it's to blame?"
<dtchen> in that case, you can do the following:
<dtchen> echo autospawn = no|tee -a ~/.pulse/client.conf
<dtchen> killall pulseaudio
<dtchen> so now that we have a better idea of how to assign tasks to the audio bugs, we can consider the symptoms themselves
<dtchen> all Linux distributions using ALSA face the same classes of sound bugs, so a few of us prototyped a shell script to cull as much relevant information as possible
<dtchen> it's now maintained upstream at http://www.alsa-project.org/alsa-info.sh as a bash script, but i understand there's movement at Canonical to remove the cruft in it
<dtchen> also, to avoid having to fetch alsa-info.sh each time, mdz added apport hooks to accomplish a subset of the functions
<dtchen> if you feel like contributing, a good place to start is by porting the functionality to alsa-base's and linux's apport hooks
<dtchen> let's review what we've covered
<dtchen> first, identify which part(s) of the audio stack are involved. then, open tasks in the bug.
<bcurtiswx> andresmujica: dtchen: any plans to develop a symptom based apport hook?
<dtchen> second, if the user has not already contributed information using ubuntu-bug, apport-collect, or the alsa-info.sh script, then ask for that information.
<dtchen> andresmujica: i'd love to see others help there
<dtchen> any questions regarding basic sound triaging? we'll continue shortly if there aren't any.
<andresmujica> (18:20:38) kermiac: so should i run the "alsa-info.sh" script even though I have used apport to collect the relevant info for my bug report?
<dtchen> kermiac: there's generally no need to; if there is, someone will ask for it
<dtchen> (where the someone is generally someone on the kernel team, or me, or upstream)
<dtchen> ok, so let's discuss symptoms. remember the three major classes:
<dtchen> 18:27 < dtchen> 0. sound muted bugs
<dtchen> 18:27 < dtchen> 1. audio anomaly (crackling, popping) bugs
<dtchen> 18:27 < dtchen> 2. general infrastructure bugs
<dtchen> (0) is pretty straightforward from a triaging perspective
<dtchen> look at the Card*.Amixer.values.txt in the bug attachment
<dtchen> or the relevant section in the alsa-info.txt
<dtchen> because there's not one common set of mixer elements, you just have to learn which ones are important based on the codec
<dtchen> BTW, mapping mixer elements to codecs is highly useful; a wiki page could be a prelim DB
<maco> you mean saying things like how on my laptop the headphones are actually called Surround?
<dtchen> in general, you want to look at 'Master', 'PCM', 'Wave', 'Front', 'Surround', 'Headphone', 'Speaker'
<dtchen> note that not all codecs will have all (or any!) of those elements
<dtchen> in upstream-speak, it's the mixer confusion, and it's one thing that PA is addressing via another mixer abstraction layer
<dtchen> any/all of the playback toggles and/or levels for 'Master', 'PCM', 'Wave', 'Front', 'Surround', 'Headphone', 'Speaker' may be set to zero and/or mute
<dtchen> in that case, ask for them to be unmuted and raised
<dtchen> e.g., "I see your PCM is set to zero and muted; please see if raising the level and unmuting results in audible sound"
<dtchen> now for the fun part: how does one decide whether it's PA or alsa-utils?
<dtchen> note that PA starts on session login, so if the person reboots but does not log in via GDM (instead using tty1, ctrl+alt+F1), it should be easy to pinpoint whether PA is restoring incorrect levels
<dtchen> e.g., login on tty, look at alsamixer
<dtchen> tty1*
<andresmujica>  zyb: But what if the important mixer isn't even displayed, because its "chan1"?  or is that in the files anyway?
<maco> oh
<maco> (wrong window)
<dtchen> zyb: please clarify to what chan1 refers
<zyb> Thats it! One Name meaningless to all but the developer that chose it
<dtchen> zyb: as of Jaunty, by default alsamixer and amixer expose the ALSA-lib view, not the PA view
<zyb> and therefore not supported by any program
<dtchen> in Intrepid, there was some confusion, so one needed to use alsamixer -Dhw:0
<maco> dtchen: i think he means what if there's some mixer element that is the issue but isnt named PCM or Front or one of those common ones...how do you know it's the issue? and what if mixers dont show it by default? (since the gui mixers only show "important" ones by default)
<dtchen> zyb: then someone needs to stab repeatedly until it's fixed in the source code
<dtchen> zyb: there's a lot of trial and error in debugging the new codecs
<dtchen> sometimes even older ones, e.g., the latest alsa-utils upload
<dtchen> any further questions?
<bcurtiswx> nothing so far dtchen
<bcurtiswx> is there a wiki page with all of this valuable information?
<dtchen> ok, moving on to (1), which is almost always linux and lower in the stack, i.e., you're looking at crack hardware and insufficient driver workarounds
<dtchen> note that other peripherals, like the bus latency of video devices, can affect (1)
<dtchen> i'm about to submit a patch against our linux source that should help in one aspect by increasing the default preallocation buffer size to 2 MB instead of 64 KB
<dtchen> other distributions have done similarly, choosing something between 1 MB and 2 MB inclusive
<dtchen> rtkit in Karmic will also help if the necessary linux patches are merged (they're being discussed ATM)
<dtchen> these symptoms are less prevalent in Karmic but fairly evident using PA in Jaunty
<maco> #define rtkit?
<dtchen> "apt-cache show rtkit"
<maco> oh its a package. ok
<dtchen> any questions on debugging (1)?
<andresmujica> is this related to that ? pulseaudio[4959]: alsa-sink.c: Increasing minimal latency to 76,00 ms
<dtchen> andresmujica: yes, it is related
<dtchen> essentially your hardware requires a higher watermark, so PA adjusts for you and will buffer more
<dtchen> if it holds steady, it will attempt to decrease
<andresmujica> VoIP suffers A LOT from this... and with the VoIP high CPU requirements for VoIP codecs, i'm worried about VoIP in Linux...
<dtchen> well, for people who MUST use Skype, use the new Skype with PA support.
<andresmujica> i mean corporate VoIP ...
<andresmujica> not skype..
<andresmujica> but that's a different story..
<dtchen> andresmujica: there are workarounds, like disabling glitch-free and flatvol
<dtchen> it's really hard to anticipate all sorts of broken hardware combinations
<andresmujica> so PA shows more clearly the HW problems not detected previously by alsa?
<maco> yeah
<dtchen> no, they were always there in ALSA
<dtchen> i really can't emphasise that enough
<dtchen> e.g., it's not as if that fpe bug would not have existed if PA hadn't existed :-)
<maco> dtchen: but whether they were *noticed* or not...?
<dtchen> ok, so to cover (2): general infrastructure bugs are ones like ia32-libs/alsa-plugins/pulseaudio, or using PA on Kubuntu/Xubuntu/Ubuntu Studio
<dtchen> these are situations where volume controls are not present in the default distro
<dtchen> these are mostly Low- or Wishlist-priority bugs
<dtchen> the obvious usability perspective is important, but people need to step in to help resolve those
<dtchen> lastly, what's in store for Karmic{,+1} :
<dtchen> it's important to track the ~ubuntu-audio-dev PPA and continue to file bugs
<dtchen> for the purpose of PulseAudio, it is legitimate to file bugs UNTIL Karmic's release against the PPA version
<dtchen> at the point of Karmic's release in October, bugs filed against the PPA version of PA will be Invalidated
<dtchen> it's important to note that this policy is ONLY valid for PA in Karmic and ONLY while Karmic is open for development
<dtchen> currently, there are a couple of high priority bugs for PA: session state confusion, i.e., volume being muted on session login
<dtchen> also, device enumeration
<dtchen> any questions in conclusion?
<andresmujica> what about upstreaming PA bugs ?  is there a policy for that? when it should be done?
<dtchen> andresmujica: users tend to do that; distros tend to use pulseaudio-discuss
<zyb> something about karmic+1? Was mentioned at beginning
<dtchen> andresmujica: i see nothing wrong with encouraging individual users to do so, but many of our changes were Ubuntu-specific
<dtchen> zyb: there's a lot on the plate for +1 : native multiarch, power-down configurations, "tracing sound routes"
<zyb> tracing like traceroute? cool!!
<dtchen> bcurtiswx: no, but one of the reasons i opted for a lot of background info is to enable wikifying the info
<dtchen> anyhow, if there are no further questions, i'm happy to head out. thanks, everyone!
<kermiac> thanks dtchen
<andresmujica> thanks to you dtchen!! thanks for your time!
<bcurtiswx> dtchen: cool thx
<dtchen> i've pasted the irc log in https://wiki.ubuntu.com/Packaging/Training/Logs/2009-08-28
<dtchen> if someone wants to clean it up, feel free
<jawnsy> dtchen: thanks :-) I actually didn't know this session was happening but I'm happy I was here, some interesting stuff discussed :-)
<Out_Cold> thanks
<hggdh> er. Where can I find the logs for the classroom?
<kermiac> https://wiki.ubuntu.com/Packaging/Training/Logs/2009-08-28
<nhandler> hggdh: Logs from the packaging training sessions are on https://wiki.ubuntu.com/Packaging/Training/Logs
<hggdh> nhandler, I was actually looking for the logs from Dan's training
<hggdh> just got home, and wanted to look at them
<hggdh> ah
<hggdh> sorry
<hggdh> can I (later on) reposition them under the bug knowledge wiki?
<nhandler> hggdh: Just link to them from the bug knowledge wiki (or use the Include tag). No need to actually move it
<hggdh> right
<jopojop> hello
<jopojop> testi
<tim_> Is there anyway to review the Ubuntu Developer Week sessions if you can't attend the specified timeslot?
<porthose> tim_, yes the IRC logs should be available
<nhandler> tim_: Clicking on a session in the table on https://wiki.ubuntu.com/UbuntuDeveloperWeek will take you to the logs once they are posted
<tim_> Sounds great - thanks.  This may be standard operating procedure, but for newbies like me it might be useful to update the wiki with a note explaining what to do if you can't make the timeslot (my apologies if its there and I missed it)
#ubuntu-classroom 2009-08-30
<flicea> Hello?
* 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: Mon 31 Aug - Fri 4 Sept 2009: Ubuntu Developer Week; Fri Sep 4 @ 21:00 UTC: How to run a successful Jam || Run 'date -u' in a terminal to find out the UTC time
<pleia2> hi flicea, next class is dev week coming up on monday :)
<Dicker1> moing moin ^^
<flicea> Hello?
<parkie> Hey is the the place for the ubuntu developer week?
<jawnsy> yup :-)
<jawnsy> the schedule of stuff is here: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<parkie> i have never helped out in something like this ( open source )
<parkie> i know how to code in c++ java...  think i will be  a help
<jawnsy> open source is always in need of help :-)
<jawnsy> parkie: is there a particular session you're interested in attending? or just going to sit in on them?
<parkie> well i think i might just sit in and then if i think i am up to it i could try help
<parkie> i am 2nd year IT student
<parkie> so i have done quite a bit of C++
<parkie> but i would love to get into this, but at first i think i will just sit in a bit
<parkie> jawnsy: what sessions would you say i should sit in on if i want to get started in the this?
<jawnsy> parkie: I'd suggest just sitting in on as many as you have time for, and see what you might be interested in :-)
<parkie> nice
<parkie> will do
<jimsn> hu
<Traveler> hello
<Guest71645> hello
<somaunn> hello everyone
<ikt> hello
<somaunn> hello ikt
<Rish> hi, can anyone help regarding ubuntu development week?
<pleia2> Rish: sure, what do you need help with?
<Rish> pleia2: what's the programme all about and how can I be a part of it
<maco> there should be a schedule somewhere
<pleia2> Rish: you can check out https://wiki.ubuntu.com/UbuntuDeveloperWeek
<maco> a bunch of devs are giving classes on their area of focus, and you can attend in here and then use what you learn to help make ubuntu better
<Rish> maco: did I missed any classes? where is the schedule?
<Rish> pleia2: thankx, But i followed to the irc after that link.
<pleia2> Rish: the schedule is on that page
<pleia2> you haven't missed anything :) it starts tomorrow
<Rish> plia2: gosh! i'm lucky. Just in time!! So, the week is all about learning ubuntu stuff eh?
<pleia2> yep :)
<pleia2> the sessions are held in this channel, and you can join #ubuntu-classroom-chat for discussing the sessions and submitting your questions
<Rish> pleia2: so the expert will be delivering tomorrow for the first time
<pleia2> some of them have done classes in the past
<Rish> tomorrow 16:00 UTC.  which time zone is that? i'm from India
<pleia2> UTC is the time zone
<ulysses__> in terminal: date -u shows the UTC time
<Rish> pleia2: thanks, I wish i could someday develop for ubuntu! I can give anything for that day :)
<Rish> ulysses__:  thanx!
<Rish> can anyone please help me convert 16:00 UTC to my time zone? or else i'll miss the class
<pleia2> Rish: http://timeanddate.com/worldclock/fixedtime.html?month=8&day=31&year=2009&hour=16&min=0&sec=0&p1=0
<Rish> pleia2:  woo, thanks dear! In India, the class is at 9.30 pm. Perfect!
<pleia2> welcome :)
<Rish> pleia2: by the way, just asking, where r u from?
<zubin71> hello
<zubin71> i`d like to know, in how many hours does the first session start?
<ulysses__> the lessons start at 16:00 UTC
<pleia2> zubin71: http://timeanddate.com/worldclock/fixedtime.html?month=8&day=31&year=2009&hour=16&min=0&sec=0&p1=0
<zubin71> ulysses__ : Thank you
<zubin71> pleia2 : Thank you
<illovae> ^^'
<illovae> bonsoir waloo :)
<illovae> ioups sorry wrong canal
<Rish> anyone from India here?
#ubuntu-classroom 2010-09-01
<deepu> wat is mean by .deb and .gz?
#ubuntu-classroom 2010-09-02
<vishu> hey guys
* 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: Packaging Training Session - Current Session: The sponsoring tools in ubuntu-dev-tools - Instructor: tumbleweed
<tumbleweed> ok, time to start, I guess
<tumbleweed> Hi, I am Stefano Rivera ( http://launchpad.net/~stefanor ), a recentish MOTU.
<tumbleweed> Most of what I do at the moment is sponsoring universe packages, so I'm talking about tools to help with sponsoring.
<tumbleweed> I've never given (or even watched) an #ubunt-classroom talk before, but feel free to heckle me via the chat channel (I have a thick skin)
<tumbleweed> I don't think this will be very long (more time for questions), I don't have that much to cover, but here's what I'm planning to talk about: sponsor-patch, ack-sync.
<tumbleweed> I suggest you check out lp:ubuntu-dev-tools and symlink ack-sync to ~/bin. That may also encourage you to contribute :)
<tumbleweed> right, so: Why do we want to use tools to help with sponsorship?
<tumbleweed> 1. They check for the obvious errors (like closing bugs, updating maintainers)
<tumbleweed> 2. They save time (you can do more sporsoring in the same amount of time)
<tumbleweed> 3. You make less mistakes. Personally, I do most of my Ubuntu development on Debian machines (my desktop PCs run Debian), so if I forgot to set DEB_VENDOR=Ubuntu I wouldn't automatically close bugs in changelogs.
<tumbleweed> sponsor-patch:
<tumbleweed> this is a tool recently written by bdrung (who seems to be on holiday atm)
<tumbleweed> You call it with a bug number, and it'll download the patch, the source, apply it, test build it, and ask you to confirm the upload.
<tumbleweed> For SRUs or other situations with multiple tasks / patches, you'll be prompted to select.
<tumbleweed> Example:
<tumbleweed> 1. I find this bug on the sponsor list http://launchpad.net/bugs/584997
<tumbleweed> 2. I read the bug, scan the patch, and see that it's good to go. (it seems a bit over the top to introduce quilt, but it's already got SRU approval)
<tumbleweed> 3. I call sponsor-patch -e 584997
<tumbleweed> err, -s
<tumbleweed> 4. http://paste.ubuntu.com/487288/
<tumbleweed> 5. You can see that I run into a mistake by the patch-author, so I fix it and let it try again.
<tumbleweed> 6. I read the debdiff and lintian output, and approve the upload
<tumbleweed> 7. mark uploaded on LP, manually, and unsubscribe sponsors
<tumbleweed> that's that, and it's all quite quick and painless. I find it faster than pulling source packages and curl | patch -p1
<tumbleweed> ack-sync:
<tumbleweed> ack-sync is pretty much the same thing, but for sync requests. It uses syncpackage to prepare a sync from debian, and (if it builds) allow you to upload to ubuntu.
<tumbleweed> there is still some uncertainty around whether syncpackage is archive-admin-friendly or not, but I haven't done any damage with it (yet?) so I'm using it until someone tells us not to.
<tumbleweed> If you don't approve of syncpackage, you could just not allow ack-sync to do the upload, and manually mark it ACKed.
<tumbleweed> The process:
<tumbleweed> 1. ack-sync $BUGNUMBER
<tumbleweed> ack-sync will find who requested the sync, and set them as the uploader for the synced package. It'll mark the bug as being "In progress" by you, and unsubscribe ubuntu-sponsors
<tumbleweed> once built, if you approve the upload, it'll mark it "Fix Committed"
<tumbleweed> (pretend those were numbered points)
<tumbleweed> ack-sync can take multiple bug numbers if you have a big pile of syncs to review, so reviewing syncs can be quite quick
<tumbleweed> one issue you may run into: If the sync requester doesn't have a public e-mail address on launchpad (and isn't an ubuntu member - who would have an ubuntu.com address), then it'll abort because it needs an e-mail address for the .changes
<tumbleweed> you can create a CSV file (Name, e-mail address) for such people as you encounter them. It'll read ~/.ack-sync-email.list
<tumbleweed> obviously we do more review on syncs than just testing that they build.
<tumbleweed> Personally, I use grab-merge to pull the debian and ubuntu source (and pre-generated patches)
<tumbleweed> Recently, when MoM was on an extended holiday (downtime) I wrote a tool that is equivalent to grab-merge, but uses the UDD branches we have for every package in Debian/Ubuntu (almost every package, some are out of date)
<tumbleweed> lp:~stefanor/ubuntu-dev-tools/grab-udd-merge
<tumbleweed> it does a bzr checkout of both the Debian and Ubuntu UDD branches, and performs a merge-package. Then it generates debdiff-like diffs.
<tumbleweed> I find this very useful as a review tool, but I'm a little hesitant about putting it in ubuntu-dev-tools, because I'm not sure we are ready for merge requests to come in the form of bzr branches
<tumbleweed> they are hard to review in launchpad's merge review system, because we are normally more interested in the diffs against debian than the diff against the previous ubuntu version
<tumbleweed> grab-udd-merge can be used to review such merges (it'll generate the patches you want to see), call grab-udd-merge lp:~some-developer/some-package/merge-XXXXX
<tumbleweed> and that's about all the material I have to cover. Questions?
<tumbleweed> the bot doesn't seem to have any questions for me (was anyone even listening?). Feel free to heckle me about this stuff any time :)
<ClassBot> There are are 10 minutes remaining in the current session.
<ClassBot> There are are 5 minutes remaining in the current session.
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - http://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi
#ubuntu-classroom 2010-09-03
<yahman> is this the Ubuntu App Developer chat room?
<yahman> hello
#ubuntu-classroom 2010-09-04
<small> i need help on networking please help
#ubuntu-classroom 2011-08-29
<MakMakana> any 1
#ubuntu-classroom 2011-08-31
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Current Session: Lernid Testing Session - Instructors: jsjgruber - Slides: http://is.gd/oEtjZB
<ClassBot> Slides for Lernid Testing Session: https://sites.google.com/site/gruberdocuments/engineering-docs/Lernid0.8.2.pdf
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/09/01/%23ubuntu-classroom.html following the conclusion of the session.
#ubuntu-classroom 2011-09-01
<pleia2> Hi everyone :)
<pleia2> anyone here for the lernid testing?
<pleia2> (this channel isn't moderated at the moment)
<jsjgruber> Hello everyone. This is a Lernid testing session. I'd like to thank you for joining us.
<jsjgruber> Please speak up in #ubuntu-classroom-chat if you are here to help us test the new version of Lernid--0.8.2
<jsjgruber> I'm going to hope we have some shy people here to give us a hand, and who will speak up if they hae a problem or a question or concern.
<jsjgruber> If you are willing to lend a hand with testing let's double check what version everyone is running. Take a look at the about box. You should be running version 0.8.2.
<jsjgruber> If you aren't, you probably don't have the lernid-proposed ppa installed. To
<jsjgruber> install start a termianl session with CTRL-ALT-T (CTRL and ALT held, then T)
<jsjgruber> and enter the commands:
<jsjgruber> sudo add-apt-repository ppa:jsjgruber/lernid-proposed
<jsjgruber> sudo apt-get update
<jsjgruber> sudo apt-get install lernid
<jsjgruber> Then you can check your lernid version with the command:
<jsjgruber> dpkg -s lernid
<jsjgruber> and you should see the version is 0.8.2
<jsjgruber> Looking at the schedule tab. Do you see my text in bold (I should be using JSJGruber rather than the
<jsjgruber> jsjgruber in the calendar. Am I listed as jsjgruber in the schedule
<jsjgruber> widget? Is my name there in a smaller font? Thanks to Mohammad AbuShady
<jsjgruber> (coalwater) for allowing the bolding, etc., work without reference
<jsjgruber> to whether the names are upper, lower, or mixed case.
<JsJgruber> Sorry, I forgot to change to JsJgruber. I should still be in bold in the classroom session.
<JsJgruber> Ok.  Try Event->Open URL...> launchpad.net/lernid . That should now work
<JsJgruber> without putting "http://" on the front. Thanks fo to Diagenese for this.
<JsJgruber> Thanks *go* to Diogenese for this, that is.
<JsJgruber> Please go to wcarc.bgsu.edu and I'll check the website logs to check this. Coalwater
<JsJgruber> again helped out by providing this fix.
<JsJgruber> That last is to check the change from Coalwater for the Useragent, it has listed Safari, and now should say Lernid
<JsJgruber> Next I'll ask you to disconnect and reconnect. Let me mention first what to
<JsJgruber> expect.
<JsJgruber> You should be getting just two choices when connecting, one for
<JsJgruber> #ubuntu-classroom and one for #ubuntu-charlas (spanish)
<JsJgruber> Pay attention to how long it takes for the connection dialog box to disappear,
<JsJgruber> and to the notification message about asking questions in the chat.
<JsJgruber> The connection dialog box should go away quickly and
<JsJgruber> you should see slide progress appear in the status bar. If you click in the
<JsJgruber> lernid window it shouldn't go gray.
<JsJgruber> The notification should say to prefix questions with "QUESTION:" rather than
<JsJgruber> "question:", thanks again to Coalwater.
<JsJgruber> Please go ahead. I'll wait about 2 minutes.
<JsJgruber> Did the dialog box disappear right away? Did the messages say QUESTION rather than Question?
<JsJgruber> Down below you should see a control for turning on the prefix and "QUESTION"
<JsJgruber> should be upper case there, too. It should look like all the text
<JsJgruber> throughout the Lernid window. Click on "QUESTION" and it should toggle
<JsJgruber> the checkmark. You should also see a tooltip come up if you hover over
<JsJgruber> QUESTION or the checkmark. That message should mention "QUESTION" (in upper
<JsJgruber> case).
<JsJgruber> Does it check out?
<ClassBot> pleia2-lucid asked: ââdo you like cats?
<JsJgruber> Let's check out a contribution from a long time Lernid contributor.
<JsJgruber> Please go to the Edit->Preferences dialog and turn on the new
<JsJgruber> O"pen presentation links in default browser" choice. I'll post a link:
<JsJgruber> I'll give everyone a  few second to set the preference.
<JsJgruber> http://ubuntu.com
<JsJgruber> That should have opened the link in Firefox or whatever browser you use (in a new tab)
<holstein> JsJgruber: give me a few ticks...
<holstein> OK... can you relink ?
<JsJgruber> Sure.
<JsJgruber> http://ubuntu.com
<JsJgruber> Did that work, hostein?
<holstein> JsJgruber: yup
<JsJgruber> Excellent.
<holstein> slick :)
<JsJgruber> Please remember to unclick the preference again if you want presentations to be shown in the lernid browser window. Thanks to enli for this feature
<JsJgruber> (Peeyoosh Sangolekar).
<JsJgruber> Please check the label on the classroom and chatroom panels. The classroom
<JsJgruber> names should be normal text rather than bold, and should contain the whole
<JsJgruber> name--#ubuntu-classroom and #ubuntu-classroom-chat.
<holstein> JsJgruber: thats seems like what i have... unless im just overlooking something obvious
<JsJgruber> holstein, if you are running the new version that is what is expected--very good.
<JsJgruber> I'll wait a few more seconds for people to uncheck the option.
<lajjr> my version is 0.8.2.1~lp1+228+245+201108290226~natty1
<holstein> http://imagebin.org/170487 just in case...
<holstein> i do see *some* things in bold
<JsJgruber> you should see what I type in bold, but not what you type. We are looking at Lernid's ability to distinguish the commands and output of the prople scheduled to instruct a class.
<pleia2> I'm bold too because I'm a helper
<holstein> cool... thats what im getting then... and im unchecked now as well
<JsJgruber> I'll post another command and let's see if another set of slides come up.
<JsJgruber> This should bring up a lengthly slide load, with a progress message
<JsJgruber> below, on the left. While it loads you should be able to click around
<JsJgruber> lernid without making it go gray.
<JsJgruber> This may take a while to load.
<JsJgruber> [slidefile http://www.gnu.org/software/guile-gnome/docs/gtk/guile-gnome-gtk.pdf 1]
<JsJgruber> This should still show up.
<JsJgruber> How did it go?
<JsJgruber> This should be bold!
<johnsgruber_> This should not be bold
<johnsgruber_>  [slidefile http://www.gnu.org/software/guile-gnome/docs/gtk/guile-gnome-gtk.pdf 1]
<JsJgruber> The slide file should be reloading again, even though johnsgruber_ wasn't scheduled to be an instructor and isn't in the schedule.
<JsJgruber> Did that work?
<JsJgruber> [slidefile https://sites.google.com/site/gruberdocuments/engineering-docs/lernid 0.8.2.pdf]
<JsJgruber> [slidefile http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf]
<JsJgruber> This should be in bold, though.
<JsJgruber> Now for something different. Let's look at the schedule tab again.
<JsJgruber> Please click the button under the slides. Your browser should open the
<JsJgruber> slides in a new window.
<johnsgruber_>  [slidefile http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf]
<johnsgruber_>   [slidefile http://www.gnu.org/software/guile-gnome/docs/gtk/guile-gnome-gtk.pdf 1
<ClassBot> There are 10 minutes remaining in the current session.
<johnsgruber_>   [slidefile http://www.gnu.org/software/guile-gnome/docs/gtk/guile-gnome-gtk.pdf 1]
<JsJgruber> Any questions from anyone?
<ClassBot> Unit19320 asked: ââWill we be able to change "Real Name" before connect?
<ClassBot> There are 5 minutes remaining in the current session.
<JsJgruber> I'm not sure I understand, but if you mean an irc setting for your real name, we don't have any plans to add any more of that sort of thing at present. You can always file a blueprint (or for simple things, a wishlist bug)
<ClassBot> lajjr98 asked: ââYes is possible to open up the pdf in the session?
<JsJgruber> Not at this time.
<JsJgruber> People should be seeing the questions posted by classbot in italics, my answers in bold.
<ClassBot> lajjr98 asked: ââlike a tab like schedule etc? ?maybe?
<JsJgruber> The hope is that if people want to look at the slides at their own pace, or later, they can open them through their browser and bookmark or save them.
<johnsgruber_>  [slidefile http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf]
<JsJgruber> http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf
 * lajjr says brb
<JsJgruber> [slidefile http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf]
<JsJgruber> [slidefile http://people.ubuntu.com/~lyz/slides/Launchpad_GPG_Key_Basics.pdf]
<JsJgruber> [slidefile https://sites.google.com/site/gruberdocuments/engineering-docs/lernid 0.8.2.pdf]
<JsJgruber> [slidefile http://www.gnu.org/software/guile-gnome/docs/gtk/guile-gnome-gtk.pdf 3]
<JsJgruber> Let's go on to stopping and starting lernid and using its options.
<JsJgruber> It might be trouble because we will be out of contact some of the time.
<JsJgruber> Now let's try a couple of things that will require us to restart lernid
<JsJgruber> from a terminal. To bring up a terminal you can type: CTRL-ALT-T .
<JsJgruber> (Hold Control and Alt, and hold them while then pressing the T button).
<JsJgruber> Quit lernid and then restart it from the window using the -v and
<JsJgruber> --avoid-desktopcouch options : lernid -v --avoid-desktopcouch
<JsJgruber> While it is running you should see messages, in the terminal window each
<JsJgruber> time while lernid starts up, but not when a message comes in. If you
<JsJgruber> stop and start lernid in this mode you will see that the window size
<JsJgruber> and size of the panes is not remembered between starts.
<JsJgruber> Restart it again, using the option: lernid -d
<JsJgruber> You should see all of the above messages, plus additional ones each time
<JsJgruber> a message is posted to the classroom or chatroom.
<JsJgruber> I'll wait a couple of minutes for each of you to start and restart lernid
<JsJgruber> I'll wait another minute or so. It can take time to restart lernid.
<JsJgruber> Are people back?
<JsJgruber> After the session, try the #ubuntu-charlas choice for connecting. The
<JsJgruber> word QUESTION should change everywhere to the Spanish equivalent.
<JsJgruber> Please send me a note at johnsgruber@gmail.com if you run into further
<JsJgruber> problems while testing lernid, or file a bug against it.
<JsJgruber> Any last questions?
<JsJgruber> If there are no more questions I guess we should call it a day? I'll stick around a few minutes in chat, anyway.
<JsJgruber> Thank you very much for helping us test lernid!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/06/06/%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 ||
<JsJgruber> Looks like ClassBot is confused by duplicate session names--noting the date on the irclogs message.
<learner> may i ask a question?
<learner> anyone here?
<learner> i am here on behalf of my frnd. who is using ubuntu 10.10. he has configured internet mobil connection (reliance netconnect) and gprs conection it was working fine sudennly yesterday he is not able to connect and there is a exclamation mark in his network applet saying tat network manager is not running.
<pleia2> learner: this channel is for hosted classes, you want #ubuntu for support
<learner> pleia2: thanks i m new to irc..how can i learn frm this class is der any class going on right now
<pleia2> learner: no classes going on right now, the schedule is the link in the channel topic: http://is.gd/8rtIi
#ubuntu-classroom 2011-09-02
<kayabob> hey anyone online
#ubuntu-classroom 2011-09-03
<Vishrut> !q
<ubot2`> Factoid 'q' not found
<Vishrut> +m
<Vishrut> #ubunutu classroom
<Vishrut> logout
<jsjgruber> We are testing Lernid 0.8.2.1 in the lernid-proposed ppa. If anyone wants to join us, here are the commands to use to add the lernid-proposed ppa:
<jsjgruber> sudo add-apt-repository ppa:jsjgruber/lernid-proposed
<jsjgruber> sudo apt-get update
<jsjgruber> sudo apt-get install lernid
<jsjgruber> Do you see my text in bold (I should be using JSJGruber rather than the
<jsjgruber> jsjgruber in the calendar. Am I listed as jsjgruber in the schedule
<jsjgruber> widget? Is my name there in a smaller font? Thanks to Mohammad AbuShady
<jsjgruber> (coalwater) for allowing the bolding, etc., work without reference
<jsjgruber> to whether the names are upper, lower, or mixed case.
<JSJGruber> I just changed my nick to JSJGruber
<JSJGruber> Anyone restarting will probably see my messages as coming from JSJGruber, and, if using the special config we have for testing today, my text should be bold.
<JSJGruber> Try Event->Open URL...> launchpad.net/lernid . That should now work
<JSJGruber> without putting "http://" on the front. Thanks fo to Diagenese for this.
<JSJGruber> Go to wcarc.bgsu.edu and I'll check the website logs to check this. Coalwater
<JSJGruber> again helped out by providing this fix.
<JSJGruber> I'll be looking there to make sure that the user-agent has changed from Safari to Lernid
<JSJGruber> The notification should say to prefix questions with "QUESTION:" rather than
<JSJGruber> "question:", thanks again to Coalwater.
<JSJGruber> http://wiki.ubuntu.com
<JSJGruber> Please remember to unclick the preference again if you want presentations to be shown in the lernid browser window. Thanks to enli for this feature
<JSJGruber> (Peeyoosh Sangolekar).
<JSJGruber> [slidefile https://sites.google.com/site/gruberdocuments/engineering-docs/lernid 0.8.2.pdf 2]
<JSJGruber> [slidefile https://sites.google.com/site/gruberdocuments/engineering-docs/lernid0.8.2.pdf 2]
<JSJGruber> [slidefile https://sites.google.com/site/gruberdocuments/engineering-docs/Lernid0.8.2.pdf 2]
<JSJGruber> The slidefile command is useful for someone who wants to change slides within a session, before only one slide file could be used for a session and had to be in the calendar before people started lernid up.
<JSJGruber> While lernid is running from a terminal with the -v option you  should see debugging message when it works to connect you to the classroom ,etc, but none once connected unless there are errors.
<JSJGruber> If you connect with the -d option you should see message on the terminal every time a message is sent or received, or someone joins or leaves the classroom or chatroom.
<JSJGruber> Thanks for helping me test.
<wangerin> Hi. Some time ago there was a lerid-session where the presenter had a setup where ha was displaying a screen-session to the connected users. Who was this? And is it possible to get the configurations of this setup? Thanx
#ubuntu-classroom 2011-09-04
<rigved> help
#ubuntu-classroom 2012-08-27
<joaopaulo> Hello!
<shookees> hoi everyone
<rsajdok>  /quit
<peaches> well this seems to work...
<Andy-D> peaches: does this look anything like the 'missing archives' error you were getting with firefox? http://askubuntu.com/questions/134437/i-can-not-update-or-upgrade-from-11-10-how-can-i-troubleshoot-this
<peaches> nope
<jmartin> hello
<jmartin> hello
<TheLordOfTime> hello.
<jmartin> whats up?
<jmartin> are you a Ubuntu dev? or are you just here to learn?
<TheLordOfTime> oh i'm here to learn
<TheLordOfTime> and lurk
 * TheLordOfTime lurks here all the time :p
 * TheLordOfTime goes to lurkmode
<jmartin> sweet, I am hoping to absorb some knowledge
<jmartin> quitter...
<jmartin> 98 people here and nobodies conversing.
<jmartin> lets talk 12.10
<TheLordOfTime> jmartin:  there's no sessions, last i checked, not until tomorrow
<TheLordOfTime> :P
 * TheLordOfTime reads his emails
<TheLordOfTime> most of my dev work is actually just bugfixing, but i'm on Bug Squad and Bug Control, so that's a different story.
<jmartin> I don't dev at all- yet. for now im a consumver
<TheLordOfTime> (most of my other work is just prepping these bugs for dev work, aka triaging)
<TheLordOfTime> but that's yet another thing
 * TheLordOfTime returns to lurk mode as he realizes he's being pinged in a different channel
<jmartin> i know there is no session until tomorrow, but im up for a some discussion of what to expect
<TheLordOfTime> define "what to expect"  :P
<jmartin> I have never particapated in one of these before, is it all on IRC?
<TheLordOfTime> yep
<TheLordOfTime> well... dev days is i think
<TheLordOfTime> the developer summits (UDS) are held in person, with remote participation on IRC allowed
<TheLordOfTime> but that's another issue entirely
<TheLordOfTime> dev days, user days...
<TheLordOfTime> probably some other days...
<jmartin> got it
<TheLordOfTime> http://people.ubuntu.com/~nhandler/classroom.html  <-- schedule
<TheLordOfTime> https://wiki.ubuntu.com/UbuntuDeveloperWeek  <-- About Developer Week
<jmartin> sweet, thanks
<TheLordOfTime> i'm likely going to be here wednesday though, for tumbleweed's session on "Fixing small bugs and forwarding the patches upstream"
<TheLordOfTime> but that's because i like to be at those sessions.  I can never learn too much about bugfixing :P
<jmartin> Im interesting in starting dev, and the Ubuntu youth stuff, its never to early to get the younglings on Ubuntu
<jmartin> Well, thanks for the info, I guess I will be back tomorrow
<netzvieh> hello :) i'm not sure if i fully understand the schedule, is each session held twice or are they different?
<pleia2> netzvieh: which schedule are you looking at?
<netzvieh> the one @ https://wiki.ubuntu.com/UbuntuDeveloperWeek
<pleia2> ah, developer week
<pleia2> some are 1 hour long, some are 30 minutes
<pleia2> so the 1 hour ones take up 2 slots
<netzvieh> ah okay, makes sense. thanks :)
<pleia2> sure
<leafarTHENERD> quit
#ubuntu-classroom 2012-08-28
<cc11rocks> I will miss the Ubu Dev Week meetings on here. Will they be posted somewhere (esp. the part of setting everything up and looking through code)?
<tsimpson> cc11rocks: everything in this channel is logged, so you'll find the complete log on irclogs.ubuntu.com
<cc11rocks> Okay, thanks
<cc11rocks> Will the meeting be very detailed or more of an overview?
<tsimpson> at a guess, I'd say more of an overview, but there'll likely be pointers to more information on the web etc
<cc11rocks> Alrightly, thank you
<tsimpson> no problem :)
<Unknown12290> hey
<nkkky> #diaspora
<shivangpatel> Hi...
<ge0rge> less than 4 hours left :)
<shabiitd> watz the starting time in GMT??
<tsimpson> shabiitd: 15:00
<yanko> hello
<Guest30755> when it starts?
<raju> 25 min more
<Guest30755> yes
<PaoloRotolo> Hi all!
<jokerdino> hi PaoloRotolo
<d1xlax> hi
<neoteric> sssh... settle in your seat, it will be starting soon :)
<arvislacis1> Any way how to turn off notifications for logging in and out users?
<arvislacis1> Or nice IRC client for doing that?
<Liverpudlian> Xchat
<thotp> hi everyone :))
<Liverpudlian> XChat
<dholbach> arvislacis1:  /ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS
<arvislacis1> dholbach: Thanks
<dholbach> anytime
<mirba> hola gente
<arvislacis1>  /ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS
<galacticboy> I'm excited open Linux Classroom!
<mirba> hello averybody
<dholbach> arvislacis1, without the leading space
<smartboyhw> Sit back and enjoy:)
<neoteric> dholbach: how do you "unignore" or does it just reset when you leave and rejoin?
<dholbach> neoteric, I guess it resets
<Kace> It doesn't work
<dholbach> some clients might not support it
<Kace> What client are you using?
<dholbach> xchat-gnome
<thotp> it's time
<PaoloRotolo> Smuxi :)
<nohtype> Xchat, right click on #ubuntu-classroom (left menu), Settings, mark Hide Join/Part Messages
<dholbach>  H E L L O   M Y   F R I E N D S !
<obounaim> Hi
<dholbach> Welcome to another Ubuntu Developer Week!
<exodus> dholbach, o/
<sukyjary> hi
<conner_bw> Thanks nohtype!
<bilal> wait, isn't it moderated?
<conner_bw> Was just about to ask.
<roadmr> \o/
* 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> Here we go!
<dholbach> Before we start off, here just a few pointers which should generally help you through the event.
<dholbach> First of all: make sure you also join #ubuntu-classroom-chat
<dholbach> #ubuntu-classroom is just for the session itself, all the chat, discussion and questions happen in #ubuntu-classroom-chat
<dholbach> if you have a question you want to be answered in the session, please prefix it with QUESTION:
<dholbach> ie, QUESTION: Can you recommend any good music for a late-night hacking session?
<dholbach> also have a look at https://wiki.ubuntu.com/UbuntuDeveloperWeek because all the session information is on there
<dholbach> Two questions which come up frequently are: will there be logs?
<dholbach> yes, we will also put them up on https://wiki.ubuntu.com/UbuntuDeveloperWeek/
<dholbach> and the second one is "how can I ignore all the joins/parts of people?"
<dholbach> you can do that by typing "/ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS" into the channel window
<dholbach> without the " obviously
<dholbach> some IRC clients might not support this though
<dholbach> alright - that's everything organisational from me for now
<dholbach> Let's start the first session!
<dholbach> My name is Daniel Holbach, I've been working on Ubuntu for almost all of its life and always loved our Developer community
<dholbach> for a years I've been working for Canonical now, first working on the Desktop, then moving on to work with our Developer community
<dholbach> in this first session I want to give you an overview over how Ubuntu development generally works
<dholbach> there are lots of people, lots of moving parts and it can all seem very confusing, but it's actually fine and quite easy to learn :)
<dholbach> in this first session I just want to give you a broad overview, so you at least heard all the most important things once
<dholbach> and to answer as many questions as we possibly can :)
<dholbach> If I'm too fast or don't make sense, please speak up. :)
<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.
<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> 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> very 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> Also should I note that in the last 2-3 cycles we have been putting together a huge QA lab where tests on all kinds of packages are run, which obviously also help with the release planning. :)
<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/QuantalQuetzal/ReleaseSchedule you can see the release schedule for the current 12.10 release.
<dholbach> You can see that we just went past Feature Freeze.
<dholbach> Feature Freeze is the first big freeze date after the first half of the cycle has passed. At this stage features must be largely implemented.
<dholbach> 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 because many deem it stable enough to play around with it.
<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.
<dholbach> Any questions so far?
<dholbach> Come on, don't be shy. :)
<ClassBot> marcos asked: QA in this context is Question and Answer?
<dholbach> marcos, sorry, I could have made it clearer - no, QA in the sentence above meant "Quality Assurance"
<dholbach> everything that goes from pro-active testing (test suites run automatically and manual testing) to work on bug reports, testing CD images, etc.
<dholbach> QA is what makes Ubuntu not good, but great :)
<ClassBot> conner_bw asked: What is the criteria for " it does not contain any serious problems"
<dholbach> conner_bw, that's not always a clear-cut decision, but data-loss, critical program crashes and things like that certainly count as show-stoppers
<ClassBot> agmenor_ asked: As an app developer, which version should Â I be running ? WhenÂ ?
<dholbach> ClassBot, as an app developer it might be good enough to run the latest stable, which is 12.04, but as somebody who works on Ubuntu itself, it's necessary to run 12.10 - and if only in a virtual machine
<dholbach> you need to be able to test the changes you want to introduce into Ubuntu in a live environment
<ClassBot> paulo_gomes asked: say an application releases a new version of its software after the freeze in ubuntu do we have to wait for the next release?
<dholbach> ClassBot, that depends - if it's early in the cycle it can go in without problems - if it's a bug fix release you can still get it in after the freeze
<dholbach> but the later in the cycle, the harder it will be to get it past the release team
<dholbach> but for a good reason: we need to have time to test things
<dholbach> (I'll talk more about this later on.)
<ClassBot> conner_bw asked: What is the criteria for " it does not contain any serious problems", like i'm using 12.04 and am subscribed to a few bugs which were clearly released anyway (Libre Office Launcher Integration, for example)
<dholbach> conner_bw, sometimes a decision must be made to keep the release rolling out on the right day - it's not always easy
<ClassBot> Liverpudlian asked: Is developing apps different when it comes to LTS versions?
<dholbach> Liverpudlian, LTS versions are of course interesting because many decide to stay on that particular version. So there is more interest of app authors to get their app on the LTS.
<ClassBot> obounaim asked: What is the URL of QA?
<dholbach> obounaim, https://wiki.ubuntu.com/QATeam/ might work as a good introduction into everything the team does.
<ClassBot> dsp__ asked: how to stop all these logs, i just wanna see your chat msgs.... its confusing
<dholbach> dsp__, type "/ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS" into the chat window, but without the "
<ClassBot> C1sM0 asked: Are .deb files created automatically once the source code has been send up?
<dholbach> C1sM0, yes, they land in the queue because we don't have an infinite amount of build machines, but if the queue is largely empty you can expect your package to be built and ready in the archive within an hour
<ClassBot> nja asked: ââWhy does the Work Item Iteration on the Quantal Release Schedule show A-2 at the top instead of A-1?
<dholbach> nja, I assume you are talking about http://status.ubuntu.com/ubuntu-quantal/? I'm not quite sure about this to be honest.
<dholbach> Maybe because Alpha 2 was the last milestone?
<dholbach> Sorry, don't know.
<ClassBot> marcos asked: App Showdown accept closed source and pay applications too?
<dholbach> marcos, not as far as I know, no
<dholbach> maybe we can try to direct our focus away from apps for a little bit - in this session I will try to talk a bit more about the development of Ubuntu itself - although large parts apply for app development and packaging as well
<ClassBot> _et asked: Builds done using which C-I tool?
<dholbach> _et, I don't know C-I tool - all our packages are built on Launchpad, which is an Open Source platform built with Zope and Python - the build process itself uses sbuild
<ClassBot> ziviani asked: who defines the requirements for each GA release? what if some features are no able to be developed until the freezing date?
<dholbach> ziviani, if features can't get done in the cycle, they are dropped and left for next cycle to be implemented.
<dholbach> The decision is made by the release team and the respective team leads.
<ClassBot> nja asked: ââWhy does Lernid have a "Terminal" tab?
<dholbach> nja, when we get to a live demo part you can try out what the presenter is saying live on your system
<ClassBot> smartboyhw asked: Then what about software packaging?
<dholbach> smartboyhw, I'm not quite sure I understand your question. Ubuntu Development is a lot about Software Packaging and its integration with each other. Maybe you can ask another question?
<ClassBot> marcos asked: Update releases (like 12.04.1) accept new features?
<dholbach> marcos, no, it will largely "just" include security and stability fixes, updated translations and the like
<dholbach> it's just impossible to direct your attention to developing two releases (12.04 and 12.10 for example) at the same time
<ClassBot> Henrich asked: how many buildds are there? can we see the list?
<dholbach> Henrich, yes - it's available here: https://launchpad.net/builders/
<dholbach> Alright - that was a true avalanche of questions - thanks everyone! :)
<dholbach> My fingers are aching, but not bleeding yet, so let's keep going.
<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> As you can see on https://uds.ubuntu.com/ the next UDS is going to be in Copenhagen - if you're there, make sure you drop by.
<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. 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.
<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> 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.
<ClassBot> average_drifter asked: I just forked someone's repo of HTOP 1.0.1 from  github, and made a patch, the person merged my patch. how can make sure that this patch gets into the Ubuntu repository together with all the stuff he added ? (he added support for thread monitoring). I'm sure a lot of people know what HTOP is.. it's a pretty good utilitary for monitoring processes(kind of like top)
<dholbach> average_drifter, Great. Just what I wanted to talk about next. :)
<ClassBot> NickE asked: Does Launchpad host everything to do with a given project (unless it is upstream)?
<dholbach> NickE, if you decide to use Launchpad to host your project, you can put all the code branches, the bug reports, translations, the specifications, the releases and support tracker into Launchpad
<dholbach> and if a project decides to not use Launchpad, you can easily set up a code mirror
<dholbach> and daily builds and the like
<ClassBot> raju asked: Whats the ground work have to do , to join in a current running project as  one of its the developer ?
<dholbach> raju, I would always recommend to have a look out (and ask for) some simple bugs you can start working on.
<dholbach> Luckily this week we'll have a session about fixing small bugs in Ubuntu and what to do about them.
<dholbach> Tomorrow, 17:00 UTC.
<dholbach> Alright, since there's so much interest in fixing bugs and getting stuff into Ubuntu, let's talk a bit about it.
<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.
<dholbach> 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> hat 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> In the example I just mentioned it would make sense to ship Ubuntu with the existing version of the project, add the bugfix, get it into Upstream for their next release and ship that (if suitable) in the next Ubuntu release. It would be the best possible compromise and a situation where everybody wins.
<dholbach> More specifically: To fix a bug in Ubuntu, you would first get the source code for the package, then work on the fix, document it so it is easy to understand for other developers and users, then build the package to test it.
<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> If that makes you curious, that's great - I'll give you some links to docs later on. The mechanics of fixing a bug are always the same and you learn the tools pretty quickly. It's sometimes just that you have a particularly tricky bug in front of you. But there's always people who can help you out. :)
<ClassBot> raju asked: Sorry if its sounds like silly doubt but i want to ask it . how a starting user can estimate the Bug strength as simple one or complex one ?
<dholbach> raju, it's sometimes not easy to estimate. It's quite common to think "hah, this one is going to be easy" and then you spend hours on fixing it.
<dholbach> It happens to me all the time. :)
<dholbach> The good thing is though that we picked a bunch of easy to fix tasks, which Stefano will talk about in his session tomorrow
<dholbach> and which are mentioned in the docs I'll point out later on
<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.
<ClassBot> prashanth asked: Where do you usually get the source code?
<dholbach> prashanth: it's all in Launchpad - a quick "apt-get source <package>" or "bzr branch ubuntu:<package>" will get the source for you - but more on that specifically later on :)
<dholbach> When fixing bugs 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 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> More questions? :)
<ClassBot> prashanth asked: where can we get a list of Upstreams?
<dholbach> prashanth: Good question.  To get a page with all info about a package in Ubuntu, you can for example go to https://launchpad.net/ubuntu/+source/gedit
<dholbach> If you go to https://launchpad.net/gedit though (note the missing "ubuntu/+source"), you get the information about Upstream
<ClassBot> geekette86 asked: i wanna know more about  apport-retrace
<dholbach> apport-retrace is a very nice tool - what it does for us is that if a program crashes and it saves a core dump with the current state of the program's used memory, apport-retrace can get us a human-readable output of the crash stacktrace, so the functions which were called in which part of the code, which line, which variables and so on
<dholbach> https://wiki.ubuntu.com/DebuggingProgramCrash has more info about this generally
<ClassBot> Henrich asked: If you find same problem in upstream (e.g. Debian), do you report it to upstream bug tracker? if not, why?
<dholbach> Henrich, yes, you do that if you can be reasonably sure that the problem happens there as well and not because Ubuntu has a modified version of it
<ClassBot> neoteric asked: If source can be mirrored into Launchpad would it then be possible that someone fixes a bug in the LaunchPad version that is not fixed in an Upstream package?  If so, what then?
<dholbach> neoteric, Unfortunately Launchpad can't push code to the Upstream project, so we need to forward patches 'manually'.
<ClassBot> raju asked: please explain more about this " 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"
<ClassBot> There are 10 minutes remaining in the current session.
<dholbach> Ok, let's say you find a problem in gedit. It crashes for some reason.
<dholbach> First you might want to check if there's a new release available which fixes the issue, if not you could try to check the upstream commits if a recent change fixed the issue.
<dholbach> If that's not the case, you could have a look at upstream's bug tracker and see if somebody reported the issue already and if a fix is in progress.
<dholbach> In that case you can then help out to test the fix and give valuable feedback.
<dholbach> If the problem is not know, you'd report it with all the relevant info you have and try to help out as best as you can.
<ClassBot> eklok asked: whats the difference between the package management and how windows does it? i never got that right. And why would it be better to wrap stuff up in packages
<dholbach> The good thing with package management in a distro is that we have control over what gets in. If something is unstable we don't have to put it in or we can roll back to an old version. Also can we more easily integrate things with each other because we have all the source code.
<dholbach> On top of that we can more easily find security issues by scanning the entire archive or rebuilding all packages with new security features, etc.
<dholbach> Also is it easier for our users. They get all their updates from one place and don't have to update 64325823 programs individually.
<dholbach> If you ask me, it's best thing since sliced bread.
<ClassBot> ziviani asked: What are the next Ubuntu goals? Based on the huge efforts with Unity for a better user experience I believe Ubuntu is more focused in UX right now. Is it the focused area where developers could give the special attention?
<dholbach> A lot of attention indeed goes into UX, but there are many other teams, who for instance work on the server or make sure that everything works on all kinds of devices, etc. https://wiki.ubuntu.com/Teams might help you find something you're interested in.
<ClassBot> exodus asked: Daniel, have you and the Ubuntu Developers Team thought about doing a session in Google Hangout or a similar type of streaming?
<ClassBot> There are 5 minutes remaining in the current session.
<dholbach> exodus, yes - we've done a few of them and I plan to put on a few sessions soon again. If you follow @ubuntudev on Twitter, Identi.ca, Google+ or Facebook you should get a note. :)
<ClassBot> nja asked: ââWhy are you not streaming this in a G+ hangout?
<dholbach> In the next session there will be more instructions which you can easily copy/paste from IRC, but not from a Google+ Hangout. Maybe in the future we'll have more video casts.
<dholbach> Another point of interest might be people who are at work and can't watch videos, but can easily read up an IRC logs.
<dholbach> Also an IRC log is searchable.
<dholbach> That said, I know that videos can be a bit more inviting and more personal than a text-based session.
<ClassBot> luisalvarado asked: what tools do you recommend to start working on a bug fix?
<dholbach> luisalvarado, more on that in the next session and Stefano's session tomorrow.
<dholbach> Let's take 3 minutes break so we can all get another glass of water, a cup of tea or something else.
<dholbach> Thanks everyone and see you in 3. :)
* 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/08/28/%23ubuntu-classroom.html following the conclusion of the session.
<dholbach> Excellent - welcome back to session number two at https://wiki.ubuntu.com/UbuntuDeveloperWeek :)
<dholbach> for those of you who joined in late, please also make sure you're in #ubuntu-classroom-chat so you can ask your questions there
<dholbach> and please prefix them with QUESTION: so the bot will pick them up
<dholbach> In this session we will set up our development environment, configure the tools and everything, so you're ready for the upcoming sessions and for getting involved
<dholbach> if we get through everything quick enough we can even have a look at a package and what to do with it
<dholbach> this session will be practical, so you might want to open a terminal already
<dholbach> There are a number of things you need to do to get started developing for Ubuntu.
<dholbach> We'll 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 do:
<dholbach>  - Installing packaging-related software. This includes: Ubuntu-specific packaging utilities, Encryption software so your work can be verified as being done by you, Additional encryption software so you can securely transfer files.
<dholbach>  - Cover the creation and configuring of 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> 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> This means that you will need to run Ubuntu Quantal (12.10) in some form.
<dholbach> Don't despair - you can run it in a chroot or virtual machine if that suits you for testing, or in a separate partition, or something along those lines.
<dholbach> Still it's very important to test your fixes in a live environment.
<dholbach> https://wiki.ubuntu.com/UsingDevelopmentReleases explains how to do it safely.
<dholbach> If you are now on 12.04, you're fine - you can still go through the instructions and repeat them later on.
<dholbach> There are a number of tools that will make your life as an Ubuntu developer much easier. You will encounter these tools later on. To install most of the tools you will need run this command:
<dholbach>   sudo apt-get install packaging-dev
<dholbach> This will take a while, so just keep it running.
<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.
<dholbach> ... and obviously many many many other good things we won't cover in this tutorial. :)
<dholbach> Any questions so far?
<ClassBot> NickE asked: ââWhat VM does TestDrive use?
<dholbach> NickE, I think it uses kvm.
<ClassBot> nja asked: ââIs it usual to get "apt-file update needed" after installing those packages?
<dholbach> nja, not for now, I don't think
<ClassBot> conner_bw asked: Is bzr etched in stone? Will git be supported someday?
<dholbach> conner_bw, I don't know - you could try to ask in #launchpad though
<dholbach> personally I love bzr because it's quite easy to learn, but I know others prefer git or some other version control system
<dholbach> the good thing is that Launchpad can import git branches and others as well, so you can work on them natively with bzr
<dholbach> Ok, let's crack on.
<dholbach> The Debian/Ubuntu packaging tools need to learn about you . So please 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> Please use YOUR email address and YOUR name. :)
<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> Now that this is done, the packaging tools will always use your name and email address by default.
<ClassBot> nja asked: ââIs bash the shell integrated in Lernid?
<dholbach> nja, yes, lernid uses whatever shell you normally use - the default is bash
<dholbach> Now that this is done, let's create GPG key.
<dholbach> If you have a key already, you're fine - you don't need another.
<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.
<dholbach> 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> Afterwards, 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.
<dholbach> The last questions will be about your name and email address. Just pick the ones you are going to use for Ubuntu development here, you can add additional email addresses later on.
<dholbach> 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.
<dholbach> Maybe we will just let it sit there for a bit and do its thing, while we take care of other business.
<dholbach> Let's create our SSH key next.
<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 push changes to Launchpad.
<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.
<ClassBot> nja asked: ââCan the passphrase be changed later?
<dholbach> nja, yes
<dholbach> Next, let's 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, simply run:
<dholbach>   pbuilder-dist <release> create
<dholbach> So for quantal, you'd run:
<dholbach>   pbuilder-dist quantal create
<dholbach> You can install multiple pbuilders, for each release of Ubuntu, 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> Are there any questions up until now?
<ClassBot> jsjgruber-l82-p asked: Why might you need a .pbuilderrc file?
<dholbach> in .pbuilderrc you could specify a lot of things: for example using additional mirrors, installing packages into the chroots by default, etc.
<dholbach> pbuilder's manpage should give you a good idea of what you might want to use. In the most cases you don't need it though.
<ClassBot> exodus asked: Lets say I'm building a complicated package, which depends on various packages which are not already in a pbuilder slate. PackageA depends on PackageB & PackageC. After I build B & C, does pbuilder know B & C as a dependency for A. Is there a special set-up for the packages installed in pbuilder environment?
<dholbach> exodus, Good questions. Sometimes you might want to build a couple of packages in a certain sequence, for instance you want to transition 10 packages from libsomething1 to libsomething 2
<dholbach> in this case you can teach pbuilder to re-use packages you already built and to add them to its sources
<ClassBot> lengau asked: Why does pbuilder require root permissions?
<dholbach> lengau, because it uses chroot internally to create a completely separate minimal system in which it performs the build
<ClassBot> TheLordOfTime asked: How do you teach pbuilder to use the already-built packages, in the hypothetical exodus presented?
<dholbach> TheLordOfTime, https://wiki.ubuntu.com/PbuilderHowto is one I know about.
<dholbach> If it's outdated, I'd recommend to ask in #ubuntu-motu
<dholbach> Ok. I assume GPG finished creating the key for you already. Let's move on with the key then. :)
<dholbach> You might have gotten 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 this case 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> 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> nja asked: ââWhat are all these generated keys for?
<dholbach> nja, if you upload a package to Launchpad (for instance to your personal package archive), it will check if the package was really done by you
<dholbach> the GPG key is used to sign a package and make sure it wasn't tampered with and that it originates from you
<dholbach> the SSH key is used for Bazaar, which I'll talk a bit more in a minute - it basically pushes your changes to LP using a secure connection
<dholbach> With a basic local configuration in place, your next step will be to configure your system to work with Launchpad.
<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> Sponsoring basically means "upload a package for somebody else". This is what needs to be done if you want to get a fix into Ubuntu and you don't have upload rights yet.
<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. https://help.launchpad.net/ has more information if you should generally get stuck somewhere.
<dholbach> If you donât already have a Launchpad account, you can easily create one (https://launchpad.net/+login). If you have a Launchpad account but cannot remember your Launchpad id, you can find this out by going to https://launchpad.net/~ and looking for the part after the ~ in the URL.
<ClassBot> TheLordOfTime asked: I've seen this thing about the Ubuntu Code of Conduct.  Do I need to sign that to develop for Ubuntu?
<dholbach> TheLordOfTime, yes - if you want to become part of the team, become an Ubuntu member (get voting rights, an @ubuntu.com address and be generally recognised for your work), you will have to sign it
<dholbach> there's no hidden clauses or anything crazy in there - you won't sign up for a washing machine you'll have to pay
<dholbach> the code of conduct basically says to us all: be excellent to each other
<dholbach> and that's generally a good thing to comply with :)
<ClassBot> man_let asked: can less intelligent people contribute?
<dholbach> man_let, We have enough tasks for everyone in Ubuntu. No matter what your interest, ability or preference might be.
<ClassBot> nja asked: ââHELP! My LaunchPad password reset won't arrive!
<dholbach> nja, I think somebody mentioned it in the chat window already, but you can ask in #launchpad for help.
<dholbach> and you can follow the instructions from the log or the documentation later on
<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> The new account help page (https://help.launchpad.net/YourAccount/NewAccount) on Launchpad has more information about the process and additional settings you can change.
<dholbach> You need to tell Launchpad about GPG key, so to find about your GPG fingerprint, please run:
<dholbach>   gpg --fingerprint <email@address.com>
<dholbach> and it will print out something like:
<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> Head to https://launchpad.net/~/+editpgpkeys and copy the âKey fingerprintâ into the text box. In the case above this would be 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D. Now click on âImport Keyâ.
<dholbach> Launchpad will use the fingerprint to check the Ubuntu key server for your key and, if successful, send you an encrypted email asking you to confirm the key import. Check your email account and read the email that Launchpad sent you.
<dholbach>  If your email client supports OpenPGP encryption, it will prompt you for the password you chose for the key when GPG generated it. Enter the password, then click the link to confirm that the key is yours.
<dholbach> Back on the Launchpad website, use the Confirm button and Launchpad will complete the import of your OpenPGP key.
<dholbach> Find more information at https://help.launchpad.net/YourAccount/ImportingYourPGPKey
<dholbach> And then you can do the same with your SSH key.
<dholbach> Open https://launchpad.net/~/+editsshkeys in a web browser, also open ~/.ssh/id_rsa.pub in a text editor.
<dholbach> Make sure it's ~/.ssh/id_rsa.pub (public part) and not ~/.ssh/id_rsa (secret part)
<dholbach> :)
<dholbach> This is the public part of your SSH key, so it is safe to share it with Launchpad. Copy the contents of the file and paste them into the text box on the web page that says âAdd an SSH keyâ. Now click âImport Public Keyâ.
<dholbach> For more information on this process, visit the creating an SSH keypair page on Launchpad: https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair
<ClassBot> thotp asked: might the GPG key changes when i re-install the operating system?
<dholbach> thotp: it might be worth backing up the ~/.gnupg directory
<dholbach> you should be able to just copy it back
<dholbach> The last thing I wanted to mention briefly - I know we rushed through a lot, so I want to make some time for more questions - is setting up Bazaar, which should be pretty quick.
<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> o 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> Again: 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.)
<dholbach> And that should be pretty much it.
<dholbach> One thing you also might want to do is open the "software properties" and make sure the "Sources" part is checked. This will let you download sources from all packages in Ubuntu easily.
<dholbach> or just make sure you have   deb-src   lines in /etc/apt/sources.list
<ClassBot> eklok asked: what keeps you motivated to programm/debug? isnt it exhausting to deal with this every day. I want to motivate myself but i always fail
<dholbach> eklok, the people and the feeling that if a bug is fixed, it's not just fixed for me but for many millions of users out there
<dholbach> also do I learn something new all the time, which is great
<dholbach> of course it can be hard to solve a problem, but you can always ask for help
<ClassBot> man_let asked: what if 2 ppl have the same public key?
<dholbach> man_let, there have been collisions of gpg keys already, but they are very rare - can somebody dig out a link about this?
<ClassBot> nja asked: ââWhat can I do if I have 2 subkeys.  How do I know which one to delete?
<dholbach> I hope http://www.gnupg.org/gph/en/manual.html#AEN282 can help you with it
<dholbach> Any more questions? :)
<ClassBot> nja asked: ââCan I not see what one was created most recently?
<dholbach> If you mean GPG, I'm afraid I don't have the answer right now. Maybe somebody in #ubuntu-classroom-chat or #ubuntu-motu can help.
<dholbach> Sorry
<dholbach> If you followed all the instructions, the following example should work:
<dholbach> Please run:
<dholbach>   bzr branch ubuntu:hello
<dholbach> This will give you a Bazaar branch of the "hello world" package in Ubuntu and all its revisions in Ubuntu.
<dholbach> then please:
<dholbach>   cd hello
<dholbach>   bzr bd -- -S
<dholbach> which will build a source package from the branch - so it will recreate what the original source was and what we need to modify to make it build the "Debian or Ubuntu way"
<dholbach> if you type    ls ..    it should show you something like this:
<dholbach> hello_2.8-2.debian.tar.gz  hello_2.8-2_source.changes
<dholbach> hello_2.8-2.dsc            hello_2.8.orig.tar.gz
<dholbach> now please run:
<dholbach>   pbuilder-dist quantal build ../hello_2.8-2.dsc
<dholbach> This will build the package from the source in our shiny new pbuilder instance.
<dholbach> It will first download relevant build-dependencies (so packages required to build the package), then perform the build.
<ClassBot> There are 10 minutes remaining in the current session.
<dholbach> The resulting package then should be available in ~/pbuilder/quantal_result/
<ClassBot> nja asked: ââWhen running bzr bd -- -s: Help - http://paste.ubuntu.com/1172150/
<dholbach> Yes, that's a warning which is safe to ignore:
<dholbach> gpg: skipped "Santiago Vila <sanvila@debian.org>": secret key not available
<dholbach> gpg: /tmp/debsign.16cckC0A/hello_2.8-2.dsc: clearsign failed: secret key not available
<dholbach> It merely means that the last person who worked on the package (cf debian/changelog) was Santiago Vila, whose GPG key you obviously don't have.
<dholbach> We could have added "-us -uc" to the "bzr bd -- -S" command which would have avoided this
<dholbach> but it's safe to ignore.
<dholbach> In this small examples (just 3-4 commands) we went from source branch (all revisions in Ubuntu are stored in there), to source package (just the latest source revision as tarball and additional modifications - this is what we use to upload to Launchpad for builds) then then the resulting binary (.deb) packages
<dholbach> This is obviously just a taster, so I hope you will find many interesting things in the next sessions which will take you further on your way to joining the Ubuntu Developers.
<dholbach> Just do me one favour: bookmark http://developer.ubuntu.com/packaging/html/
<dholbach> and stay up to date by following @ubuntudev on identi.ca/twitter.com/facebook.com/gplus.to
<ClassBot> marcosb asked: -us -uc is not for pubilder? or really is for bzr?
<ClassBot> There are 5 minutes remaining in the current session.
<dholbach> marcosb, yes, not for pbuilder, but for bzr bd (everything behind the '--' is passed to debuild/dpkg-buildpackage internally)
<dholbach> I hope you give Ubuntu development a go, learn a lot, make the world a better place and make a bunch of friends. :)
<dholbach> Any last 2-3 questions before Oliver "ogra" Grawert takes over to talk about ARM?
<ClassBot> nja asked: ââAfter running "bzr bd -- -S -us -uc" now what?  I'm really behind now.
<dholbach> nja, pbuilder-dist quantal build ../hello_2.8-2.dsc
<dholbach> but you should be able to find this in the docs (http://developer.ubuntu.com/packaging/html/) as well
<dholbach> and in the logs which will go up on https://wiki.ubuntu.com/UbuntuDeveloperWeek later on
<ClassBot> marcosb asked: another session to create patches for hello package? :)
<dholbach> marcosb, yes it would have been too much to squeeze into 2 hours :)
<ClassBot> alucardni asked: how can I tell to bzr bd to use pbuilder to build a binary package?
<dholbach> alucardni, it's two separate commands - a pbuilder plugin for bzr might be a good idea :)
<dholbach> but I don't know if it exists :)
<dholbach> All the best everyone! Hope to see more of you soon!
<dholbach> ogra_, your stage :)
* 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: Something about ARM - Instructors: ogra
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.
<ogra_> yay
 * ogra_ waves
<ogra_> hello everybody
<ogra_> soo, i'm here to tell something about arm :)
<ogra_> arm is the most recent addition to the supported arhitectures in ubuntu
<ogra_> (sorry for my typos i just got a new kbd and am not 100% used to it yet, feel free to laugh about them as you like ;) )
<ogra_> so about 4 years ago there was the ubuntu-mobile team ... originally founded for building ubuntu on MID devices
<ogra_> (MID means mobile internet devices, i.e. tablet)
<ogra_> but somehow these devices didnt take off on the market ... (until the ipad came)
<ogra_> so the focus of this group moved forward to support ARM
<ogra_> with jaunty we actually had our first arm release ... back then for the freescale babbage board, a poorly powered 700MHz single core machine with 512M ram
<ogra_> back then the fcus was still on just getting it to work, we didnt invest much but pulled the debian arm port into ubuntu and made sure everything builds
<ogra_> with the more powerful devices showing up (specifically the pandaboard from TI) and ARM getting intrested in ubuntu and joining a partnership with canonical, the focus shifted towards optimizing for the new CPU architectures
<ogra_> so we can get the most out of the HW
<ogra_> originally the debian port is buiolt for the ARMv5 architecture, which in the intel world would probably comparable to 486
<ogra_> we now wanted to have all the bells and whitles and after some work with the people from ARM we decided to switch to the ARMv7 architecture ... which in the intel world you would see as 686
<ogra_> so from lucid on you could opnly isntall on armv7 HW ...
<ogra_> with the lucid cycle we also joined a deep partnershipÃ¼ with TI to develop on the pandaboard
<ogra_> even though the contract ran out today, we still work closely together
<ogra_> around the same time linaro was founded by canonical and arm ... to actually solve the huge fragmentation in the arm market
<ogra_> most pf the low level work (kernel, toolchain, drivers etc) moved over to linaro and the ubuntu team could concentrate on making ubuntu doesktop rock on the architecture
<ogra_> this we did until precisee ...
<ogra_> during this time the canonical management saw how well arm worked and wanted to try to get arm out of its second class citizen status
<ogra_> i.e. until then there was always this arm team you coudl dump your bugs on as a member of another ubuntu team ;)
<ogra_> so the arm team was split up and spread across the different other teams, more hardware was bought and now every team should have pandaboards for developemtn and testing
<ogra_> with this split and nobody actively focusing on arm the developemtn side already works pretty well...
<ogra_> but we are still lacking QA from the community ... so if you have a panda, feel free to help out ;)
<ogra_> .... so much about the past ...
<ogra_> btw, if you have any questions, feel free to just ask ...
<ogra_> oh, i just learned that i have to driver the classbot myself :)
<ogra_> !q
<ogra_> !y
<ogra_> whoops, seems tehere are issues with Classbot
<ClassBot> prashanth asked: heard that if you get the source code using "apt-get source <package>" is old compared to ones posted in git is it true?
<ogra> yay
<ogra> sorry :)
<ogra> that looks like a leftover from dholbach :)
<ClassBot> netzvieh asked: So there won't be any ARMv6-Supoort?
<ogra> well
<ogra> we currently build armhf and armel architectures, while the former is still there it isnt actually actively cared for or actively supported
<ogra> but with the begin of the quantal cycle armel was switched to build for ARMv5
<ogra> sadly it isnt clear yet if the armel port will stay around at all
<ogra> so for now onl yarmhf and the ARMv7 build is supported
<ClassBot> FlowRiser asked: What does the "intel world" reference thingy mean ?
<ogra> well, i try to make people that never got in touch with arm understand the differences
<ogra> you surely dont want to run ubuntu on a 486 machine nowadays :)
<ogra> and this is similar to running ubuntu on an ARMv5 system
<ClassBot> FlowRiser asked: Does Ubuntu support ARMv8 ?
<ogra> linaro works on the v8 port and their achievements will immediately land in ubuntu once they are done
<ClassBot> Letozaf__ asked: I do not understand the difference between armhf and armel a part that one goes on ARMv5 and the other ARMv7. What is the diffrence?
<ogra> CPUs have floating point units (thats what the f in armhf stands for) ...
<ogra> older ARM ports used a software emulated floating point unitt (softfp)
<ogra> so does for example ARMv5
<ogra> with newer hardware actual floating point unity in hardware shoed up
<ogra> *showed
<ogra> thats usually the case for ARMv6 and newer
<ogra> with the decision to make use of this floating point unit the whole archive has to be recompiled for this, hardfloat binaries can not run under a softfloat userspace (binary incompatible), so a new architecture was introduced in debian for this ... called armhf
<ogra> thats why we currently have two arm ports (but only one supported one of which we build actual distro images)
<ClassBot> ajitesh asked: As android kernel code has been merged with linux, will ubuntu desktops will be able to run .apk files without an emulator?
<ogra> i dont think that enough code has been merged upstream yet to do this, once the mainline kernel fully supports this out of the box we will likely see such support in ubuntu arm
<ogra> on the distro side nobody is actively working on it to my knowledge though (patches accepted indeed :) )
<ClassBot> ajitesh asked: Wat about android application support in ubuntu for mobiles?
<ogra> well, the same applies i think :)
<ogra> i know there are community projects for this but i doubt anyone ever worked on ubuntu integration for it
<ogra> the probelm i think is that you still need to (from a linux distro perspective) rip open a few security holes in your kernel to make it work properly
<ClassBot> marcosb asked: ubuntu mobile isn't a environment to use ubuntu as desktop with a dock?
<ogra> no, ubuntu-mobile is long dead ... even predates the android hype :)
<ogra> ubuntu-mobile was actually focusing on creating a desktop for touch on MID devices
<ogra> i think what you are talking about is ubuntu-on-android
<ogra> about which i sadly dont have any infos, it is developed by a different team i dont work much with
<ClassBot> marcosb asked: s/'ubuntu mobile'/'ubuntu for smartphones'/g
<ogra> right, thats ubuntu-for-android then
<ogra> to my knowledge this is a full yubuntu desktop you run once you dock your phone to a tablet of laptop dock ... but there isnt much more i can tell you abut
<ogra> i dont belive you will see it in the mainline ubuntu distro, it is rather something that (by design) has to be built together with a HW vendor
<ogra> so we had the past of arm and a bunch of questions ... lets take a look at the precence :)
<ogra> up to quantal ubuntu arm was proivided on images that were actually speficially focusing on the target hardware with their installation ...
<ogra> they were so special that they always needed handholding if minor HW aspewcts of an arm board changed ... not so great as you can imagine
<ogra> so with quantal we dropped all these specialized images, if you install  on a panda today tah install is 100% identical to an install on an x86 machine ... you wont see a difference ...
<ogra> (and in fact there isnt any beyond a different kernel and bootloader setup)
<ogra> we also dropped a lot of the heavyweight images and only kept desktop for panda (i'll explain later why), a bunch of server images (ubuntu server was introdusced in precise for various target arches) and the netinstall images
<ogra> the graphics driver situation on arm is way worse than i.e. nvidia or fglrx on x86
<ogra> luckily TI managed to get us a distributable version of the driver for the pandaboard
<ogra> with the drop of unity-2d and the full switch to needing GL capable HW on the target devices, we cant really build images for arm without having a GL capable driver installed
<ogra> so we moved all non panda images to other desktops (i.e. for teh ac100 netbook which is widely used in the ubuntu community we switched to lubuntu-desktop) or left them as netinst images (whcih mens more complex install but also more flexibility)
<ogra> the different sources for info about the different images are on the ubuntu wiki
<ogra> namely: https://wiki.ubuntu.com/ARM/OMAP for the panda and beagleboard ... https://wiki.ubuntu.com/ARM/TEGRA/AC100 for ac100 netbooks and http://ports.ubuntu.com/ubuntu-ports/dists/quantal/main/installer-armhf/current/images/ for all the netboot images
<ogra> even though there is no dedicated arm team anymore, all people with interest in ubuntu-arm usually hang around in #ubuntu-arm on freenode
<ogra> so inb case you have any questions, want to help out with install tests, have an arm device you want to port ubuntu to (if its not the raspberry :)) or are just curious, feel free to drop by there
<ogra> it doesnt look like there are many more questions
<ogra> and i dont really have much more to say :)
<ogra> â©  âª â¬ â«
<ogra> (TheLordOfTime suggested i shoudl sing )
<ClassBot> FlowRiser asked: ARM vs x86;
<ogra> easy answer: http://www.googlefight.com/index.php?lang=en_GB&word1=arm&word2=x86
<ClassBot> TheLordOfTime asked: What's the advantages/disadvantages between ARM and x86? (FlowRiser)
<ogra> ARM draws abouth a thenth of the power of an x86 machine
<ogra> (even the lowest end atom draws lots and lots more still)
<ClassBot> There are 10 minutes remaining in the current session.
<ogra> that also the reason why datacentres are massively intrested in arm, you can run a big datacenter without any air conditioning if you run it on arm machines
<ogra> the ac100 netbook i mentioned above currently runs >8h with a 3 cell battery under ubuntu (note normal intel laptops usually have 6-9 cell ones)
<ClassBot> goddard asked: what sorts of stuff do you do with ARM?
<ogra> for ubuntu i just care that the images work :)
<ogra> privately my heatinf and solar system of my house completely run under ubuntu arm driver beagleboards :)
<ogra> http://www.grawert.net:81/
<ogra> and http://www.grawert.net:81/rooms
<ClassBot> paulo_gomes asked: i dont understand, so there's no arm team, who takes care of development and integration?
<ogra> everybody !
<ogra> the desktop team takes care for all desktop issues on x86, amd64 and arm ... server for all server issues, foundations for the plumbing etc etc
<ogra> the work and responsibility is actually on all teams, not on a single arm team anymore
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> goddard asked: What sorts of work does orgra personally do ?
<ogra> well, taking care for the arm images, helping colleagues to get their arm systems set up, so they can fix unizty bugs etc ;)
<ClassBot> FlowRiser asked: How can we find arm compatible hw, what do we look for ?
<ogra> if you want the best ubuntu support, go to pandaboard.org
<ClassBot> paulo_gomes asked: any links of use of ARM in home automation?
<ogra> i think i linked the stuff i used from the pages above (on grawert,net)
<ogra> there are also some infos on http://ograblog.wordpress.com/, i usually blog about changes to my home automation thingies :)
<ogra> (and usually also link to the SW i use)
<ogra> k, seems the time is up, thanks for participating everyone !
<bilal> Thanks to you too, ogra, that was an informative session
<ogra> if you have any more questions etc, i'm available in #ubuntu-arm around european business hours usually
<ogra> and many thanks to the organizers of this event, you guys do an awesome job !
* 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 Development for the Youth - Instructors: bilal
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.
<bilal> Hello everyone! Welcome to the session about Ubuntu development for the youth!
<bilal> I'm Bilal Akhtar, and I've been involved in the Ubuntu community for two years now
<bilal> As you'll soon learn (or, see), there's a lot more to contributing to Ubuntu than just coding, and there are lots of ways to chip in!
<bilal> During the course of this session, if you have any questions, feel free to ask them on #ubuntu-classroom-chat, in this format:
<bilal> QUESTION: Why is Ubuntu so awesome?
<bilal> and then I'll answer them in this channel
<bilal> So, let me start by giving a summary of what Ubuntu development actually is
<bilal> Daniel Holbach's session earlier today, titled "Introduction to Ubuntu Development" was a detailed 1-hour session just about this
<bilal> I'll only briefly explain it, for more details you can read the IRC logs of that session
<bilal> Ubuntu is a complete operating system, but it is built out of small segments called packages
<bilal> Every package is written in a particular programming language, then compiled to create a binary package
<bilal> the Ubuntu Installer, which you used to install your system, did little more than extract several binary packages
<bilal> A frequent question I get from prospective developers, is "Which language is Ubuntu written in? Which language should I learn in order to start developing for Ubuntu?"
<bilal> Most core Ubuntu packages, like the kernel (the software that manages hardware/software linkage, manages drivers and hardware, etc), low-level libraries, etc are written in C
<bilal> Desktop packages, which form the front-end of Ubuntu, are written in different languages. Most are written in either C, C++ or Python
<bilal> Which is why I suggest anyone interested in learning to help in Ubuntu development to learn Python
<bilal> Some examples of desktop packages are Software Center (written in Python), Unity (written in C++), Nautilus the file manager (written in C), Gwibber the Twitter client (written in Python), etc
<bilal> I choose Python because it's easy to learn from the ground up, and it teaches you the basic fundamentals of programming too, so you can later move on to learning C
<ClassBot> FlowRiser asked: Any tips on where to start looking for python/cpp tutorials ?
<bilal> Great question
<bilal> For Python, I'd suggest you learn using the official Python docs and tutorials
<bilal> http://docs.python.org/
<bilal> The tutorial is at http://docs.python.org/tutorial/index.html
<bilal> For C++, there are hundreds of tutorials. cprogramming.com and cplusplus.com are the popular ones
<bilal> There are many others a Google away in case you don't like these
<ClassBot> coalitians asked: Is it true java is not favoured(used) in the ubuntu community?
<bilal> Java is used quite a bit, but not as much compared to C or Python
<bilal> As an example, LibreOffice is written in Java
<bilal> There are many examples of Java software in the Ubuntu community
<bilal> Another example is Eclipse. But the examples are fewer compared to C or Python, mainly because Java requires a VM to run, like OpenJDK or Sun's Java VM
<bilal> If you know Java already, I'd suggest you to learn C too, since Java and C are very similar
<bilal> and C is widely used in the Ubuntu community
<ClassBot> CuppaT asked: Could you suggest a python IDE please?
<bilal> Personally, I like Vim. But it has a learning curve which many of you might not like
<bilal> So I'd suggest Gedit, which comes pre-installed and is easy to use
<bilal> Geany is also a great light-weight IDE
<bilal> Go with either of the two, and you'll be fine
<ClassBot> coalitians asked: Are python application in Ubuntu(linux) are being migrated to 3.x versions?
<bilal> Yes, and no. Python 3.x is backward incompatible with 2.x code, which is why some applications haven't moved over
<bilal> If you're starting from scratch, I'd recommend you to learn Python3
<bilal> Very soon, we hope to get everything on the Ubuntu CD moved over to Python 3 so Python 2 can be dropped
<bilal> Most libraries have different versions of Python 2 and Python 3 already
<ClassBot> thotp asked: what are the main differences between c/c++ programming on ubuntu and windows?
<bilal> Ubuntu has a different software stack. Ubuntu uses GTK+ and QT libraries for graphical applications, to render buttons, text boxes and all. Windows uses WPF and WinForms
<bilal> But the base syntax is the same
<bilal> and GTK+ and Qt applications can work on Windows to
<bilal> *too
<bilal> On a side note, if you want to know more about Python 3, attend barry's session right after this
<bilal> back on Windows vs Ubuntu c++, if you learn C/c++ on either side, you learn the syntax which means you'll be right at home on the other side
<bilal> preferably learn it on Ubuntu, since that's the platform you'll be coding for4
<ClassBot> kamilnadeem asked: For someone who is starting in CS, where to begin from?
<bilal> You'll likely be learning multiple programming languages at college/univ
<bilal> They will be teaching you C for sure
<bilal> I'll answer the rest of your question later on, as I explain "where to start"
<ClassBot> eklok asked: what makes a good programmer in ubuntu? how many hours per day do you have to invest?
<bilal> It has nothing to do with the number of hours
<bilal> Quantity != quality
<bilal> Many of you have tight schedules
<bilal> I myself spend more than half of my day at shcool
<bilal> *school
<bilal> I, for example, can get many contributions done within an hour
<bilal> Others may take longer
<bilal> So, to become a good programmer, you just need to find the right thing to do, something which you like. Again, I'll answer this later on, in the "where to begin" part
<bilal> on where you should start your journey in the Ubuntu communtiy
 * bilal is really making too many typos today
<ClassBot> thotp asked: so what is the best c/c++ IDE in ubuntu?
<bilal> Geany and/or Gedit.
<ClassBot> FlowRiser asked: Regarding to developing cpp applications for ubuntu,do you recommend any good books/tutorials ? (regarding to best practices, GUI, etc)
<bilal> Good question
<bilal> As for tutorials, you can learn graphical programming from Gtk's online docs
<bilal> or bare-bones C++ programming, which you should learn before GTK, from cplusplus.com
<bilal> I prefer online tutorials over books
<bilal> Many of you will be learning programming in school/college/university
<bilal> so that's a good starting point
<bilal> However
<bilal> in the Ubuntu community, you'll "learn by doing"
<bilal> which will be way more helpful than anything school or college can teach you.
<ClassBot> kamilnadeem asked: Not at school or college but learning it by oneself? I am pursuing a course under Hardware and Networking BTW. :-)
<bilal> In that case, you can just learn from an online tutorial, like I mentioned above
<ClassBot> kamilnadeem asked: Also how does one progress in languages, general consensus is that Python is the one, one should pickup in CS. How does one scale up the languages.
<bilal> If you're starting from scratch, learn Python, then C, then C++
<bilal> then other languages
<bilal> if you know one language already, like many high school students and university students learn Java early
<bilal> then Java -> C -> Python
<ClassBot> raki1 asked: GTK+ or QT be better in ubuntu?
<bilal> Both are equally good, to be honest
<bilal> Qt is superior in some ways, GTK+ is easier to learn in my opinion
<bilal> pick your favourite
<ClassBot> SamTate asked: Do you think that Vala is the next thing to do after learning some JS and basic PHP?
<bilal> Vala is a clean language indeed
<bilal> But I'd suggest new programmers to give it lower priority than the others, since Vala simply isn't very commonly used
<bilal> After JS and PHP, C would be the logical way forward
<bilal> Time to move on
<bilal> Now, for the "why" aspect. Why, as youth, should you be interested in Ubuntu development?
<bilal> There are numerous reasons
<bilal> First, like I mentioned in an answer to a question above, you'll learn by doing
<bilal> which will help you in programming way more than any other school/university course will
<bilal> You'll learn to solve critical problems
<bilal> You'll get the assistance of thousands of talented Ubuntu developers around the world
<bilal> You'll learn to collaborate with a team
<bilal> and you'll get to meet new people
<bilal> As an added bonus, it will look good on your resume, if you're going in the CS/engineering field
<bilal> and it will give you experience in programming, and make you a better programmer
<bilal> It will set you apart from your peers in school or college
<bilal> and contributing to Ubuntu is a really, really good way to spend time
<bilal> spare time, that is
<bilal> Some of you might think that it might be too much of a time waste
<bilal> well, the good thing here is, that it's totally up to you to contribute
<bilal> you can spend as much or as little time as you want
<bilal> whenever you want
<bilal> and if you're stuck, there are people out here to help you
<bilal> on IRC (#ubuntu-devel for Ubuntu development, #ubuntu-app-devel for app development, #ubuntu-motu for packaging, etc)
<bilal> on community support sites like Ask Ubuntu and Ubuntu Forums
<bilal> and on mailing lists like ubuntu-devel@lists.ubuntu.com and ubuntu-motu@lists.ubuntu.com
<ClassBot> raki1 asked: any gtk learning resources or guides?
<bilal> The official GTK docs are great
<bilal> http://developer.gnome.org/ has tutorials
<ClassBot> helderc asked: Where Ubuntu (I mean Ubuntu not Kubuntu) uses Qt?
<bilal> Unity 2d, for example, used Qt
<bilal> Quite many applications use Qt
<bilal> Ubuntu treats Qt as a first class citizen
<bilal> http://www.markshuttleworth.com/archives/568
<ClassBot> mesutcangurle asked: Why Ubuntu doesn't have a junior tasks for new comers or mentors for new comers.
<bilal> Which is exactly what I'm getting to
<bilal> Now, for the part about where you should start
<bilal> Many of you wondered if development will be too hard or boring
<bilal> there are multiple ways to help out
<bilal> You can contribute to Ubuntu, by helping an upstream project in development. Like in the case of Nautilus the file manager. You can look at the list of bugs on Launchpad: http://launchpad.net/ubuntu/+source/nautilus/+bugs
<bilal> download the source code, fix it and submit a patch upstream
<bilal> more info on that, on tumbleweed's session tomorrow
<bilal> Or you can help triage bug reports. triaging is basically reviewing bug reports from users
<bilal> finding duplicates , asking users for more information, etc
<bilal> moreinfo on http://wiki.ubuntu.com/Bugs
<bilal> or you can help in translation
<bilal> you can help in translating Ubuntu to another language
<bilal> https://wiki.ubuntu.com/Translations
<bilal> Or you can test newer Ubuntu releases in development, report bugs, etc
<ClassBot> There are 10 minutes remaining in the current session.
<bilal> You can write documentation too
<bilal> or help new users out at Ubuntu, on sites like AskUbuntu, Ubuntu Forums, IRC (#ubuntu), etc
<bilal> If you're stuck with anything, the mailing lists and IRC are always on your side
<bilal> questions time!
<bilal> Okay, so I'll answer some FAQs I often get from prospective young developers
<bilal> First one is, do you get paid to contribute to Ubuntu?
<bilal> I answer that with: "You get paid, not in money, but in knowledge"
<bilal> Second is, how do you get upload rights to Ubuntu
<bilal> There are many different types of Ubuntu developers
<bilal> https://wiki.ubuntu.com/UbuntuDevelopers
<bilal> each have upload rights to a specific part of the Ubuntu archive
<bilal> once you have a history of strong contributions, you can apply for upload rights
<bilal> one thing which I missed above, in the ways to help Ubuntu, was packaging
<bilal> you can help to create packages out of upstream packages
<bilal> this was explained in Daniel's session on intro to ubuntu development
<ClassBot> There are 5 minutes remaining in the current session.
<bilal> you can learn packaging from developers.ubuntu.com
<ClassBot> FlowRiser asked: How can i develop greeters for Ubuntu ?
<bilal> Umm, you mean lightdm greeters?
<bilal> Consult the lightdm documentation
<bilal> I don't know much about that, sorry
<ClassBot> ajitesh asked: which is better pyhton or c++ for ubuntu dev?
<bilal> C/c++ is more powerful, Python is easier to learn
<bilal> really depends on what you're writing
<bilal> for a user-facing application, Python is usually better
<bilal> for low-level drivers, etc, C is better
<ClassBot> _ericcc asked: Do ubuntu loco teams have access to a list of projects they can under take to help out?
<bilal> Many LoCo team actively maintain projects
<bilal> Some even maintain development
<bilal> others just help in translation
<bilal> It depends for each LoCo
<bilal> so contact your LoCo team.
<bilal> As with the case with all open source projects, everyone is allowed to help out
<ClassBot> mesutcangurle asked: why ruby is not used commonly like Python?
<bilal> Ruby has picked up more traction on the web
<bilal> There's no way to answer "why" it isn't common
<bilal> but that's just the way it is
<bilal> on Ubuntu, that is
<bilal> so, that's it!
<bilal> I hope you liked the session
<bilal> the logs will be available soon, on irclogs.ubuntu.com
<bilal> in case you missed part of this 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: Using and porting to Python3 - Instructors: barry
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.
<barry> hello everyone.  i'm barry warsaw and today i'll be giving a talk on python 3
<barry> this is a broad topic, and there's way too much to cover in one hour so i'll probably be going fairly quickly to cover as much as possible
<barry> it will really help if you at least already know pytho n2
<barry> *python 2
<barry> please join #ubuntu-classroom-chat and ask questions at any time!
<barry> i'll be covering some of the new features in python 3, as well as porting strategies
<barry> but i won't be talking much about porting c extensions or deb/ubu packaging (unless there's time)
<barry> i probably won't be covering much of the py3 features that are already available in py2, except to the extent that it helps with explaining how best to port stuff
<barry> i'll be providing lots of links with other resources you can read for much more detail
<ClassBot> ben72 asked: ââis there a way to run both python 2 and 3 in the same ubuntu system?
<barry> ben72: yes.  running 'python' (aka /usr/bin/python) on any ubuntu system will run the latest version of python 2, which for ubuntu 12.04 onward is python 2.7
<barry> to run python 3 apps you need to explicitly run 'python3' or /usr/bin/python3
<barry> same for #! lines
<barry> i can talk about the difference between python 3.2, the default in ubuntu currently and python 3.3 later if you're interested
<barry> hopefully, this will get you excited about python 3 -- it's fun!
<ClassBot> NickE68 asked: ââWill Quantal be using Python 3.3?
<barry> NickE68: no, python 3.2 will be the default python 3 version because 3.3 was not ready in time for feature freeze.  3.3 will likely be the default in 13.04
<barry> quantal does have 3.3 available though: apt-get install python3.3
<barry> and invoked via 'python3.3'
<barry> so you can play with the newest features easily
<barry> also, i fully expect that 12.10 will get a ffe for the final release of 3.3 when it comes out
<barry> so, to summarize: quantal will have 2.7, 3.2 and 3.3 with the former two as the defaults
<barry> so, why port to python 3?
<barry> there will never be a python 2.8.  i can pretty much guarantee that :)
<barry> which implies that py2 will never get any new features
<barry> and diminishing bug fixes, though the official maintenance policy is longer than usual
<barry> eventually 2.7 will only get security fixes, but i suspect upstream devs will become less interested in maintaining 2.7 as time goes on
<barry> modules will rust
<barry> py2 also has many warts, some big some small
<barry> and, most importantly imo: py3 fixes the whole bytes vs text problem
<barry> (mostly :)
<barry> meaning, we have potential to make much more robust py3 apps for non-english locales
<barry> i will talk more about bytes v. strings later
<barry> what are ubuntu's py3 plans?
<barry> we are on a long journey to deprecate python2.  we had hoped to port everything on the install images to py3 for 12.10, but we've hit a few big blockers so that won't happen in 12.10
<barry> maybe for 13.04, definitely for the next lts
<barry> py2.7 will never be *removed* from the archive, but it will likely only be in universe for 14.04 if we can get away with it
<barry> if there are no questions related to ubuntu's py3 plans, let's talk about porting
<barry> let me give you a few links first
<barry> this is one of the very best resources available for understanding how to port your py2 code to py3:
<barry> http://python3porting.com/
<ClassBot> coalitians asked: So since the development for 12.10 is freezed, there are no ongoing porting activities now?
<barry> coalitians: we will definitely have a ffe for the gwibber backend service py3 port.  there may be a few others, but we're largely done with our porting efforts for 12.10.  from here on, it will be bug fixing
<barry> the above link talks about strategies, gives code samples for conversion of common idioms, a little bit about c extensions, and much more
<barry> i have written a number of blog posts that you might find helpful:
<barry> http://tinyurl.com/7tb3jkn
<barry> http://tinyurl.com/7famvx3
<barry> http://tinyurl.com/6ufpvfq
<barry> there's also a good page in the ubuntu wiki with specific porting help, including how to package python libraries and apps either for py3 alone, or for dual py2/py3 versions
<barry> https://wiki.ubuntu.com/Python/3
<barry> i will also give you this link to a talk from pycon 2012.  i highly recommend you watch this before you do any significant py3 work.  it is the single best description of the bytes vs. strings issue i've seen.  really a great talk:
<barry> http://pyvideo.org/video/948/pragmatic-unicode-or-how-do-i-stop-the-pain
<barry> okay, so let's talk for a moment about some porting strategies
<barry> let me say first that if you are starting a brand new python project, i would suggest going straight to py3.  one caveat is that you need to make sure any dependencies (i.e. 3rd party libraries you might want to use) are already available for py3, in ubuntu
<barry> we've worked hard these last few cycles to make sure upstreams w/ py3 support have been packaged for deb and ubu
<barry> and we've done some upstream porting work ourselves (e.g. dbus-python)
<barry> of course, not everything is available, but *a lot* is, so you're probably in great shape with quantal
<ClassBot> roadmr asked: what's the recommended path if I want to port an application using gstreamer to Python3?
<barry> roadmr: i don't have a lot of experience w/gstreamer unfortunately, so i'm not sure if a py3 version is available, and if so, where (upstream, debian, ubuntu)
<barry> i *think* it's not yet, but don't quote me on that :)
<barry> so that's for new code, what about porting existing code to py3?
<barry> ask this question: do you need to keep py2 support, and if so, how far back do you need to support?
<barry> i would *highly* recommend nothing older than py2.6 (which actually is no longer available in quantal anyway)
<barry> and would recommend at least py2.7 for some very useful features (e.g. the new unittest library)
<barry> the thing is: py2.7 and to some extent 2.6 has lots of backported features that can make porting, and supporting py2 and py3 much easier
<barry> through things like "from __future__ import"s
<barry> so, when starting a porting effort, the first thing to do is to run your code with 'python2.7 -3'
<barry> that -3 flag will cause python to warn you about any idiom that cannot be easily ported with the 2to3 program (more on that later)
<barry> if your py2 program runs cleanly with 'python2.7 -3' then you're in pretty good shape for starting your py3 port
<barry> 2to3 is a code transformation framework that can take most common py2 idioms and convert them on the fly to py3
<barry> my personal opinion is that its output is useful but shouldn't be used "in production".  it's a bit too slow in the dev cycle for me.
<barry> but it's pretty flexible
<barry> my own recommendation is to use a single code base and just be careful about how you code.  use from-future imports as much as possible
<barry> also there's a third party 'six' library (apt-get install python-six i believe) that can make a single code base easier to maintain
<barry> but here's the most important thing you need to do before you port, and it segues into my next topic:
<barry> you must be *crystal clear* about the distinction in your data model between bytes (i.e. binary data) and strings (i.e. human readable text)
<barry> if you are getting lots of UnicodeErrors in your py2 code, it's a sign that you are not crystal clear :)
<barry> and that is one of the biggest benefits (and frankly headaches while porting) of py3.  the requirement to be clear means that once you've done so, your non-english users won't be getting UnicodeErrors
<ClassBot> BlessJah asked: is it possible to write to write py3 code that would run also in py2 environment?
<barry> BlessJah: that's not really much different than writing py2 code that runs in a py3 environment.  yes, its very definitely possible
<barry> so, hopefully everyone understand the difference between bytes and strings
<barry> bytes are binary data, e.g. possibly images, audio, stuff like that
<barry> strings are human readable text
<barry> in py2 you had two "string" types, str which were also called 8-bit strings and they served as ascii text and binary data
<barry> and unicodes which are just that, unicode human readable text
<barry> the big py2 problem was that python auto-coerced between the two, often in ways that were not correct, leading to dreaded UnicodeErrors
<barry> in py3 you have bytes which are *only* binary data
<barry> and str which are unicodes
<barry> and there is no auto-conversion
<barry> you cannot concatenate the two without explicitly converting
<barry> so if you have a unicode string, you can encode it to bytes, but you must know the encoding (e.g. utf-8 usually, but maybe latin-1 or any of the other multitude of encodings available)
<barry> to go from bytes to str, you must decode, again by being explicit about the encoding
<barry> an important thing to remember now too is that in py3, by default open() will open a file in binary mode and you read bytes out of it, *not* text
<barry> unlike in py2, py3's open() takes an encoding argument, so if you call it like so: open('myfile', encoding='utf-8')
<barry> you will be reading unicode strings from the file
<barry> which is very nice (assuming of course that the contents of your file is utf-8 encoded strings :)
<barry> in py3, there is no more u'' prefix for strings.  unadorned string literals are unicodes
<barry> (aside: the u'' prefix is reintroduced in py3.3 but essentially noops)
<barry> to write bytes literals, you use the b'' prefix
<barry> e.g. this is bytes: b'foo'
<barry> and this is str: 'foo'
<barry> one other quick note about this: you can now safely use the gettext module in py3 since it always returns unicodes from catalog lookups :)
<barry> are there any questions about bytes vs strings before i move on?
<ClassBot> NickE68 asked: ââWhat if you don't know the encoding used for some file? Is there lib that can produce a 'best guess'?
<barry> NickE68: there is, but i'm blanking on the name of it.  i believe it comes out of mozilla.  in general, it's much safer to know
<barry> you can also try some of the most common ones, e.g. utf-8 first, then latin-1
<barry> then ascii
<ClassBot> roadmr asked: gettext, "it always returns unicodes". Do you mean "strings" here, as opposed to "bytes"?
<barry> roadmr: yes.  in py2 unfortunately, gettext.gettext('foo') always returned an 8-bit string, which really causes problems, and the api for getting (py2) unicodes is pretty well hidden and not the default
<barry> in py3, gettext.gettext('foo') always returns a str, aka a unicode
<barry> jtaylor: reminds me that it's python-chardet.  thanks!
<barry> cool. so, in the remaining 17m or so, i'm going to give a whirlwind tour of some of the changes and new features in py3 to be aware of
<barry> this is by no means exhaustive!
<barry> there are "what's new" documents out there for each individual version of python 3, but afaik, no overarching list of differences b/w say py2.7 and py3.2
<barry> though the pythonporting url i gave above comes pretty close
<barry> so, let's begin, and please ask about further details at any point
<barry> many parts of the stdlib have been reorganized
<barry> this means that some old, unsupported modules have been removed
<barry> probably nothing you care about unless you're doing image processing on irix and then why are you here? :)
<barry> many modules have been moved around, some placed inside of packages
<barry> e.g. the very common 'urlparse()' function now lives in urllib.parse.urlparse()
<barry> http://docs.python.org/py3k/library/ is your best friend
<barry> some builtins have been removed or moved
<barry> e.g. the reload() builtin has been moved to imp.reload()
<barry> for the builtins that have been removed, there's usually a good alternative
<barry> e.g. callable() is gone, but you can test for callability either by just calling it <wink> or through the inspect module
<barry> one big change that gave me much finger pain until i re-taught the muscle memory (and started using "from __future__ import print_function" in my py2 code)
<barry> is that the print statement has become a function
<barry> e.g. print('hello world')
<barry> this was very jarring, but it makes great sense, and eventually you'll come to appreciate this change :)
<barry> you know how python2 has essentially two types of classes?  classic classes and "new style" classes?
<ClassBot> There are 10 minutes remaining in the current session.
<barry> py3 gets rid of classic classes.  all classes in py3 are "new style"
<barry> so that means you no longer have to inherit from object
<barry> or use the "__metaclass__ = type" trick to get all the great features of "new style" classes
<barry> i guess that means we have to stop calling them "new style" :)
<barry> py2 has two types of integer, int and long
<barry> py3 does away with this and has only one integer type, int
<barry> it automatically knows to use the more efficient internal representation for smaller ints and the expensive representation for bigger ints
<barry> there is no more 'L' suffix on int literals
<ClassBot> jsjgruber-l82-p asked: Any high precision float types in py3?
<barry> jsjgruber-x-p_: i think so, but i do so little math in python, i can't help much with that
<barry> i know there's a decimal type (though it's not built-in)
<barry> the dict.iter*() methods are gone in py3. i.e. no more .iterkeys(), .itervalues(), or .iteritems()
<barry> just use .keys() et al, and remember that they return iterators in py3 *not* concrete lists
<barry> you might need to wrap the return value in list(dict.values()) for example
<barry> the syntax for catching exceptions has changed (though also available in py2.6 and 2.7)
<barry> gone is "except Foo, e"
<barry> use
<barry> "except Foo as e" instead
<barry> instead of the exec statement, use the exec() function
<ClassBot> There are 5 minutes remaining in the current session.
<barry> file() builtin is gone, use open()
<barry> no more xrange().  go back to range() which now returns an iterator
<barry> as does filter() and map()
<barry> (again, you might need to wrap them in list() to get a concrete list)
<barry> absolute imports are the default, you must be explicit about relative imports
<barry> okay, there's no way i'm going to finish. so are there any last minute questions?
<barry> :)
<barry> i'll just keep typing until classbot shuts me up
<barry> 1 / 2 returns 0.5 now
<barry> use 1//2 to get the old floor division behavior
<ClassBot> coalitians asked: Barry, How and where should we get started to be part of ubuntu python community?
<barry> coalitians: i would highly suggest joining the debian python community over on OFTC #debian-python.  #ubuntu-devel is good too, as is #python on freenode
<barry> there isn't a dedicated ubuntu python forum though.  maybe there should be!
<ClassBot> NickE68 asked: ââIs there a place listing packages for which porting help is required (for 13.04 now, I guess)?
<barry> NickE68: yes:
<barry> https://docs.google.com/a/canonical.com/spreadsheet/ccc?key=0AiT4gOXSkmapdFA1anRkWERsaXgtWnllUG9QWXhDVWc&pli=1#gid=0
<barry> https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-python-versions
<barry> https://wiki.ubuntu.com/Python/FoundationsQPythonVersions
<barry> please ping me in #ubuntu-devel for more info.  we'd *love* the help!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%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 ||
<cc_INC> I'm probably too late...
<pleia2> !logs
<ClassBot> Logs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/
<pleia2> :)
<cc_INC> Hey that's great pleia2, thanks!!!
<pleia2> sure
<cc_INC> You're a star...cheers...
<BlessJah> k 11
<DarkStorm_> Hello, people! I would have joined yesterday but Hurricane(?) Isaac killed my power :<
<netzvieh> hi DarkStorm_
<DarkStorm_> hello
<chilicuil> otro gran cambio, que me trajo muchos problemas, al menos hasta que aprendi la nueva forma (y despues de empezar a usar "from __future__ import print_function" en mi codigo py2)
#ubuntu-classroom 2012-08-29
<conradin> solved the question of lickalot, but he gone now
<conradin> who is in here?
<TheLordOfTime> just us dead people :P
<TheLordOfTime> support's in #ubuntu btw
<conradin> support?
<conradin> so what is this?
<TheLordOfTime> that was a mistype
 * TheLordOfTime directed to the wrong channel by accident
<TheLordOfTime> this is the classroom.  details at https://wiki.ubuntu.com/Classroom
<T_H_X> heads down thumb up
<conradin> Ima IRC newb havnt used since 2003
<conradin> cept earlier today
<conradin> whats supposed to be going down in this room?
<conradin> I like bash scripting, expect, tcl... stuff like that. and some pixel art.
<DarkStorm_> conradin: there's actually an entire schedule of events (unfortunately they all conflict with school for me), do /topic
<cc11rocks> Hello #ubuntu-classroom. Where can I find the log's from today's sessions?
<chilicuil> hi cc11rocks, at irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html
<cc11rocks> Thank you :)
<cc11rocks> Is getting started/setup for finding/fixing/removing bugs covered here (in today's or in the next few days discussions/tutorial/etc)?
<cc11rocks> I found this : "More specifically: To fix a bug in Ubuntu, you would first get the source code for the package, then work on the fix, document it so it is easy to understand for other developers and users, then build the package to test it."
<JoseeAntonioR> cc11rocks: The topic is being covered today
<cc11rocks> Okay, thanks. JoseeAntonioR : Will you be present for this particular topic?
<JoseeAntonioR> cc11rocks: I'm sorry, but I won't.
<cc11rocks> Okay, thanks. If anyone is and you want to, email me the relevant info at cc11rocks@yahoo.com ...If I don't receive an email, I'll look for it in the logs but I don't have a ton of time between work/school/etc (and I understand that everyone else has busy lives as well)
<JoseeAntonioR> cc11rocks: You will need to search in the logs.
<cc11rocks> Okay, thanks
<AndChat|489600>  
<noxnox> hi
<noxnox> Ahmed Kamal
<MohamedAlaa98> Hi
<noxnox> when the classes starts
<noxnox> does anyone knows?
<mnemoc> noxnox: tried looking at the url in the topic of the channel?
<conradin> solved the question of lickalot, but he gone now
<conradin> maybe lickalot will return today
<eklok> is not session going on?
<raju> eklok: i think still one more  hour is there for the session
<eklok> a fuck i messed it up again with the time difference
<dholbach> Alright, welcome everybody!
<Guest68765> thankyou
<dholbach> We are about to start in 5 minutes, I just wanted to mention some organisational things first
<coalitians> Gud to see you, dholbach
<coolbhavi> dholbach, thanks a lot!
<dholbach> #ubuntu-classroom is used just for the sessions themselves, but you can use #ubuntu-classroom-chat to discuss everything and ask questions. So please make sure you join the channel as well.
<dholbach> If you want to ask questions, please make sure you prefix them with QUESTION:, so they are easier to spot
<dholbach> ie: QUESTION: What makes Quickly so great?
<dholbach> Also: all logs will be available at https://wiki.ubuntu.com/UbuntuDeveloperWeek - currently you can see all the logs from yesterday.
<dholbach> The channels are busy, so if you would like to stop notices about people joining and parting coming in, please review https://wiki.ubuntu.com/UbuntuDeveloperWeek/JoiningIn
<dholbach> Enjoy UDW Day 2 and in a few minutes, mterry will be your host!
<dholbach> Thanks everyone!
<van> when it starts?
<coolbhavi> in a minute van
<skrocco> Hello all
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Quickly - Instructors: mterry
<eklok> hi
<nitvirus> hello
<skizobass> hi!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.
<mterry> Hello!
<mterry> My name is Michael Terry, and I'm a maintainer of Quickly
<mterry> I usually give introduction to Quickly talks during App Developer Week, but I'm also doing one this week, let me know in ubuntu-classroom-chat if you'd like things to be more toward the technical details of Quickly or not
<mterry> So I'll start with a quick overview of Quickly and where we are now, what our plans are for 12.10 and 13.04
<mterry> So Quickly is at core a way to get started developing very quickly
<mterry> And not have to worry too much about packaging or how to get your app into Ubuntu
<mterry> We make some opinionated choices (like Python, GTK+) that Ubuntu recommends, so that we can offer a better experience
<mterry> But there are plenty of other "templates" that Quickly offers to do other things (like HTML5 or flash)
<mterry> So why use Quickly or get involved with Quickly?
<mterry> Well, I guess the reason to use it is for the above -- if you don't care about packaging and just want to get started  :)
<mterry> If you're interested in contributing to Quickly, ask questions in the chat room and I can answer and explain
<mterry> Always things to do, and we just started planning a bunch of work for 13.04
<mterry> So, in 12.04, there are three templates: the normal Python+GTK one, a command line interface one, and a flash game one
<mterry> There are also HTML5, Qt, Qt Quick, and a Unity Lens ones maintained by the community
<ClassBot> eklok asked: can you work with Quickly via terminal and GUI?
<mterry> Right now, it's designed to be used via the terminal only
<mterry> But Michael Hall worked on a GTK frontend for it
<mterry> quickly-gtk I believe
<mterry>  https://launchpad.net/quickly-gtk
<ClassBot> skizobass asked: Can you use Eclipse, PyDev for write a Python App with Quickly and then publish in the Software Center?
<mterry> Yes and no
<mterry> So we don't have integration with Eclipse or PyDev as such
<mterry> But you could write such an app and stick it inside of a Quickly project with a small amount of work, I believe
<mterry> What Quickly gives you is a skeleton project
<mterry> And if you threw away some of the code it gives you and stick yours in, you'd get most of the benefits of Quickly that way
<ClassBot> ben72 asked: ââin 12.04 quickly is the package to get right?
<mterry> Yes
<ClassBot> FlowRiser asked: What is the current workflow of Quickly ?
<mterry> So let's say you want to start a project
<mterry> You open a Terminal
<mterry> You run "quickly create ubuntu-application test-project"
<mterry> The ubuntu-application part there is choosing which template to use.
<mterry> In our case, we want the default-ubuntu-recommendation, which is Python+GTK
<mterry> Then, it will create a skeleton project and launch it
<mterry> Close it out, "cd test-project", and you're sitting in your new project
<mterry> You can now edit your code with "quickly edit" or package it with "quickly package".  I'll get to these commands in a bit
<ClassBot> skizobass asked: Can you write and organize the code (classes, packages, etc) like Eclipse in Quickly?
<mterry> I'm not sure how Eclipse is organized.  Hold on
<mterry> The default skeleton gives you one directory/Python-module for your code
<mterry> And also one Python module that it owns with boilerplate code
<mterry> You put all your code in your module and Quickly's wrapper will call into it
<mterry> So, as above, if you wanted to import an existing project into Quickly, you would replace that one module with your code
<mterry> But as far as classes go, yes, Python and Quickly both encourage one-class-per-file
<mterry> But you can do anything you want.  It's not as strictly enforced as, say, Java
<ClassBot> nja asked: ââWill you be covering some Python in this session?
<mterry> I hadn't planned to, no.  I think there are better resources than me for that
<mterry> OK, there are no more questions, so I'll start diving into using Quickly more
<mterry> Before I forget, Quickly also has a built-in tutorial
<mterry> If you don't want to listen to me blather
<mterry> Run "quickly tutorial" in your project directory
<mterry> But let's continue with my blathering
<ClassBot> FlowRiser asked: I see that most of the languages you use require no compiling of the code; is there any chance we'll see a Cpp and GTK template?
<mterry> That's certainly a possibility
<mterry> But not something we've done yet
<mterry> Quickly's template system lets someone write such a template easily
<mterry> It just hasn't been done
<mterry> We had some progress on a Vala template, which is compiled
<mterry> But we've found in general, new users prefer non-compiled languages like HTML or Python
<ClassBot> peaceisin asked: For using quickly, one need to know how to program in python?
<mterry> Yes, at least for the default recommended template
<mterry> Actually, for all the shipped templates.
<mterry> But again, that's not necessarily true in the future
<mterry> But is now
<ClassBot> coalitians asked: Quickly is in python?
<mterry> Yes.  Both the skeleton project and Quickly itself
<ClassBot> BebopSteve asked: On "quickly edit," is there anything special about that?  Or can you just use a text editor of your choice
<mterry> You can use the editor of your choice.  You can set either EDITOR or QUICKLY_EDITOR environment variables to change it
<ClassBot> NickE asked: ââDoes Quickly support Python 3 development?
<mterry> Not yet
<mterry> We want to support it, but it's looking like that will happen for 13.04
<ClassBot> chilicuil asked: does quickly support all data bases?, or do I need to use libraries?
<mterry> For that, you don't need special Quickly support
<mterry> Just import the appropriate Python modules and go crazy
<mterry> Quickly doesn't limit your choices of how you write your app.  It's just a wrapper around it, to provide some integration support into Ubuntu
<mterry> OK
<mterry> So another useful command to change your app, is "quickly design"
<mterry> Which will bring up Glade, a GUI editor
<mterry> How to use Glade is a whole 'nother talk, but it tries to be a point-and-click interface builder
<mterry> It helps to understand GTK a bit when using it
<mterry> But the basic idea is that you can make new widgets in the pane on the left, place them in the middle, and adjust properties of widgets in the bottom right
<ClassBot> chilicuil asked: Quickly is intent to produce desktop apps or Web ones?
<mterry> Right now, desktop apps
<mterry> We do have an HTML5 template in the community bundle that kind of blurs that a bit
<mterry> But it
<mterry> But it's still designed for the desktop (runs Python underneath)
<ClassBot> green7 asked: Do we need to know GTK to use Quickly?
<mterry> Yes, for the default template
<mterry> Like for Glade
<ClassBot> nja asked: ââWhere would you recommend we learn Python?
<mterry> Dive Into Python is very good
<mterry> http://www.diveintopython.net/
<mterry> OK
<mterry> So let's say you're comfortable with Glade and have made some changes (and we can come back to it)
<mterry> If you want to see what your project looks like now, run "quickly run"
<mterry> Which will load all your edited files and show you the current project state
<mterry> One neat trick Quickly does is that when you add a widget, you frequently want to respond to user events on it
<mterry> Like clicks or whatever
<mterry> So Quickly makes it easy
<mterry> If you add a widget named button1
<mterry> You can just write a method in your window class called on_button1_clicked(self, widget, data=None)
<mterry> And do what you need there
<mterry> Quickly will notice that and hook up the widget to your method
<mterry> You need to use the on_WIDGETNAME_SIGNALNAME format
<mterry> And the signature will change depending on the signal type
<mterry> See the GTK documentation for details on a given signal
<ClassBot> green7 asked: Is there a difference between packaging and quickly run?
<mterry> Yes
<mterry> So quickly run is just a quick spot-check
<mterry> It runs all the files from where they are in your project directory
<mterry> But quickly package actually creates a Debian package file
<mterry> Which you can install into your system if you're root
<mterry> So let's say we ran 'quickly package' on our test-project program
<mterry> It would give us a file like ../test-project_0.1_all.deb
<mterry> We could then run "sudo dpkg -i ../test-project_0.1_all.deb" and install our new program
<mterry> You'd see it show up in the dash and everything
<mterry> Before you seriously start packaging your app though, it's best to fill out some of the information in the 'setup.py' file
<mterry> Like homepage and author
<mterry> And to run "quickly license" to specify what the license of your program is
<mterry> Because that's all important information before you start distributing it to other people
<mterry> So let me talk about packaging a bit
<mterry> Let's say we think this default app is amazing
<mterry> And we want to distribute it to some friends
<mterry> Well, first, you should test it locally with quickly package
<mterry> Make sure that it installs fine
<mterry> But if you want to share with a wider community, you might want to set up a PPA
<mterry> Launchpad lets you have your own PPA where you can put packages and people can download them as you update the PPA
<mterry> Let's say you've done that already (I can go into details if desired)
<mterry> You'll also need GPG keys set up
<mterry> And SSH keys
<mterry> Launchpad has documentation on this
<mterry> https://help.launchpad.net/YourAccount/ImportingYourPGPKey
<mterry> https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair
<mterry> But OK, let's say we've got our PPA set up
<mterry> Then running "quickly share --ppa mterry/testing" will package up our project and upload it to my (mterry's) 'testing' PPA
<mterry> quickly share will use a testing version like 0.1public1
<mterry> Not a nice version
<mterry> But it's because quickly share is best for uploading in-progress versions for wider testing
<mterry> When you are ready to release for real, use "quickly release"
<mterry> This will put it in a PPA but update the version to something nice like 12.08
<mterry> Let me pause for questions
<ClassBot> nja asked: ââWhat Python editor would you recommend?
<mterry> I'm a luddite and like just simple gedit
<mterry> So I may not be the best person to ask
<mterry> I'm not even sure what other people would recommend
<mterry> Chat room can help out I bet
<mterry> OK, so I quickly covered share and release
<mterry> Which are the two ways Quickly offers to share your project around via a PPA
<mterry> But let's say you've finished really polishing your app and it's great now
<mterry> You want to get it into the Ubuntu Software Center
<mterry> Then you can use "quickly submitubuntu"
<mterry> Which will also upload into a PPA
<mterry> But will make various packaging changes that are required for Ubuntu Extras packages
<mterry> If you want to test such changes locally, you can also run "quickly package --extras" to get a local Debian package file that also has those changes
<mterry> (basically, it puts your application inside /opt instead of sprinkled around the filesystem like in /usr/bin and /usr/share)
<ClassBot> green7 asked: Is Quickly recommended over usual PyGTK programming?
<mterry> For an app that you want to share with other Ubuntu users, yes
<mterry> But Quickly is really just a shell around usual PyGTK programming
<mterry> It helps with packaging and integration, and a little bit of magic like I mentioned between Glade and your code
<ClassBot> ironhalik asked: What's the backward compatibility situation like with Quickly and users using older Ubuntu releases? Are there any issues?
<mterry> Should be small
<mterry> Quickly injects a bit of code into your app (in, e.g., the test_project_lib/ folder)
<mterry> So that will stay constant as you backport your app to older releases
<mterry> The only thing that might cause problems is dependencies
<mterry> So if you depend on a newer version of a package, or a package that didn't exist in older releases, obviously that's going to be a problem
<mterry> But I believe Quickly itself should work well into the past.  12.04's version uses gobject-introspection for it's GTK/Python bindings
<mterry> I don't know how far that goes back.  Like, I bet it doesn't work well in 10.04
<mterry> But it should for 11.10 at least
<ClassBot> gigix asked: Does Quickly binds your app strictlty to Ubuntu
<mterry> No.  Not your app itself.
<mterry> It offers different ways of making your life in Ubuntu easier
<mterry> Like making a Debian package file and uploading to PPAs
<mterry> But your code itself should not require Ubuntu features
<ClassBot> FlowRiser asked: What are some good GTK resources ?
<mterry> http://developer.gnome.org/ has some
<mterry> http://developer.gnome.org/gtk3/stable/ is an API overview
<mterry> And http://developer.ubuntu.com/resources/ has some
<ClassBot> marcosb asked: Ruby template is on schedule?
<mterry> Nope
<mterry> :-/
<mterry> I don't know who's working on one
<mterry> But it's not on my radar
<ClassBot> ben72 asked: ââis there a way to make quickly work with python 3 manually even though it's not supported? Yesterday we learned python 3 is the way to go for new applications. :)
<mterry> Good question
<mterry> Quickly is unfortunately lagging here
<mterry> I agree Python3 is the way to go
<mterry> But we couldn't get all our features working with it in time.  Notably, the packaging of your app
<mterry> So you can certainly start a new Quickly app
<mterry> And then port it to Python
<mterry> 3
<mterry> (Should be real simple)
<mterry> But
<mterry> You'll lose the ability to run "quickly package", share, release, or submitubuntu
<mterry> :(
<mterry> But you can take the Python2 packaging that Quickly would give you
<mterry> (if you run quickly package before porting to Python 3)
<mterry> Then modify the debian/ directory to work with Python 3 yourself
<mterry> Then don't run "quickly package" youself...
<mterry> You'll at least have the benefit of not having to start from scratch
<mterry> Quickly can give you all the Python2 packaging and code and you can update to work with Python3
<mterry> You just can't use Quickly's packaging support going forward
<mterry> :(
<mterry> OK
<mterry> Quickly has a few other neat features
<mterry> Like "quickly save"
<mterry> Which will save all your changes into a version control system called bzr (bazaar)
<mterry> Kind of like checkpointing your code after a set of related changes
<mterry> You can use bzr directly (like "bzr diff") to see your current changes and such
<mterry> bzr is great, and it integrates with Launchpad.  Like you can do "bzr push lp:~mterry/+junk/test-project"
<mterry> To push all your code into Launchpad (under my account -- obviously change for your account)
<mterry> +junk is just a trick Launchpad has to let you upload without having to choose a project
<mterry> If you've registered your project in Launchpad, you can use it's name instead
<mterry> But anyway, that's all Launchpad stuff, not Quickly stuff!
<mterry> Just wanted to mention quickly save
<ClassBot> There are 10 minutes remaining in the current session.
<mterry> Another neat trick is "quickly add dialog new-dialog"
<mterry> Let's say you want to add a save dialog or error dialog or something like that.  A common enough operation that Quickly gives a little help
<mterry> It will create the code for you and add it to Glade (but you have to close Glade and relaunch with "quickly design")
<mterry> And run "quickly edit" again to open up the new files
<mterry> You'll see your new dialog in code and in Glade
<mterry> Then just import it in your main window with "from project_name.DialogName import DialogName"
<mterry> And instantiate it with "d = DialogName()"
<mterry> You can use "quickly help" to see all the commands available and help for individual commands too
<mterry> Like "quickly help save"
<ClassBot> skizobass asked: When you create a new dialog with Quickly. How you separated the script from the main script?
<mterry> Quickly will create a new python file in (e.g.) test_project/
<mterry> So if you ran "quickly add dialog hello"
<mterry> It will create a test_project/HelloDialog.py file
<mterry> (I think I got that name right)
<ClassBot> nja asked: ââIs there anything like .toString() in Python?
<mterry> Yes
<mterry> str()
<mterry> so let's say I have an object
<mterry> o
<mterry> I do str(o)
<mterry> to get a string
<ClassBot> skizobass asked: Quickly separate the code automatically for each dialog ?
<mterry> Yes, if you use the "quickly add dialog" command
<mterry> You don't have to do that yourself
<mterry> You can organize your code all you want when you write it
<mterry> But when Quickly makes them, that's what it does
<mterry> OK, I only have a few minutes left
<mterry> I know this was a little scattered, but hopefully you have a better idea what Quickly is
<mterry> And why you might want to use it
<ClassBot> There are 5 minutes remaining in the current session.
<mterry> Again, I recommend "quickly help" and "quickly tutorial" for exploring on your own
<mterry> And http://developer.ubuntu.com/resources/app-developer-cookbook/all-recipes/ has some neat things you can do
<mterry> As does all of  http://developer.ubuntu.com/resources
<mterry> Seems like no more questions.  Thanks everyone!
<ClassBot> nja asked: ââIn python, is it possible to have the same constructor with different arguments?
<mterry> Yes and no
<mterry> You'd use the same method
<mterry> But you can have optional arguments like __init__(option1=None, option2=None)
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting help to start with Ubuntu Development The developer advisory team and beyond - Instructors: coolbhavi
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.
<coolbhavi> Alright then
<coolbhavi> Hello all! I am Bhavani Shankar a 25 year old ubuntu MOTU developer and Iâll be taking a session today on the new initiative we launched in the previous cycle called the developer advisory team in short DAT :)
<coolbhavi> In this session I am going to to show you how we can help you to get involved in ubuntu development if you are interested :)
<coolbhavi> so lets get started
<coolbhavi> :)
<coolbhavi> == Why are we; the DAT here? ==
<coolbhavi> The developer advisory team is a bunch of people who make ubuntu development more social in general with an aim to reach out to contributors of varied kinds (with emphasis on new contributors and help them to get around the ubuntu development world)
<coolbhavi> == Our general process ==
<coolbhavi> Our process consists of mainly 4 parts:
<coolbhavi> First part is we reach out to interested people by email (by spotting them through various ways for instance, spotting them via the number of uploads they have done this cycle or anyone who expresses interest in ubuntu development and have got their first upload into ubuntu and so on).
<coolbhavi> (PS: Chances are that if you are a new/experienced contributor, you might have got an email from the DAT too :) )
<coolbhavi> Second part is where we interview interested candidates about their experience of development in the Ubuntu world and about their aim as to what they wish to achieve in ubuntu development through questionnaires in the email.
<coolbhavi> Third part is where we provide pointers ( _not to be confused with one on one mentoring_ ) and track the progress using our own internal trackers.
<coolbhavi> (Ok lets slow down a bit if m fast)
<coolbhavi> Last part is once the candidate feels he is ready after some contributions we will help setup his application for interview with the developer membership board (DMB)
<coolbhavi> Any questions are welcome before I move ahead
<coolbhavi> to the next stage :)
<ClassBot> nja asked: ââWhat benifits do you get for being on the DMB?
<coolbhavi> nja, I'm afraid I might not be the right person to ask as I donot serve on the DMB
<ClassBot> NickE asked: ââso your main mission is to help people go from beginners / casual contributors to formally-recognised ubuntu devs?
<coolbhavi> NickE, exactly thats our mission for people who are interested to contribute to ubuntu development
<ClassBot> BebopSteve asked: Do you or do you plan on having a website with information and various references to help those new to the scene?
<coolbhavi> BebopSteve, I'll be covering it in later part of the session :)
<coolbhavi> ok lets move on then :)
<coolbhavi> ok next question which might crop up in your mind is I'm interested so how can I start
<coolbhavi> ?
<coolbhavi> our answer would be simple if you are interested we are there to help you out :)
<coolbhavi> moving on :)
<coolbhavi> == Do you personally mentor me in any way? ==
<coolbhavi> Unfortunately, the answer is ânoâ. We only provide pointers (for instance in the form of weblinks or introducing you to the team which you might be interested in contributing in (Like the desktop team, the security team, etc)
<coolbhavi> (In case you get stuck in your ubuntu development related adventure you can always get in touch with the Ubuntu MOTU devs on #ubuntu-motu on irc.freenode.net or ubuntu-motu@lists.ubuntu.com)
<ClassBot> FlowRiser asked: What is my skillset isn't that advanced or wide ?
<coolbhavi> FlowRiser, you need not have to worry not everyone will start as hardcore programmers/coders :)
<coolbhavi> == Can you provide me any pointers now to get started into ubuntu development? ==
<coolbhavi> Getting started is pretty straightforward. You can have a look at the packaging guide for a start http://developer.ubuntu.com/packaging/html/ and to get involved one can have a look at the bug fixing initiatives for a start https://wiki.ubuntu.com/UbuntuDevelopment/BugFixingInitiative
<ClassBot> NickE asked: ââCan you remind me what "MOTU" stands for?
<coolbhavi> NickE, MOTU stands for Masters of the Universe the team which takes care of universe and multiverse component in ubuntu
<ClassBot> skizobass asked: is necessary some certification for make part of the community?
<coolbhavi> skizobass, not required :) as I said earlier only interest is required :)
<coolbhavi> ok moving on :)
<coolbhavi> == What sort of people we reach out for? ==
<coolbhavi> We reach out to new contributors and to experienced contributors who do not yet have upload rights to the ubuntu archives alike, also to people who have gone inactive to see if thereâs anything we can do for them.
<coolbhavi> == I am an existing contributor for âxâ months and wish to apply for upload rights. Can you help? ==
<coolbhavi> Definitely :) (but the general requirement of the DMB is minimum 6 months of sustained contributions to apply for upload rights). Also a good idea is to reach out to your sponsors and ask them to add comments to your application.
<coolbhavi> Any questions anyone please feel free to ask :)
<ClassBot> BebopSteve asked: What is the difference between contribute and upload?  Don't you have to upload to contribute?
<coolbhavi> BebopSteve, yes but until you get upload rights to the archive you contribute your changes to a bug for instance and a person who has access to the archive uploads the change on your behalf
<ClassBot> FlowRiser asked: What do you mean by sponsors ? We do this for free :D
<coolbhavi> FlowRiser, The process of uploading a change by someone who has archive access on behalf of you is called sponsoring a package in debian/ubuntu world and the devs who do that are called sponsors
<ClassBot> skizobass asked: Is necessary be a python developer? What other work do the contributors?
<coolbhavi> skizobass, its not absolutely mandatory but experience in python development helps you to work much quicker on your favourite python stuff in the ubuntu world :)
<ClassBot> FlowRiser asked: Is it possible to list domains of activity (apps, GUI, kernel,modules, etc ) we can contribute to, in order of difficulty or skillset requirment ?
<coolbhavi> FlowRiser, yes you can have a look at the TEAMS page or the MOTU page on the ubuntu wiki for a start on different teams and how to contribute
<ClassBot> NickE asked: ââSo if you gain the trust of sponsors by doing good work, you eventually achieve the same status as them, yes?
<coolbhavi> NickE, yes :) you gain archive access and become a dev yourself :)
<ClassBot> TheLordOfTime asked: Are devs automatically sponsors, and vice versa?
<coolbhavi> TheLordOfTime, yes as they can upload your changes into the archive they can sponsor you and in debin/ubuntu world to sponsor something you need to have necessary upload rights
<coolbhavi> moving ahead then :)
<coolbhavi> == This sounds like an interesting initiative, how can I help out? ==
<coolbhavi> If you find this is an interesting initiative you can always help us to improve in the future with your feedback to us which is really valuable to us.
<coolbhavi> (Please find the feedback report of the last cycle here: http://fridge.ubuntu.com/2012/04/17/developer-advisory-team-report-12-04-feedback-from-new-contributors/ )
<coolbhavi> == Alright! Who are the current members of the team and how to get in touch with them? ==
<coolbhavi> The team in its full might is shown here: https://launchpad.net/~ubuntu-developer-advisory-team/+mugshots
<coolbhavi> For any feedback/rants please feel free to get in touch with any team member :)
<coolbhavi> Thats it I am done then :) Since time is left over anyone can ask me questions if any regarding the same :)
<ClassBot> NickE asked: ââDo members of your team have special skills in particular areas or can you all help with anything?
<coolbhavi> NickE, yes some of our team members do have I believe but we can help you out with anything thats related to ubuntu development
<ClassBot> skizobass asked: If I write apps & games with Pythonâ¦ Where I can submit me?
<coolbhavi> skizobass, we have the Application review board for reviewing apps in ubuntu and you can submit your app there
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> marcosb asked: the application review board is for all softwares or just softwares for ubuntu software center "pay area"?
<coolbhavi> marcosb, the ARB is for reviewing free apps there is a separate commercial team to review commercial apps
<ClassBot> stadtfeld asked: Do you only provide help to current contributers or to anyone who is willing to get started as well?
<coolbhavi> stadtfeld, we provide help for new and experienced contributors alike
<ClassBot> alucardni asked: can I apply for upload rights if I've been contributing to Debian?
<ClassBot> There are 5 minutes remaining in the current session.
<coolbhavi> alucardni, yes based on the impact it has got on ubuntu and you can apply for PPU I think to upload your packages
<coolbhavi> alright then thanks everyone for turning up!
<coolbhavi> you can catch me on facebook at facebook.com/bshankar or on google+ too
<coolbhavi> Until next time bye to all!
<tumbleweed> Hello everyone
<tumbleweed> thanks coolbhavi, hope you all enjoyed is 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: Fixing small bugs and forwarding the patches upstream - Instructors: tumbleweed
<tumbleweed> *his
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.
<tumbleweed> everyone having a good Ubuntu Developer Week?
<tumbleweed> Let's get an idea of how many people are here: please say hi in the chat channel
<tumbleweed> that's #ubuntu-classroom-chat, which is also the place to ask questions. 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> it's full of friendly ubuntu developers
<tumbleweed> \o/ Glad to see such good attendance at these talks
<tumbleweed> so, I'm Stefano Rivera, an Ubuntu Developer and a Debian Developer
<tumbleweed> I live in (the not quite so sunny at the moment) South Africa
<tumbleweed> (and right now, I'm in a friends flat, with a laptop, in the corner, on a 3G connection. So hopefully I won't unexpectedly vanish)
<tumbleweed> I'm here to talk about dealing with upstreams
 * tumbleweed sees a few familiar faces here :P
<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> us 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> sounds like fun, right :)
<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> So Debian is also an upstream of Ubuntu. A very special upstream which we care a lot about
<tumbleweed> We contribute a lot back to Debian (as much as possible)
<tumbleweed> https://wiki.ubuntu.com/Debian/ForUbuntuDevelopers
<tumbleweed> I can go into some more specifics of dealing with Debian, later
<tumbleweed> but, now, let's talk about upstreams in general
<tumbleweed> it makes sense to fix bugs them as close to the source as possible
<tumbleweed> that means the least duplication of effort, and shares the benefit as widely as possible
<ClassBot> marcosb asked: please tell us about packages nameclature, like hello_1.1-1ubuntu1.deb hello_1.1-1upstream1.deb etc.
<tumbleweed> sure
<tumbleweed> all .deb files are named package_version_arch.deb
<tumbleweed> the version can give some idea of the package's ancestory
<tumbleweed> packages that were written in Debian, only for Debian (and derivatives) have a version that looks like 1.0.0
<tumbleweed> there's no '-1' at the end
<tumbleweed> if a debian developer packages an usptream version 1.0.0, her package will be versioned 1.0.0-1
<tumbleweed> -1 meaning first upload to Debian
<tumbleweed> if we modify that package in Ubuntu, the version would be 1.0.0-1ubuntu1
<tumbleweed> if we jumped to 1.0.1 in Ubuntu, before Debian got there, we'd call it 1.0.1-0ubuntu1
<tumbleweed> etc.
<tumbleweed> of course, not everyone follows these rules, but almost all the time, they are relevant
<tumbleweed> so, I was talking about why we should work with upstreams:
<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> and the upstream can probably give you useful review of your bug fix
<tumbleweed> nobody knows the code like they do
<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> How can you find a bug to work on?
<tumbleweed> We've tried to put a good collection of things for new developers to work on here:
<tumbleweed> https://wiki.ubuntu.com/UbuntuDevelopment/BugFixingInitiative
<tumbleweed> The first batches there are Ubuntu-only issues, which won't require any forwarding to anyone
<tumbleweed> So they're a good place to start if you Ubuntu Development is something you want to get into
<tumbleweed> The later batches affect more than just Ubuntu, and the patches for them will need to be sent upstream
<tumbleweed> (which is what we are really here to talk about today)
<tumbleweed> Another good way to get into Ubuntu Development is to find a package that you care about, that needs work
<tumbleweed> Something with a few (or even lots of) open bugs that really just needs someone to go through them
<tumbleweed> maybe we've even fixed a few bugs in it, and not sent the patches upstream
<tumbleweed> Ubuntu developers can be naughty and lazy :)
<tumbleweed> There are *lots* of packages like that in the archive
<tumbleweed> In Debian, every package has explicit Maintainers who are looking after them
<tumbleweed> But in Ubuntu, most packages don't have anyone paying any attention to them
<tumbleweed> I've tried to collect a list of especially neglected packages that aren't in Debian, here:
<tumbleweed> http://qa.ubuntuwire.org/neglected/
<ClassBot> AmberJ_ asked: Quoting you from #ubuntu-classroom "if we modify that package in Ubuntu, the version would be 1.0.0-1ubuntu1" ... what if we don't modify Debian package in Ubuntu?
<tumbleweed> then it keeps the same version as Debian
<tumbleweed> as I said much earlier, most of the archive is entirely unmodified debian
<tumbleweed> we have a slightly different toolchain that'll build things a little differently
<tumbleweed> but most packages don't have modified source
<tumbleweed> How do you fix the bug?
<tumbleweed> That's a hard question to answer. It depends entirely on the bug
<tumbleweed> All I can really tell you about is how to get your hands on the source code and what to do once you've fixed it
<tumbleweed> dholbach will have covered the first part o fthat, yesterday
<tumbleweed> but let me remind you
<tumbleweed> install the packaging-dev package, it'll give you lots of useful tools
<tumbleweed> you can grab the source for an Ubuntu package by running: pull-lp-source PACKAGENAME
<ClassBot> marcosb asked: I learn how create patches in this session?
<tumbleweed> sure, that sounds like a useful thing to talk about
<tumbleweed> there are two common ways of dealing with source packages in Ubuntu. The traditional debian tools, and bzr
<tumbleweed> I'm going to mostly talk about the traditional tools because they are more widely applicable, and I find them faster
<tumbleweed> so, you've downloaded and extracted a source package with pull-lp-source
<tumbleweed> now, you see something obvious to fix
<tumbleweed> at this point, there could be several different things you need to do, thanks to a few different ways of packaging things
<tumbleweed> you can run the "what-patch" command to see how the package represents patches
<tumbleweed> let's assume that the package uses quilt patches, they are the most common these days. Hopefully the other systems will fade away
<tumbleweed> you'd run: quilt new MYPATCHNAME
<tumbleweed> then quilt edit FILENAME
<tumbleweed> then quilt refresh, which will build the patch
<tumbleweed> and you can find it in debian/patches
<tumbleweed> most of the time, when working on debian packages, that's how you'll be generating the patches
<tumbleweed> that patch you generated, you can now send to the upstream project
<tumbleweed> how do you find where they are?
<tumbleweed> well, let's start with Debian
<tumbleweed> every You can see more information about the package at http://packages.qa.debian.org/$PACKAGENAME
<tumbleweed> err ignore the every
<tumbleweed> so, for the hello package, go to http://packages.qa.debian.org/hello
<tumbleweed> at this point, I'm talking about source packages, not binary packages
<tumbleweed> as developers, we're almost entirely working with source pcakages
<tumbleweed> the binary packages are just smoething that'll be built when we are done
<tumbleweed> on that packages.qa.debian.org page (called the PTS, package tracking system)
<tumbleweed> you'll find a list of the debian bugs, in the top rigth corner
<tumbleweed> you can see who the debian maintainer is in the top left
<tumbleweed> and see the upload history in the middle
<tumbleweed> so, now we'd look through the debian bugs
<tumbleweed> there's currently only one
<tumbleweed> but if we saw the bug we were working on, there, we'd go and have a look at it, and see what progress there has been
<tumbleweed> maybe there's a patch on it? maybe it's been forwarded to the upstream
<tumbleweed> we can see that the bug there (bugs.debian.org/621716) has been forwarded upstream
<tumbleweed> we don't have a link to the upstream bug, though, it was just forwarded to an e-mail address
<tumbleweed> some usptream projects don't have formal bug trackers, and the best we can do is say "we mailed the author"
<ClassBot> marcosb asked: there's another patch mechanisms or just quilt?
<tumbleweed> yeah, I'm afraid so. there are two other common patch systems: dpatch and cdbs-simple-patch (but both are declining in popularity)
<tumbleweed> and some packages have no patch management system at all
<tumbleweed> that means that all the patches that debian & ubuntu have applied to the package are mixed together in one big diff
<tumbleweed> that's really easy to work with, but hard to understand what's going on in the patch
<ClassBot> calmi asked: is there a system that helps to avoid duplicates?
<tumbleweed> yes, look before you file new bugs
<tumbleweed> launchpad's bug filing interface is actually really good at this
<tumbleweed> after you've entered a title, it finds you similar bugs
<tumbleweed> the standard bug filing tool for Debian, reportbug, also presents a list of all open bugs for you to review, before filing yoru bug
<ClassBot> marcosb asked: Can you tell how generate packages with dpatch and dbs-simple-patch?
<tumbleweed> I won't cover those now, they are rare enough that we don't need to worry about them (I think)
<tumbleweed> let's rather just talk about packages that don't have any patch system at all
<tumbleweed> the easiest way to get a patch out of them
<tumbleweed> is to make your change, add a new changelog entry with dch (I assume dholbach covered that earlier)
<tumbleweed> and build a source package
<tumbleweed> then you can diff the old package to the new one with the "debdiff" tool
<tumbleweed> so, debdiff foobar_0.1-1.dsc foobar_0.1-1ubuntu1.dsc
<tumbleweed> and you'll get a patch that shows the difference between 0.1-1 and 0.1-1ubuntu1
<tumbleweed> (sorry, lost 3g signal for a minute, there)
<tumbleweed> back to what I was saying before:
<tumbleweed> so, we've been looking at the debian bug tracker, and we don't see a bug that describes the issue we ware working on
<tumbleweed> now, we make a decsion: is the bug I'm working on a debian packaging bug?
<tumbleweed> if so, we'd better forward it to debian
<tumbleweed> is it an upstream bug, but something that's important enough that we should fix it in Debian while we wait for the upstream to fix it
<tumbleweed> or it affects a debian stable release, and is serious enough that they'd want to cherry-pcik the fix for the stable release
<tumbleweed> if so, we'd also forward it to debian
<tumbleweed> if we don't have a reason to forward it debian, we are just looking for the upstream authors
<tumbleweed> we can find them in a few ways
<tumbleweed> most packages helpfully have a Homepage field in the control file, tha ttells us where the upstream project is
<tumbleweed> if there is such a tag, you'll see a link to the homepage on the right side of the PTS
<tumbleweed> e.g the hello package has such a link: http://packages.qa.debian.org/hello
<tumbleweed> taking us to http://www.gnu.org/software/hello/
<tumbleweed> and that page tells us that the hello bugtracker can be found on savannah http://savannah.gnu.org/projects/hello/
<tumbleweed> eventually, we got there.
<tumbleweed> now, we can file a bug with them (after seeing if it's already there, or been fixed already) and giv them the patch we created
<tumbleweed> \o/ success
<ClassBot> jsjgruber-l85-p asked: Might not the upstream ask us things we don't know about how the original bug reporter found the bug, etc.?
<tumbleweed> that's very likely
<tumbleweed> many upstreams aren't particularly interested in linux distributions that ship "ancient" versions of their packages to users
<tumbleweed> so, the most useful thing you can do is see if the the current development version of their package still has the issue
<tumbleweed> how you do that will depend entirely on the project
<tumbleweed> I generally find it useful to reproduce the bug myself
<tumbleweed> then I know if I've fixed it or not, for a start
<tumbleweed> and I can place myself in the same position as the original reporter
<tumbleweed> and write a good bug report for the upstream
<tumbleweed> if only every bug was easily reproduced, though :P
<tumbleweed> any more questions? we have 10 mins left
<ClassBot> There are 10 minutes remaining in the current session.
<tumbleweed> oh, snap, ClassBot
 * tumbleweed gives ClassBot a cookie
<tumbleweed> ok, well in that case, let me spend a few minutes talking about the debian bugtracking system
<tumbleweed> I'll happily be interrupted by questions, though
<ClassBot> jsjgruber-l85-p asked: What can you do if the Debian/upstream developer doesn't get back to you?
<tumbleweed> we can fix the issue in Ubuntu, and get on with lifet
<tumbleweed> *life
<tumbleweed> if the upstreams aren't responding, to anything, though, that may be a sign that they are no longer usefully maintaining their package
<tumbleweed> if they stop responding at all, and stop producing new releases, after a while, we'd remove the package from debian/ubuntu
<tumbleweed> (unless someone else takes over the upstream development)
<tumbleweed> so, I still have a couple of minutes, back to the BTS
<tumbleweed> debian's bug tracker (the BTS) lives at bugs.debian.org
<tumbleweed> the easy links for you are: bugs.debian.org/PACKAGE, and bugs.debian.org/BUG
<ClassBot> There are 5 minutes remaining in the current session.
<tumbleweed> you'll notice that there aren't any forms for adding comments or filing bugs
<tumbleweed> that's because the whole thing is driven by email
<tumbleweed> you may find that a little archaic, but it works fairly well
<ClassBot> ben72 asked: ââWhen the patch is very small, does it make sense to just post it as a comment in the bugtracker?
<tumbleweed> well, yes
<tumbleweed> that's pretty much how we forward patches
<tumbleweed> hopefully the bug trackre has some way of attaching a patch to a comment
<tumbleweed> but sometimes you just have to include the patch inline in the comment
<tumbleweed> and sometimes the patch is so trivial, that you just have to describe it and don't need a patch
<tumbleweed> if your patch is too big: you are probably better of breaking it up into multiple patches
<tumbleweed> split into logical ideas
<ClassBot> marcosb asked: after a add changelog entry and patch with quilt, i generate new source (debuild -us -uc) and thendebdiff?
<tumbleweed> debuild -uc -us -S
<tumbleweed> then debdiff
<tumbleweed> note the -S which builds a source package only, no binary packages
<tumbleweed> (it's *much* quicker to not build binaries)
<tumbleweed> ok, I guess I'm out of time
<tumbleweed> thanks everyone
<tumbleweed> hope to see you all getting involved, soon
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: libmessagingmenu - Instructors: larsu
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.
<larsu> hi everyone
<larsu> I'm Lars, I'll talk a bit about the changes we've made to the messaging menu this cycle
<larsu> most importantly: libmessaging-menu, the new API for applications to integrate with the messaging menu
<larsu> please don't hesitate to ask questions anytime
<larsu> all the changes we've made have just landed in quantal a couple of days ago
<larsu> for those of you already running quantal: that's the reason some apps show up in the menu right now ;)
<larsu> let me just give a very short overview of the messaging menu
<larsu> I assume most people here will be familiar with it
<larsu> it's this little icon that sits in your panel, notifying you about incoming messages from various applications
<larsu> also, it let's you set a global chat status for all apps at once
<larsu> and it provides a way to launch messaging-related applications
<larsu> up until now, three apps were always shown in the menu (Chat, Mail, and Broadcast)
<larsu> starting from quantal, this will not be the case anymore: if no application is configured to show up in the menu, the menu will simply disappear
<larsu> also, all applications will be referred to by their "real" name and icon, so Chat --> Empathy, Mail --> Thunderbird and Broadcast --> Gwibber
<larsu> and ubuntu1 is gone from the messaging menu. It's not a messaging app anyway
<larsu> if you're interested in why the menu works the way it is, there is a design specification with all the rationale at https://wiki.ubuntu.com/MessagingMenu
<larsu> of course, we encourage application authors to integrate their apps with the menu
<larsu> (where it makes sense of course ;) )
<larsu> !Q
<ClassBot> ironhalik asked: With the new messaging menu, what's the situation with backward compatibility with Precise and older releases? Should I develop with Quantal or Precise in mind for largest userbase?
<larsu> good question: the messaging menu in quantal is not backward compatible with the one in precise
<larsu> we pondered keeping that, but it was more work than it was worth
<larsu> to reach the biggest audience, you probably want to develop for precise, since that is the current release and it is an lts
<larsu> if you think you have cutting edge users that will mostly be on the new version of ubuntu, I recommend going with the new API
<larsu> it's much easier to use I am told ;)
<larsu> ironhalik, does that answer your question?
<larsu> so, each application gets a section in the messaging menu, which contains 3 types of items
<larsu> (1) the application launcher itself, with a litte triangle next to it if the application is running
<larsu> (2) shortcuts to commonly used actions (for example thunderbird has "Compose New Message" and "Contacts")
<larsu> (3) the most important one: message source (for example, Thunderbird will add a menu entry for each mailbox that has new messages)
<larsu> (1) and (2) are completely controlled by the applications .desktop file and cannot be changed while the application is running
<larsu> to make the shortcut actions (2) that you have defined in the .desktop file appear in the messaging menu, the "TargetEnvironment" or "OnlyShowIn" keys must contain "Messaging Menu"
<larsu> this is exactly the same way quicklists are handled for the launcher
<larsu> so, let's go ahead with a concrete example of how to use libmessaging-menu
<larsu> I'll paste a small python program line-by-line and explain what each line is doing
<larsu> first: you need the gir1.2-messagingmenu-1.0 package, which is installed by default in quantal
<larsu> as usual with gobject introspection, the first line of python is:
<larsu> >>> from gi.repository import MessagingMenu, GLib
<larsu> we'll need GLib later for the mainloop
<larsu> as an aside: nothing will get send to the messaging menu until you run the main loop
<larsu> next, you need to create a MessagingMenuApp object, which represents one application section in the menu
<larsu> >>> mmapp = MessagingMenuApp(desktop_id="thunderbird.desktop")
<larsu> you pass a desktop file id into the constructor, from which the items (1) and (2) I talked about earlier will be created
<larsu> in this case, we're pretending to be thunderbird
<larsu> to notify the messaging menu that our application is running, we call
<larsu> >>> mmapp.register()
<larsu> this does two things: if the application has never been in the menu before, a section will be created for it
<larsu> and secondly, the application will be marked as "running" (with the little triangle next to it)
<larsu> okay, now let's add a message source to the section:
<larsu> >>> mmapp.append_source_with_count("inbox", None, "Inbox", 3)
<larsu> this will append a new item with the label "Inbox" with a count of 3, which is shown on the right side of the menu item
<larsu> the first parameter of this call is a unique identifier, the second one an optional icon (or None if you don't need one)
<larsu> the third one is the label, and the fourth a count
<larsu> analogous, there's also append_source_with_time, which you can pass a time stamp
<larsu> the messaging menu will display the amount of time passed since that timestamp for these items
<larsu> (for example, empathy uses that for incoming instant messages)
<larsu> if you want the messaging menu envelope in the panel to turn blue, because the received notification is an important one:
<larsu> >>> mmapp.draw_attention("inbox")
<larsu> you just pass that function the id that we used to create the item
<larsu> now, we want to get notified when the user selects the source and - for the sake of this example - simply print which source was activated
<larsu> so we first need a small function
<larsu> >>> def source_activated(mmapp, source_id): print id
<larsu> sorry, that's "print source_id" of course
<larsu> now, we can connect to the mmapp's "activate-source" signal
<larsu> >>> mmapp.connect("activate-source", source_activated)
<larsu> the source will be automatically removed when the user clicks on it
<larsu> to try this out, let's spin up a main loop:
<larsu> >>> GLib.MainLoop().run()
<larsu> the messaging menu will automatically mark your application as "not running" when it stops running, no need to do anything
<larsu> however, if you want to completly remove the application from the menu, call
<larsu> >>> mmapp.unregister()
<larsu> your application should remove any sources from the menu when the user gets to them in some other way
<larsu> for example, when thunderbird is opened from the launcher and the user reads all messages that way
<larsu> call mmapp.remove_source("inbox") to do this
<larsu> there's not much more to it :)
<larsu> unfortunately, I didn't manage to upload the API documentation in time for this talk, but it will appear on developer.ubuntu.com soon
<larsu> and since it's a gobject-based library, your favorite programming language is most likely supported
<larsu> hm, I've been talking all this time: are there any questions?
<larsu> I've pasted our little example here: http://pastebin.ubuntu.com/1174375/
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> marcosb asked: can i implement this example in ruby?
<larsu> marcosb, to be honest, I'm not sure if there is gobject-introspection for ruby (ruby doesn't seem to be very popular amongst linux desktop programmers)
<larsu> if there is, then you can implement this example in ruby
<larsu> a quick google search seems to suggest that they exist
<larsu> well, not many questions: hope you enjoyed it anyway. Bye!
<ClassBot> ironhalik asked: Regarding the compatibility with Precise - If I was developing on 12.10 machine, how can I take the API differences into account to stay compatible with Precise?
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu Juju Tips and Tricks - Instructors: m_3
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.
<m_3> thanks larsu
<m_3> hi all
<m_3> I'll be talking about some fairly new tools we've recently added to Ubuntu Server
<m_3> I've got notes and a demo session set up at the following URL:
<m_3> http://ec2-107-22-155-155.compute-1.amazonaws.com/
<m_3> you can either go there in a browser or just ssh directly in
<m_3> the username and password are both 'guest'
<m_3> I've got a little overview of where we are in the talk and then a demo session open as well
<m_3> ok, so Juju!
<m_3> juju's a set of tools that help out when you're managing services involving multiple servers... real or virtual
<m_3> in fact... we're really trying to shift the way people think about configuring services on ubuntu server
<m_3> instead of thinking about configuring _servers_
<m_3> you configure the _services_ themselves
<m_3> let's look at some simple examples first
<m_3> (dragging heels a bit here to let peeps get connected to the demo site)
<m_3> so if we think about a simple stack of services... wordpress for example
<m_3> if you're putting this together on servers, you've got a bit of a pain in waiting for one server to reach a certain point of the install, then going to the other one... adding some config... then waiting again
<m_3> this really is a synchronization problem or what we like to call "service orchestration"
<m_3> well juju solves that problem well
<m_3> we can use a handful of really simple examples to deploy a stack of services
<m_3> I'll deploy some in real-time while we're chatting
<m_3> and that's really it... we just need to wait for those instances to start up
<m_3> first question to ask is where are these starting up at?
<m_3> these are spun up using a "local" provider (note the addresses)
<m_3> ok, well no addresses yet
<m_3> :)
<m_3> it's building out little ubuntu server instances using lxc containers
<m_3> well local provider is only one type
<m_3> we can use juju to control services on ec2 cloud, hp cloud (openstack in general)
<m_3> as well as orchestrate services on bare metal with MaaS (metal-as-a-service)
<m_3> I'll show a couple of examples of providers as we go
<m_3> it's worth noting that this is somewhat of a "toy" example
<m_3> but don't be fooled by that...
<m_3> we can do more sophisticated stacks... consider the mature mediawiki stack for a second
<m_3> we'll cover more details here, but I just want to point out that we can use juju to manage a real production-grade stack of services
<m_3> mysql with read-only replicas
<m_3> multiple wikis
<m_3> each with heads fronting multiple nodes
<m_3> all attached to the databases with monitoring and caching
<m_3> etc
<m_3> it's pretty cool from that regard
<m_3> so let's back up to our simple example
<m_3> so the services we can deploy are numerous
<m_3> the template sorta things we use to deploy services are called "charms"
<m_3> we've got lots of them already as we saw in the more complex example
<m_3> jujucharms.com shows lots more
<m_3> ok, let's check in on the simple stack we spun up a sec ago
<m_3> ok, we're golden
<m_3> note that we have two service units... mysql/0 and wordpress/0
<m_3> yes, the /0 implies that there could even be a /1000
<m_3> multiple "units" of the same "service"
<m_3> juju scales really well, but we'll get back to that in a big
<m_3> s/big/bit/
<m_3> ok note that these services have ip addrs
<m_3> well they've each got dedicated lxc containers
<m_3> we could... for instance... ssh into one of them
<m_3> so I've ssh'd to a local instance inside of this one
<m_3> similarly, if we look at the same stack up on somewhere like ec2
<m_3> (I spun this up before the talk)
<m_3> node the addresses
<m_3> and familiar service units
<m_3> mysql/0
<m_3> etc
<m_3> we can verify that the charm is up and running properly...
<m_3> which is as expected once wordpress is up
<m_3> note that when we're working on the local provider things respond a bit faster than when using remote cloud providers
<m_3> ok, so charms are the templates we use for deploying services
<m_3> and we've seen a little bit of the local provider's usefulness
<m_3> I'll leak a couple of other tips early here... charmtools
<m_3> ok, so a charm is pretty simple
<m_3> it's capturing the community's best practice for how to deploy and scale a service
<m_3> but it does it through a fairly simple structure
<m_3> the hooks/ are the magic
<m_3> they're called by juju at the right time
<m_3> _that_'s what provides the synchronization / orchestration
<m_3> the metadata for each charms shows how the "plug" together
<m_3> note the provides and requires
<m_3> tic tock
<m_3> here we can see how the ones we deployed earlier fit together
<m_3> a couple more things about charms
<m_3> the hooks are just scripts
<m_3> then can be written in any language with an ubuntu runtime
<m_3> or even compiled
<m_3> they've just gotta play nicely with shell exit codes for juju to know if they errored out or not
<m_3> ok, so the talk's supposed to be about tips-n-tricks and not just all about charms
<m_3> before I move on, are there any questions about juju in general or charms and the basics of how they work?
<m_3> ok, so tips
<m_3> we already saw "local provider"
<m_3> basics are... use it first and it's a lot quicker
<m_3> it really makes for a somewhat production-realistic dev environment
<m_3> concurrency issues'll show up earlier here than other local dev methods
<m_3> and boom
<m_3> now I've caused all sorts of problems for development if the code doesn't handle scaling or concurrencly
<m_3> it's cheap and easy for developers to test that out now... _before_ it gets into production
<m_3> we see haproxy is pending
<m_3> and that we now have a second unit of wordpress
<m_3> if you're having troubles with ajaxterm, please just ssh directly into the instance
<m_3> there's a limit to how many peeps can connect to ajaxterm at once in this incarnation of the byobu-classroom charm
<m_3> and yes, we _are_ eating dogfood here :)
<m_3> ok, so local providers cool
<m_3> next tip is about managing environments in production
<m_3> so juju manages security and access to nodes via ssh
<m_3> if you don't tell it otherwise, it injects the cli user's default ssh keys
<m_3> well in order for either a.) me to manage the env from multiple machines, or b.) multiple people to manage the environment
<m_3> then you've got to either share the private side of that key
<m_3> um... don't do that...it's bad :)
<m_3> or you set juju up with a list of additional keys to inject into everything
<m_3> juju is configured with an environments.yaml file in ~/.juju/environments.yaml
<m_3> I'll show you a sanitized version
<m_3> I've got three providers in here... local, ec2, and hp's openstack cloud
<m_3> the way to add other users to manage an environment is just the `authorized-leys` tag
<m_3> we can take a peek in the local mysql
<m_3> sorry, local provider sometimes behaves a little differently
<m_3> but we see the keys we asked it to inject
<m_3> the last one is for that instance we're controlling from
<m_3> ok, so next tip
<m_3> when we deploy like this...
<m_3> we were deploying straight from the ubuntu charmstore
<m_3> where you'll get the latest and greatest
<m_3> juju caches the version of the charm it deploys with, but only for the lifetime of the service
<m_3> that's so I can add extra units later (like we did with wordpress) and it'll use the same version as the first one
<m_3> but in general, in production it's a good idea to deploy services you care about from local repos
<m_3> note the `--repository` in the second script
<m_3> that's going to use the local one
<m_3> what I recommend here is that for infrastructure services like haproxy or mysql
<m_3> things you'd never really tweak that much except for the (extensive) config they offer
<m_3> deploy those services from the store
<m_3> custom charms or charms for things that're critical to your infrastructure.... deploy from local repositories
<m_3> it's fine to mix and match within a single environment
<m_3> now our local env has some charms from the store and some from local
<m_3> you can tell from the namespace 'cs' -vs- 'local'
<m_3> ok, next tip for production
<m_3> I usually set up a dedicated "client" environment to manage a production environment
<m_3> we leave a tmux session up that has the right views into the infrastructure
<m_3> then people can attach/detach at will
<m_3> I've found this easier to manage than to make sure every ops person in the mgmt group has the right cli setup
<m_3> ok, just noticed the time...
<m_3> there's some cool ones left
<m_3> juju ssh takes args
<m_3> so...
<m_3> that's really useful
<m_3> ok, so next trick
<ClassBot> There are 10 minutes remaining in the current session.
<m_3> jitsu is short for 'juju-jitsu'
<m_3> it's pretty much just a set of juju plugins
<m_3> lets you pipe juju status to gource
<m_3> (can't demo this here... but if you haven't seen gource, google it it rocks!)
<m_3> lets you do things like http://www.youtube.com/watch?v=Jfnxl1Kh9SY&feature=g-upl
<m_3> the coolest
<m_3> and I mean paradigm-shifting coolest thing in this talk
<m_3> is the ability to export and import between environments
<m_3> that means between _providers_ even
<m_3> I can slurp my data out of one region and into another
<m_3> we'll do A->B b/c it's simple
<m_3> and yes, that worked
<m_3> here's vid of local->hp http://www.youtube.com/watch?v=Jfnxl1Kh9SY&feature=g-upl
<m_3> and vid of ec2->hp http://www.youtube.com/watch?v=HUtR3_YlKXU&feature=g-upl
<m_3> sorry they're pretty raw (dry), but they were backup videos for a demo in case we lost networking at oscon
<ClassBot> There are 5 minutes remaining in the current session.
<m_3> note that this doesn't move data
<m_3> we'd have to do something like the 'juju ssh -e ec2-A mysqldump | juju ssh -e ec2-B mysql'
<m_3> ok, that's all folks
<m_3> I'll hang around and answer questions in #ubuntu-classroom-chat
<m_3> but we live in #juju during mostly west europe and us hours
<m_3> thanks!
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html
* ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
<mo> mo
#ubuntu-classroom 2012-08-30
<cc11rocks> I went through logs due to my absence from yesterday's and today's Ubu Dev Week discussions/tutorials. I took notes and important stuff and it would be a lot quicker to read my notes than go through the logs yourself.  If you are interested in Ubuntu/Debian bug fixing/code management, etc, let me know and I'll post the notes on Pastebin for you :)
<cc11rocks> Setup (tools and such), upstream, common commands, basic process of getting things patched, etc is what I have for you...
<cc11rocks> Took notes on "Ubuntu Developer Week 8/28/12 - 8/29/12 : Getting started" (went through the logs, took notes on it).If you would like to see the notes, go to the following link : http://pastebin.com/J1Za9cNW
<bahdem> ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS
<dholbach> Hello everybody, welcome to the last day of Ubuntu Developer Week!
<dholbach> Here are just a few organisational bits and pieces before David Planella takes over:
<dholbach> #ubuntu-classroom is used just for the sessions themselves, but you can use #ubuntu-classroom-chat to discuss everything and ask all your questions.
<dholbach> If you do ask questions, please make sure you prefix them with QUESTION:
<dholbach> ie: QUESTION: Is it true some of your teammates can discuss Metallica albums for hours?
<dholbach> Also: all logs will be available at https://wiki.ubuntu.com/UbuntuDeveloperWeek - currently you can see all the logs from yesterday and the day before.
<dholbach> If you would like to stop notices about people joining and parting coming in, please review https://wiki.ubuntu.com/UbuntuDeveloperWeek/JoiningIn
<dholbach> To stay up to date with initiatives like this one, consider following @ubuntudev on identi.ca/twitter.com/facebook.com/gplus.to
<dholbach> You still have 3 minutes to grab a tea, coffee or glass of water before dpm gets cracking :)
<dholbach> Enjoy!
<dpm> dholbach, running to the kitchen!
* 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 app development - Instructors: dpm
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/30/%23ubuntu-classroom.html following the conclusion of the session.
<dpm> Hello everyone!
<dpm> welcome to the first session of Ubuntu Developer Week Day 3!
<dpm> it's a short session today, so let's just go for it :)
<dpm> My name is David Planella and I work in the Community Team at Canonical, today with my Ubuntu App Developers Liaison hat on
<dpm> This is a bit of a different session than most of the topics this week.
<dpm> I want to tell you about building upon the Ubuntu platform and create apps that run on it,
<dpm> rather than developing and maintaining the platform itself.
<dpm> To put it simple, the subject of this session will be how to get started
<dpm> with the process of creating apps that run on Ubuntu, rather than how to developing the Ubuntu platform itself
<dpm> Both are equally fun, so feel free to pick your poison ;)
<dpm> Therefore, during the next half hour I'll be talking about how to submit your apps to Ubuntu, so
<dpm> that they get published in the Software Centre, to be distributed to millions of
<dpm> users that will surely enjoy your cool software :)
<dpm> But it will not be just a talk: I'd like everyone to participate and ask their questions at the end.
<dpm> However, feel free to interrrupt me during the rest of the session too, 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> So let's get cracking
<dpm>  
<dpm> Creating your app
<dpm> =================
<dpm> Well, the first step is obvious, you have to create your app, which is basically
<dpm> 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 that 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> You've got an overview of them here:
<dpm>     http://developer.ubuntu.com/get-started/quickly-workflow/
<dpm> What we've also got is a tool called Quickly, which puts all those technologies together
<dpm> If you want to know more about it, mterry did a nice session during this UDW
<dpm> so remember to check out the logs
<dpm> You can learn more about it here too, it's got a nice and short video tutorial to show
<dpm> you how to write a basic functional template for your app in a matter of minutes:
<dpm>     http://developer.ubuntu.com/get-started/
<dpm>  
<dpm> Which types of apps qualify
<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 in 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 to give the opportunity to app authors and Canonical to make revenue of application sales.
<dpm>  
<dpm> 1. Submitting your app
<dpm> ======================
<dpm> Ok, so all that cleared up, by this point you've already have a working app you'd like the world to see and enjoy.
<dpm> The good news is that we've got an easy, streamlined and web-based process 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 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. The process is based on Ubuntu's single login, so if you've got an Ubuntu SSO account already, it will be even quicker :)
<dpm> Also, before you continue the process of submitting the app, 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 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 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. The minimum price is $2.99
<dpm> (actually, I'd need to check if that has changed recently)
<dpm> 5 - Have a source package or a PPA for your application ready to upload - here's where you upload your actual app to MyApps.
<dpm> If you use Quickly, it will do that for you
<dpm> so that you don't have to worry about packaging
<dpm> 6 - Your app will be reviewed - before it gets into the wild, your app needs to be reviewed and QAd.
<ClassBot> nja asked: ââWhy is the minimum price $2.99?
<dpm> I believe that is (or was) a requirement from the bank that is used to do the money transfers
<dpm> so there isn't much room for play here
<dpm> but do check on MyApps and the FAQ. They should be up to date
<ClassBot> commandoline asked: Is there any chance that open source apps developed this way can also get into debian?
<dpm> They are all open source apps and they are publicly available in the extras.ubuntu.com archive, so I can't see no reason why someone can port them to Debian, most probably with minimal or no packaging changes
<dpm> ok, let's continue
<ClassBot> There are 10 minutes remaining in the current session.
<ClassBot> moez asked: i want to develop an app well integred to gnome-shell, unity and even kde. Quickly can't do it for me. is there any tool can make it easier?
<dpm> Quickly is focused on Ubuntu, but ultimately, it creates a Python app. You can use Quickly to create your app and then modify it to integrate into all of those shells
<ClassBot> jsjgruber-l85-p asked: Are there plans for apps to declare what permissions they will need so the consumer can make a choice to trust an app developer or not (like Android's store)?
<dpm> that's an excellent question
<dpm> we have actually been discussing this over the course of the last few weeks
<dpm> but such a feature is dependant essentially on sandboxing working well for all use cases
<dpm> we've been discussing a plan for it, but it will span multiple releases to complete
<dpm> stay tuned very soon for an announcement on the ubuntu-devel mailing list, and on the Ubuntu app development channels
<ClassBot> moez asked: i'm using lauchpad for my app, and i want to ask help for design as asking help for translate. how?
<ClassBot> There are 5 minutes remaining in the current session.
<dpm> for design, I'd recommend heading to design.ubuntu.com. For translations, I'd recommend sending an e-mail to launchpad-translators(AT)lists(DOT)launchpad(DOT)net
<dpm> They are stripped during the build on the Launchpad buildds and put into the language-pack-* packages instead.
<dpm> There is a set of language packs per language
<dpm> They are divided roughly between generic translations and those which are used in a GNOME-based desktop and those used in a KDE-based desktop
<dpm> Although this cycle, with KDE being in universe
<dpm> we won't have KDE translations in language packs
<dpm> We essentially make use of language packs to deliver translations independently from applications and thus we're able to ship regular translation updates throughout a distro
<dpm> lifecycle
<dpm>  
<dpm> Translations Import Workflow
<dpm> ----------------------------
<dpm> On a 1000 feet view, what happens when you do a package upload is that their translations get stripped by a tool called pkgbinarymangler, and they are put in a translations tarball containing a translations template (more on this later on) and the translations themselves.
<ClassBot> TheLordOfTime asked: if KDE translations arent included in language packs, how would KDE users get their localization/translation packs?
<dpm> Ah, good question, but don't worry
<dpm> They will still be shipped, simply not in language packs
<dpm> what we do in language packs is to extract translations from the original packages, combine them with those from launchpad, and ship them separately in the actual language pack packages
<dpm> in the case of KDE, translations will simply not be extracted and shipped in the original packages
<dpm> so all is good :)
<ClassBot> chilicuil asked: so, may I have translations from programs I've not installed?
<dpm> Another good question
<dpm> Yeah, that's actually the case
<dpm> We put translations for all translatable software from main, restricted, universe in the langpacks, and you'll get them even if you haven't installed the software
<dpm> but this just amounts to a bit of extra space, which 99% of users won't even notice or need to worry about
<dpm> so where were we?
<dpm> Oh, translations being extracted from packages...
<dpm> ok, so here's what happens next
<dpm> This tarball with extracted translations is then fed to Soyuz (an internal Launchpad component), which ends up handing it to the translations imports queue. There, they will be eventually processed, approved and imported into Launchpad, at which point they will be exposed in the translations web interface ready for translators to do their job.
<dpm> If you are interested in seeing what the imports queue looks like, you can see the translation uploads currently pending review here:
<dpm> https://translations.launchpad.net/ubuntu/quantal/+imports?field.filter_extension=pot&field.filter_status=NEEDS_REVIEW&start=75&batch=75
<dpm> That's the global imports queue, but you can see it per package as well
<dpm> https://translations.launchpad.net/ubuntu/quantal/+source/unity/+imports
<dpm> So now we come to the nitty gritty details... :)
<dpm>  
<dpm> Package Modifications for a better Ubuntu integration
<dpm> -----------------------------------------------------
<dpm> In order for translations to be imported to Launchpad and in order to direct translators to the translations page to start contributing straight away,
<dpm> we make two main changes to the application at the packaging level:
<dpm> * Creation of a POT file on build - We require the .deb package to produce a .pot translation template during the build, which will be imported into Launchpad and be used to expose translations for translators to do their work.
<dpm> Actually, I think we can leave it to one change :)
<dpm> For those not familiar with the concept of a POT template:
<dpm> It's a textual file with the .pot extension
<dpm> and it's what Launchpad use as the source for exposing translations
<dpm> all translations in all languages will be based on that template, which contains the translatable messages in English
<dpm> It's generally built by gettext-based tools
<dpm> which extract translatable messages from the code in an application
<dpm> and put them in the textual .pot file
<ClassBot> There are 10 minutes remaining in the current session.
<dpm> Actually, seeing that there are only 10 mins left, I think I'll wrap it up here and point you to:
<dpm>     https://wiki.ubuntu.com/UbuntuDevelopment/Internationalisation/Packaging
<dpm> There you'll find the information I've been talking on in this session, and more
<dpm> As per contributing with translations, the best place to get started is on:
<dpm>     https://wiki.ubuntu.com/Translation
<dpm> Ok, time for some questions, bring them on! :-)
<ClassBot> JoseeAntonioR asked: How can I start a translation team for a language that hasn't been set up yet?
<dpm> Aha, nice question!
<dpm> You'll find detailed, step-by-step information on how to do that here: https://wiki.ubuntu.com/Translations/KnowledgeBase/StartingTeam
<ClassBot> There are 5 minutes remaining in the current session.
<dpm> ok, any other questions, or anything you've always wanted to know about translations and were afraid to ask?
<dpm> ...3...
<ClassBot> marcosb asked: shell scripts
<ClassBot> marcosb asked: translation on shell scripts
<dpm> ok, let me rephrase that... any _easy_ questions? ;-)
<dpm> just joking, but translation of shell scripts is a bit hard to get right
<dpm> and not always works fully
<dpm> I'd recommend reading the gettext documentation for that, which contains a couple of good examples
<dpm> my recommendation is that if you want to make a script translatable, just use Python
<dpm> which fully supports gettext
<dpm> ok, so time's up!
<dpm> Thanks everyone for listening in and I hope you enjoyed 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: Adding test cases with UTAH - Instructors: gema
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/30/%23ubuntu-classroom.html following the conclusion of the session.
<gema> Hello everyone!
<gema> I am Gema Gomez-Solano and I work in the Platform QA Team in Canonical
<gema> and I am going to talk about UTAH, or the Ubuntu Test Automation Harness,
<gema> it is a testing tool we are creating because we were lacking coherence in our testing
<gema> weâd like to share it with other groups in case anyone is having the same kind of problems
<gema> UTAH is a tool that is meant to help with end to end test automation.
<gema> you can find the project in launchpad: https://launchpad.net/utah
<gema> ok, so let's get started with what UTAH does
<gema> it takes care of provisioning a machine from any iso or existing provisioned machine, installs either a VM or a physical machine with it and then it runs the tests and report the results back
<gema> before this project we were doing a lot of development work that was tailored to solve a particular problem, we had to do installs for ISO testing, for Kernel SRU testing, for upgrades...
<gema> we are interested in using hardware as well as VMs, 32 and 64 bits, ARM
<gema> so we had many scripts to solve all these problems separately, furthermore, this was happening not only in the QA Team, but also in the development teams.
<gema> there was a lot of redundant code being created everywhere
<gema> the creation of this code was getting on the way of the real development of automated tests, because at the end of the day, how you provision a machine may or may not be relevant to your testing
<gema> so we thought of this project to unify all the scattered work we were doing
<gema> the test cases can be written in any programming language and then be wrapped with UTAH to be able to run them in an fully automated fashion
<gema> you can also choose to schedule things with jenkins, which is the scheduler of choice of the QA Team, or you can choose to schedule runs with cron or just kick off a run manually whenever you need it
<gema> we are expecting UTAH to help also reproducing bugs,
<gema> whenever we find a bug with automated testing, we should be able to give a preseed and  a runlist to the developer and he should be able to reproduce the problem at home,
<gema> without having to worry too much about installing a system
<gema> so we are trying to make testing repeatable
<gema> I will describe a bit how the testing is meant to be structured in UTAH
<gema> Testing structure
<gema> Test cases are the smallest execution unit in UTAH, we prefer them to be in separate files, so that we can choose to execute a particular binary, but if your binary takes parameters and executes different test cases based on the parameter, that works also well.
<gema> Test cases can have set up and tear down, so that you have control over your test environment
<gema> Test cases also need to leave the system in the same state they found it, this is good practice and avoids problems down the line.
<gema> So do not make test cases dependant on each other so that they have to run in any specific order!
<gema> Test cases  can be grouped in test suites.
<gema> Test suites are group of test cases that target a particular piece of functionality and that makes sense to *maintain together*
<gema> i.e. the code is going to be maintained by a particular developer who is the expert on that part
<gema> for instance, file system testing may make a nice test suite, and then we could choose to
<gema> execute only some of those for smoke testing and all of them if we wanted full regression testing
<gema> We are going to use test suites to group test cases that are functionally similar, or that are targetting a particular piece of functionality
<gema> We also have runlists, which is a list of test cases and/or test suites that are run together
<gema> For instance, for smoke testing, which is the daily testing we do every day to validate Ubuntu images, we will have a runlist.
<gema> We may need more than one smoke testing runlist if we decide to run different test cases on different images for any reason, or on different architectures.
<gema> runlists are groups of tests that makes sense to *run together*.
<gema> runlists may be different for quantal and precise, for instance. We may want to run different test cases in one case and the other, and runlists help us achieve that
<gema> do you guys have any questions/comments?
<gema> ok, you can interrupt me any time, I will continue with what UTAH provides to the tester
<gema> So we've spoken already about provisioning, and how UTAH can do that for you
<gema> Test cases can be written in any language, as long as they are binaries that report success or error in a traditional way.
<gema> UTAH captures and reports stderr and stdout, so any output really will do, as long as you are able to parse it afterwards
<gema> UTAH can handle reboots, so if for instance a test case needs to reboot in the middle of the execution, UTAH will reboot the machine and continue executing from then onwards
<gema> Test cases have timeouts, test suites have timeouts and you can even define a timeout for the overall execution
<gema> this is particularly important in full automation, because you donât want your servers to be stuck on neverending jobs whenever something goes bad with the testing
<gema> Runlists can cherrypick test cases from test suites, and they can either include test cases or exclude some
<gema> we have added the options to help with maintainability of runlists
<gema> What is the status of the development
<gema> We are using UTAH already for bootspeed testing
<gema> so any bootspeed testing results you see from now on, come from tests executed with the harness
<ClassBot> There are 10 minutes remaining in the current session.
<gema> we are slowly migrating also ISO testing, so that our smoke testing runs with the tool and we can concentrate on adding more coverage easily
<gema> before the scripts were not so flexible and we need to maintain several copies of the same test cases for different configurations, which is not ideal
<gema> we are trying to avoid that going forward
<gema> the most difficult part of migrating from our current system, is to decide how to structure the test cases in the new world so that they grow in the right direction
<gema> we are also working on provisioning ARM, so that we can finally run ARM tests fully automated in the lab
<gema> this will be coming soon
<gema> any questions anyone?
<ClassBot> TheLordOfTime asked: How does one get UTAH so we can use it?
<gema> good question, TheLordOfTime !
<gema> the documentation on how to install and get utah is available online
<gema> http://utah.readthedocs.org/en/latest/index.html
<gema> and you can also join our mailing list
<gema> https://lists.canonical.com/mailman/listinfo/ubuntu-utah-devel
<gema> in case you run into problems
<ClassBot> There are 5 minutes remaining in the current session.
<gema> it is early days and we are getting it ready for everyone now
<gema> there doesn't seem to be any more questions
<ClassBot> jsjgruber-l85-p asked: Is it possible to have Utah test GUI applications?
<gema> good question, right now that is not posible, but we are working on enabling it
<gema> the reason it is not possible is because utah connects to the host to run the tests via ssh
<gema> and we haven't decided how to start the x session and test from there
<gema> if you have suggestions join the list and share them
<gema> we are about to finish this session, but I am still here for the coming 30 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: Q&A about test automation - Instructors: gema
<gema> ok, so I wanted to have time to talk about testing and automation in a more generic way
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/30/%23ubuntu-classroom.html following the conclusion of the session.
<gema> not just utah, but discuss options that people have when considering automating testing for their applications/packages
<gema> do you guys have any question that needs addressing?
<gema> or want to know anything about how we are running all the automated tests you see in jenkins?
<ClassBot> marcosb asked: say frameworks for automatized test for Linux.
<gema> ok, marcosb, let's see
<gema> I have already spoken about UTAH
<gema> we have also in the ubuntu world autopilot
<gema> you can use Xpresser
<gema> you can even use checkbox for some existing test cases and certification
<gema> marcosb: do you have any particular need to address so that I can give you a better answer?
<gema> please, feel free to ask questions in this channel directly
<gema> since this is more of a round table kind of session
<gema> it makes sense
<gema> no need to prefix with QUESTION:
<chilicuil> sure gema, is nicolas skeggs part of your team?, or we have several testing teams here?
<gema> chilicuil: nicholas skaggs is the QA Community coordinator
<gema> so basically my team work focussed on automation and we also do manual testing during milestones
<gema> which is what nicholas is coordinating
<gema> so we work directly with nicholas in things that are open initiatives
<gema> and just work in canonical creating test cases that nicholas and you guys can use to drive your testing later
<gema> we do both things
<gema> nick is not in our team but we talk on daily basis and collaborate
<ClassBot> marcosb asked: No just interested about possibilites :)
<gema> marcosb: ack
<gema> chilicuil: do you collaborate on the ubuntu QA team?
<chilicuil> gema: not yet
<gema> chilicuil: we'll be happy to have you onboard whenever you want :)
<chilicuil> I was just wondering why I've heart about UTAH in the mails nicolas send almost every day =)
<chilicuil> I've not*
<gema> chilicuil: because utah is in the process of being created, we are not fully in production yet
<gema> so nicholas cannot still use our runlists
<gema> but believe me he is asking me on regular basis :)
<chilicuil> that answer my question, I hope to join u soon
<gema> excellent
<gema> any other questions / concerns?
<gema> well, we have still some minutes to go, so let me know if you guys have anything
<wan26> i was wondering what timezone the schedule for classes is in, i looked at the link provided here.
<wan26> for future reference
<TheLordOfTime> wan26:  the schedule is in UTC i think
<TheLordOfTime> (GMT +- 0)
<gema> yes, that confused me too
<TheLordOfTime> "Events shown in time zone: GMT (no daylight saving)"
<wan26> Thank you :)
<gema> so if you guys want to have a look at results of our automated testing, feel free to look at jenkins
<gema> https://jenkins.qa.ubuntu.com/
<gema> we are working on a different view for results, but for now jenkins does the job
<ClassBot> There are 10 minutes remaining in the current session.
<gema> and if you want to collaborate with QA for Ubuntu, you can start on the wiki of the QA Team
<gema> https://wiki.ubuntu.com/QATeam/
<gema> so if you guys do not have any more questions on QA, make sure you stay tuned for the next session, which is about WebApps
<gema> in under 10 minutes
<chilicuil> thanks a lot gema, I feel me a little bit lost with jenkins so I think I'll check it out before joining the team
<JoseeAntonioR> we'll also be having a Developers Roundtable, where you'll be able to ask questions, share your experiences, and bring ideas about development :)
<gema> chilicuil: no worries about jenkins
<gema> chilicuil: to be able to help you only need to know how to install ubuntu and have some machine or VM to do it
<gema> jenkins is automated testing, it is what my team and others in Canonical do
<gema> but people from the community can also help by testing images
<gema> during milestones
<gema> http://iso.qa.ubuntu.com/
<gema> have a look here ^
<gema> no need to understand jenkins for that :)
<ClassBot> There are 5 minutes remaining in the current session.
<chilicuil> I'll do gema, I just though I need to make sense of the results jenkins gave
<gema> and if you wanted to know, say.. how quantal's image today is doing, you'd go here:
<gema> https://jenkins.qa.ubuntu.com/view/Quantal/view/ISO%20Testing%20Dashboard/
<gema> and you see what image is being tested in the description
<gema> and if it is sort of good or not
<gema> it is just an indication that it is worth installing
<gema> and doing further testing
<gema> on it
<wan26> Is this to gather as much data as possible for compatibility? Looks interesting
<gema> wan26: we are not doing compatibility testing yet
<gema> we still have to cover the basis of functional!
<chilicuil> got it, so if I see an image with lots of failures is it good to test?, in order to file bugs for example?
<gema> chilicuil: the other way around
<gema> when the automated testing is all red
<wan26> aha I see
<gema> it is not worth for you to try
<gema> because it will probably not work
<gema> you are welcome to, but you may encounter problems
<gema> when things are green in the automated world
<gema> then it is worth for people with brains to try and install
<gema> because that finds problems
<chilicuil> I'll stick with the iso.qa.ubuntu.com pagen then =)
<gema> that the robot cannot find
<gema> chilicuil: good choice :)
<gema> we are wrapping up this session guys, we are in #ubuntu-testing if you want to continue this conversation
<gema> or ask anything in the future
<gema> a pleasure talking to you!
<chilicuil> have a nice day gema, thanks for sharing UTAH with us
<wan26> thanks
<gema> thank you 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: Getting started with Ubuntu WebApps - Instructors: lamalex, alex-abreu
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/30/%23ubuntu-classroom.html following the conclusion of the session.
<alex-abreu> Hi All
<lamalex> hello everybody
<alex-abreu> welcome this this session about Unity Web Apps technology
<lamalex> we're both on Canonical's webapps team, working on- well webapps
<lamalex> Canonical introduced webapps for a few reasons. We want to help close the gab between desktop and web development
<lamalex> the distinction is kind of arbitrary and the only barrier is technological
<lamalex> we're not the first to try and do this, but we think there is some novelty in our solution
<lamalex> previously its been tried to bring html5 development to native apps, i think rick spencer wrote up a demo of this a few months ago. that's cool and all, but it leaves a lot to be desired
<lamalex> we're trying to allow the web to integrate itself into the desktop via a javascript api that site authors can use to make their web application feel at home on a desktop, not like webapp but integrate into the shell just like a native application
<alex-abreu> From the javascript API exposed to integration scripts (we will talk about what it is later) we offer multiple desktop integration points
<alex-abreu> from this, the script has access to functionnalities from the messaging menu, the sound menu, the launcher (new icon, quicklists and counts),
<alex-abreu> the dash (dynamically added actions), drag and drop (each integration scripts declares a set of mime-types that it supports)
<alex-abreu> and the alt-tab switcher
<alex-abreu> we plan to add more in the future (not necessarly in terms of API changes but better desktop integration to get closer to native feel)
<alex-abreu> the integrated view of a given webapp can be reached in two ways basically
<alex-abreu> 1. by browsing (with firefox or chromium at this point) to a supported websites, i.e. one that has an installed integration script associated, or one that "natively" integrated with Ubuntu through a direct usage of our API
<alex-abreu> 2. by using the launcher icon to start an already integrated web application, it then start a browser window (default one) in a special "chromeless" mode
<alex-abreu> this basically does not limits you to a given specific way to access a supported webapp
<alex-abreu> The chromeless mode offers a streamlined view of the default browser, removing all the unnecessary chrome keeping only the multitabs view
<alex-abreu> the menu is then streamlined to the bare minimum (and in the future will be expanded with webapp specific commands)
<alex-abreu> and some generic actions are disabled
<alex-abreu> the idea of a chromeless window is also to also act as a container for a group of common webapps (based on same website)
<alex-abreu> e.g. for the google docs webapp
<alex-abreu> all your document should open in the same chromeless window, nothing else
<alex-abreu> browsing outside of googledocs from a given chromeless tab will open a new chromeless window and start a new webapps container
<lamalex> we're really excited that this work we're doing offers so much opportunity for the Ubuntu community to contribute
<lamalex> now that we've introduce what we're trying to build, there are 2 more parts of our talk here. next we're going to give an overview of how all of the components fit together. then we'll go through a tutorial of writing a userscript
<lamalex> that's where the most help from the community will come, we hope. the more apps are integrated the better our work is and the better the web experience on ubuntu  becomes.
<lamalex> we have some plans for the future to bring all of the work we've done to the various web standards bodies so that this can all be web supported cross platform work, started by and best on Ubuntu
<lamalex> ok onto the overview
<lamalex> first up is the userscript. this is the javascript code that integrates with a webapp to provide integration.
<lamalex> there are 2 types of scripts. userscripts and native
<lamalex> a userscript is essentially a greasemonkey script that gets injected into the browser and executed when the page loads, just like normal javascript.
<lamalex> these are what we ship in the unity-webapps package
<lamalex> these work to parse the DOM tree, and by making various calls to the Unity webapps API (http://developer.ubuntu.com/api/ubuntu-12.04/javascript/unity-web-api-reference.html) manage to send and receive messages to and from the launcher, HUD, messaging menu, and all of the various integration points
<lamalex> these are the bread and butter of what we do. the rest of our work goes into building the support structure so these work
<lamalex> our goal is for web developers to integrate our API right into their site so that the userscripts arent necessary, relieving us of a maintenance burden and allowing the web developers who really know their code, to craft a really beautiful and fully integrated experience for their site
<lamalex> so far we're already seeing some adopting of our API with web developers
<lamalex> for instance, Rd.io have integrated the unity api into their webapp
<alex-abreu> whatever the mean of integration as explained above
<alex-abreu> everything through browser specific extensions
<alex-abreu> that acts as a bridge between the "integration script" and the native backend
<alex-abreu> that communicates with the various Unity components targetted
<alex-abreu> the extensions manage all the tasks related with injecting our API, keeping track of the integration elements, and doing some book keeping in the background
<alex-abreu> two extensions are available, one for chromium and one for firefox
<alex-abreu> the one for chromium, can be seen in when navigating to chrome://extensions
<alex-abreu> without going too much into the technical side (ask questions if needed), each navigated tab has a content script associated to it that communicates back and forth with a background page script that checks if one or more integration script are available for the currently visited URL
<alex-abreu> the content script also injects the API in the javascript "world" associated with the page so that anywebsite can "natively" use it
<lamalex> The logic of the firefox extension is very similar to that of the chromium one, but the firefox extension uses a forked version of greasemonkey to handle loading and injecting the userscripts. In Quantal we ship Firefox with a patch that backports a feature from FF17 that allows us to get the XID of the tab. We use this for window tracking, raising the right tab of a webapp, and stuff like that
<lamalex> From the browser extensions, the data sent via the API shoots to a daemon running in the background.
<lamalex> there are two daemons, context-daemons and the webapps-service daemon
<lamalex> webapps service takes care of general tasks (unrelated to specific website).
<lamalex> and the context-daemons do the integration for each instance of a webapp and the desktop
<lamalex> if you open up D-feet, the dbus browser and type webapp
<lamalex> you'll see the named service bus and a few private ones
<lamalex> the private ones represent an instance of a webapp. those are spawned each time you open gmail, docs, twitter, etc
<lamalex> ok- now onto the tutorial! we're going to walk through the one published on webapps.ubuntu.com
<lamalex> http://developer.ubuntu.com/resources/app-developer-cookbook/unity/integrating-tumblr-to-your-desktop/
<lamalex> which i guess we should also pimp out webapps.ubuntu.com as the developer site for webapps. API docs, tutorial, etc is all there. if you need info- that's a good place to start
<lamalex> so let's just jump right in- you're all literate and can read the tutorial in its entirety at another time. we just want to help you explore the API
<lamalex> this tutorial is mostly based around the tumblr dashboard so if you don't have a tumblr account you'll have to a) make one or b) just follow along and try modifying what we're doing to match some other site. that's really what you'll be doing when you write a userscript anyway
<lamalex> this tutorial uses firefox, let's use chromium just for change of pace. open up tumblr.com in a chromium browser and log in to the dashboard
<lamalex> ctrl+shift+j will open the javascript console
<lamalex> this is where we'll be working for the rest of this demo- and while we're doing this demo I suppose we can start Q&A since we're running out of time. Sound good to you alex-abreu?
<lamalex> step 1 is always to load the unity object, and is done the same way every time
<lamalex> in your JS console enter window.Unity = external.getUnityObject(1);
<lamalex> the parameter (1) is for API version.  it's just to ensure your script is set up to use the proper version of the API.
<alex-abreu> (sure)
<alex-abreu> Please keep in mind that a given integration script will be run & executed everytime you basically browse a webpage
<alex-abreu> one thing that you will see in most of the integration scripts already there
<alex-abreu> is a function called isCorrectPage()
<alex-abreu> this is not mandatory per se
<alex-abreu> but strongly advised
<alex-abreu> one of the *important* thing that we try to do is to *expand* the user's experience
<alex-abreu> without altering the experience or deteriorating it if something is wrong
<alex-abreu> or even modifying the webpage in any way
<alex-abreu> so the idea behind the function above, is to make sure that the webpage has all the elements that you expect it to have before starting an init
<lamalex> are we out of time already?
<ClassBot> There are 10 minutes remaining in the current session.
<lamalex> yar
<lamalex> so if we refer to the tutorial, we see is isCorrectPage function wrapping a call to Unity.init
<lamalex> Unity.init is the base function for all of your userscripts. This kicks off a new context-daemon, adds an icon to the launcher/switcher
<lamalex> it takes its parameters in the form of a dictionary and has 3 required parameters
<lamalex> name, iconUrl, onInit
<lamalex> name is the name of your webapp, very obvious
<lamalex> the icon url is a url to an icon. this can take the form of icon:// for a local icon in an icon theme- or the location of an image on a webpage
<alex-abreu> (make sure to select a meaningful name, it will be used when the user is being asked for integration permission)
<lamalex> for instance the url to the tumblr icon on the dashboard is http://assets.tumblr.com/images/logo.png. so you could do:
<lamalex> Unity.init({name: "Tumblr", iconUrl: "http://assets.tumblr.com/images/logo.png", onInit: wrapCallback(setupTumblr)});
<lamalex> and this would use the hosted tumblr icon rather than one installed in the system.
<lamalex> onInit is a callback and that's where all of the meat of your userscript will happen
<ClassBot> There are 5 minutes remaining in the current session.
<lamalex> once the daemon has been initialized and all of the system bits are ready to go, this will be called and your script will start to run. in here you integrate with the messaging menu, etc
<lamalex> since we're pretty much out of time I don't see much reason in going too much deeper. like we said, there's a helpful tutorial available from http://developer.ubuntu.com/resources/app-developer-cookbook/unity/integrating-tumblr-to-your-desktop/
<lamalex> and #ubuntu-webapps is always available if you need more help feel free to ping any one of us
<lamalex> are there any questions?
<lamalex> comments?
<alex-abreu> once your callback (specified in the onInit propery or the init() call) is called, you will have: a launcher icon present and be ready to use the API and integration points
<lamalex> thanks for tuning in. hope this session was informative and inspiring
<lamalex> go write userscripts
<alex-abreu> you can reach us and ask any question in #ubuntu-webapps as stated by lamalex, or in askbuntu.com w/ the "webapps" tag
* 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: u1db: synced data for your apps on many platforms - Instructors: aquarius
<aquarius> Hi! I'm Stuart Langridge, and I'm here to talk about u1db.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/30/%23ubuntu-classroom.html following the conclusion of the session.
<aquarius> first, thanks to the Alexes :-)
<aquarius> The subtitle for this talk on the schedule is "synced data for your apps on many platforms", and that's what u1db does.
<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 app, you could have the same data sync between all your Ubuntu machines, 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 desktop and your smartphone 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 isn't.
<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 now available in Ubuntu Quantal, but for this demo please get the Launchpad version because it contains the example app as well!)
<aquarius> Once you have u1db, this should work and not throw errors: PYTHONPATH=u1db python -c "import u1db"
<aquarius> (I pause a little to give people a chance to grab u1db :))
<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> (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> (you might need to apt-get install python-qt4 if you don't have it)
<ClassBot> calmi asked: python is the recommended language?
<aquarius> calmi: I'll get to that. It is *a* language you can use :)
<aquarius> there are many others :)
<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.
<aquarius> So, let's see how this actually works. I'll show using U1DB from Python on Ubuntu, but 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. 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> and we now have three documents.
<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> so we have an index, named "by-position", indexing all documents on the field "position".
<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> 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 and a mobile version on your Android phone and a web version, all able to sync data between themselves.
<aquarius> Part of the goal of U1DB is that if you decide that you want to be able to use it in a platform we haven't provided (and you can't or won't bind to the C version) then it ought to be possible to do a full reimplementation of it in your chosen language for your chosen platform
<aquarius> There's a very comprehensive test suite exactly so that it's possible to test compliance.
<aquarius> So we're building U1DB for a whole load of different platforms, and it's possible to bring it to others.
<aquarius> U1DB is in Ubuntu Quantal, so your apps can depend on it.
<aquarius> You don't actually have to sync data to use U1DB, of course: you can just use it as a database and never sync it at all!
<aquarius> If you use U1DB in an app now, then you can add syncing later when you choose to.
<aquarius> This has been a brief tour of U1DB, and I'm sure there are questions, so I'll happily take them now :)
<ClassBot> jsjgruber-l85-p asked: How is this different from couchdb?
<aquarius> Similar goals, similar-ish implementation, but the big difference is that U1DB runs in your process, and it's built separately for each platform and uses the platform's native data storage capabilities.
<aquarius> So couchdb was a server; if you wanted to use couchdb on your phone, you (or someone else) had to port the whole couchdb server to that platform, and run it as a server there and connect to it.
<aquarius> u1db is built separately and independently for each platform
<aquarius> so it's not making one codebase run everywhere; an implementation can do whatever makes the most sense on the platform it's on: an Android version would likely be written in Java, for example
<aquarius> and an in-browser JavaScript version would be run entirely by your web app; it's not a separate server that you have to deploy and secure, it's entirely client-side and then you sync it with a u1db server elsewhere.
<aquarius> using the DB is similar: it's a store of JSON documents, which is similar to couch.
<aquarius> does that answer the question? :)
<ClassBot> jsjgruber-l85-p asked: How will it avoid the scaling problems couchdb had on the U1 infrastructure?
<aquarius> we've deliberately built the U1DB server infrastructure to work exactly for this use case
<aquarius> I'm not the server scaling expert, but I know the people who are :) If you have specific questions, we can answer them
<ClassBot> wan26 asked: What encryption scheme is used for sync?
<aquarius> Sync to Ubuntu One is always over SSL
<aquarius> If you run your own server, you are able to run it over SSL or not as you choose
<aquarius> and sync to U1 is authenticated the same way as all the other Ubuntu One APIs
<aquarius> again, if you run your own server, you can (and should) define your own authentication policy :)
<aquarius> The best place to learn about u1db is the documentation, as mentioned, at http://packages.python.org/u1db/
<aquarius> There are introductory materials there to get started, and a much deeper dive into the intricacies of querying, syncing, replication, and so on when you want to do more complicated things
<aquarius> or if you want to do a new implementation of u1db for a different platform
<aquarius> but the best thing is to use u1db as it exists and build apps on it :)
<aquarius> one of the apps in the recent Ubuntu App Showdown (tickit) is using u1db for storage precisely to get syncing capabilities
<aquarius> and we have a bunch of others talking to us as well :)
<aquarius> you can get hold of the u1db team if you have questions once you start development on irc, here on freenode, on #u1db
<aquarius> and the mailing list at https://launchpad.net/~u1db-discuss
<aquarius> and if you fancy helping me work on the JavaScript version, that'd be great :P
<aquarius> So, that concludes the brief tour: if you have questions, or you're thinking of using u1db, or curious as to how you'd use it, speak now. :)
<aquarius> Cool, no more questions
<aquarius> So, thank you for your time: come and tell us about which apps you're using u1db in!
<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: Developers Roundtable - Instructors: ScottK, bdrung
<bdrung> hi, i am Benjamin Drung, a Debian and Ubuntu Developer. I am here to answer your questions.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/30/%23ubuntu-classroom.html following the conclusion of the session.
<JoseeAntonioR> ok guys, so let's get started with the roundtable
<JoseeAntonioR> thanks everyone for coming to our Ubuntu Developer Week for this cycle
<JoseeAntonioR> I hope you've enyojed all our sessions, this is the last session for this event :)
<JoseeAntonioR> this is basically a session where you're able to interact with different developers, so, if you're a developer just say hi, and bring in your question
<JoseeAntonioR> or if not, and just want to ask, go ahead, you're free to :)
<JoseeAntonioR> some of you can also be sharing experiences as developers later, so get ready for this last hour!
<bdrung> if you will have questions later, feel free to ask them on IRC (in #ubuntu-devel, #ubuntu-motu, or #ubuntu-packaging) on on the mailing lists.
<JoseeAntonioR> let me remind you all interaction is via this channel (#ubuntu-classroom), as this session is non-moderated
<JoseeAntonioR> so, anyone's got any questions?
<TheLordOfTime> JoseeAntonioR:  note that some questions might drop into -chat, for those using lernid.
<TheLordOfTime> ;)
<JoseeAntonioR> and I'll get them here, so don't worry about that
<JoseeAntonioR> so, if you're a developer, or would like to get started on it, raise your hand!
<JoseeAntonioR> o/
<wan26> I'd like to get started but don't know how to become directly involved
<thummar> o/
<wan26> o/
<JoseeAntonioR> wan26: I'm sure many people have that problem :)
<stadtfeld> o/
<jincreator> o/
<bdrung> wan26: don't you know on what you should work or don't you know how to interact with Ubuntu?
<chilicuil> o/
<JoseeAntonioR> great, seems like we've got many people in here, anyone else? :)
<bdrung> i started becoming a Ubuntu developer by scratching my own itch. i needed a newer version of matplotlib and tried to update the package.
<bdrung> thummar: ask!
<raki1> o/
 * ScottK is here now too.
<JoseeAntonioR> seems great!
<JoseeAntonioR> so, bdrung, can you please tell us about your experience as an Ubuntu developer?
<ScottK> I came in at bdrung saying "i started becoming a Ubuntu developer by scratching my own itch." - This was true for me too.
<bdrung> scratching your own itch is a very motivating reason to start working on free software.
<bdrung> finding an itch is easy: you probably experienced a bug that annoys you or you want a newer version of a program, but it's not updated in the current development release.
<bdrung> over 4 years ago, i participated in a packaging jam, in which dholbach explained how to package stuff.
<bdrung> i saw all the tools used in a very short time, but i knew that i would be able to learn them.
<bdrung> packaging is knowing a bunch of command line tools and file formats.
<ScottK> Finding an itch was a start, but it's not what sustains me.  I think people should do their bit to make the world a better place and contributing to free software is part of how I do that.  I wrote about it a few years ago: https://skitterman.wordpress.com/2009/05/31/back_home_from_uds_karmic/
<JoseeAntonioR> seems great, so anyone else here has got any experiences you want to share with us?
<chilicuil> I've a question, hope u dont matter if I do it while sharing experiences, what are ur favorite|most used tool in the ubuntu-dev-tools pkg ?
<bdrung> there are a bunch: syncpackage, wrap-and-sort, sponsor-patch come to my mind
<bdrung> syncpackage is for syncing a package from Debian to Ubuntu. if you have no upload right, you will probably use requestsync instead.
<bdrung> wrap-and-sort will make your debian/control file look nicer (at least for me)
<JoseeAntonioR> ok, so, cdunlap asks: Do they still do packaging Jams where you can get some of this knowledge?
<ScottK> Developers use tools very differently and that's OK.
<ScottK> I use syncpackage all the time, but I've never used the other two.
<bdrung> sponsor-patch is for sponsoring a package for someone else, it download the source package, applies the proposed patches, test builds it. this tool allows me to concentrate on looking on the proposed changes.
<ScottK> I think they still do packaging jams, but there's no need to wait.  I learned before such a thing existed.  If you've got something to work on, dive in and start and the people on #ubuntu-motu will be glad to help if you get stuck.
<bdrung> ScottK: you should try wrap-and-sort! ;)
<ScottK> There's lots of documentation (enough to be overwhelming), but as long as you're trying to figure it out and not just waiting to be spoon fed, people will help you.
<ScottK> Don't worry about appearing not to know stuff when you ask questions.  I've been doing this since 2007 and I still have questions.
<bdrung> cdunlap: i can't remember when we had the last packaging jam. The Ubuntu Developer Week is a equivalent event that can trigger someone to start diving into development.
<wan26> I've noticed many people write code differently, how do you deal with that if someone has a different style ? or is there a general style you all adhere to?
<ScottK> The biggest problem I see people have with getting into development is not being enough of a self-starter.  This is not a regular job with a manager that will set work in front of you and tell you what to do and when it needs to be done by.  You need to find the motivation in yourself to get something done.  If you can find that, you'll succeed because the actual technical knowledge needed for most package activities isn't that complex
<ScottK> (there's a lot of it, but the individual pieces aren't hard).
<JoseeAntonioR> calmi asked: to the experienced developers: can you still abstract your point of view? i.e. can you still put yourself in the posion of - let's say your father trying to get things done with little knowledge about computers?
<ScottK> wan26: Distribution packaging is primarily integration work, so we don't write a lot of code from scratch.  If you're working on patching something to fix a bug or work better on Ubuntu, you generally want to stick with the upstream style for consistency and to maximize the chance of the patch getting accepted upstream.
<ScottK> JoseeAntonioR: It's very difficult.  I often ask people who are new to development to go fix documentation after I help them with something because they are much better positioned to write it so it works for the new developer audience than me.
<JoseeAntonioR> calmi: ^
<ScottK> Right.
<chilicuil> do u use the distributed development system (branch/merge) or are u stick with the debian way to produce the patches?, do you think the new Ubuntu way is ready to use safty for new contributors? what're some of the things that the Ubuntu way cannot still handle?
<ScottK> I never use UDD.
<ScottK> I tried it and found it more complex and the tools not mature.
<ScottK> I think it's a mistake to teach it to new people first since as soon as they hit a branch that's out of date, they have to go back to the old way, so they still need to know that too.
<bdrung> calmi: good question. I help a bunch of people in my neighbourhood to maintain Ubuntu. looking at how they interact with the computer shows the difference to my usage. I do stuff quickly and often on the command line, but that doesn't explain what prevents them to do the same stuff.
<ScottK> Also, if you want to get involved in Debian (which I recommend), you're better off knowing how the more general tools work.
<ScottK> That said, I love the package branches that are generated on each upload.  It makes it very easy to go back and figure out what changed, when and why.
<ScottK> It's an awesome tool for forensics.
<JoseeAntonioR> any other questions or ideas?
<bdrung> I rarely use UDD. I do most of my stuff in some Debian version control systems (in most cases: git).
<ScottK> That does bring up another good point.  Both bdrung  and I are also Debian developers.
<ScottK> We both started with Ubuntu and migrated to start doing work in Debian too.
<jincreator> Many Ubuntu developers are also Debian developers(as far as I know). What makes them(you) also start paritipate in Ubuntu?
<ScottK> So for packages I maintain, I'm almost always uploading to Debian and syncing.
<ScottK> I started in Ubuntu.
<bdrung> More people benefit if you do stuff upstream.
<ScottK> Exactly.
<bdrung> jincreator: I started in Ubuntu and became Debian Developer (DD) afterwards.
<ScottK> Also if changed done in Ubuntu get ported up to Debian, that's less work for Ubuntu developers to have to deal with.
<ScottK> This is important.  Debian has about an order of magnitude more developers than Ubuntu and so it's critical for as much to be done there as possible.
<bdrung> Doing stuff just in Ubuntu will give you a diff between Debian and Ubuntu. Then a Ubuntu Developer needs to maintain this diff. This takes time that could have been used for something else.
<ScottK> Also Debian package maintainers are experts in their package so by working with Debian people you get good feedback it's hard to get in Ubuntu where most developers are generalists and few packages have dedicated maintainers.
<bdrung> Debian has around 1000 developers. Ubuntu has only around 150.
<ScottK> I know Debian developers that have gotten involved in Ubuntu.
<chilicuil> in order of difficultity how would you clasify the tasks you do?
<ScottK> Generally it seems to be either a desire to learn about issues with their packages (Ubuntu has a LOT of users and the file a lot of bugs) or they consider worrying about users of Debian derivatives like Ubuntu a natural extension of the Debian Social Contract.
<bdrung> that depends. doing one specific task the first time can be difficult. doing the same task for the tenth time is easy.
<stadtfeld> Let's say you start contributing by doing some bug fixes and writing some patches, what happens next? How do you go from being let's say casual contributer  to ubuntu developer?
<chilicuil> I mean, I find myself creating a patch for an Ubuntu package a lot easier (if it's not a difficult one) than merging or working with FTFBS, I've never managed to fix one of those
<ScottK> stadtfeld: Usually people are seriously considered for being an Ubuntu dev until they've been contributing for about six months.
<bdrung> stadtfeld: once you contribute for at least a half year and your sponsors have nothing to complain about your proposed changes, you can apply for uploads rights at the Developer Membership Board (DMB)
<ScottK> Sometimes sponsors will tell you they think it's time to apply.  If you think maybe you're ready, you should ask people that have been sponsoring you.
<ScottK> chilicuil: Fixing a FTBFS is still just some kind of a patch usually, it's just often hard to figure out what the patch should be.
<stadtfeld> I see, thanks :)
<bdrung> stadtfeld: you could also ask your sponsors if they think that you are ready to get upload rights. in my case my sponsors encourage me to apply for uploads right before i was thinking about it.
<bdrung> chilicuil: it's very useful to know the programming language (and sometimes the build system) to fix a FTBFS.
<bdrung> chilicuil: it often depends on the background what is considered easy or hard.
<ScottK> The hardest thing is packaging something new from scratch.  Not because it's particularly complex, but because to do this you need to know about all aspects of packaging.  I think that's the one thing to stay away from to start.
<bdrung> yes, starting with packaging something from scratch is not a good idea.
<ScottK> Becoming an Ubuntu developer is a very big step.  It means you can upload code to the official archive without further review that might eventually run on millions of desktops.
<ScottK> It's critical that the community know you well enough to trust you before granting that privilege.
<JoseeAntonioR> calmi asked: how is the relationship between ubuntu developers and those of ubuntu "official" derivates as k/x/lubuntu and especially linux mint "secessionists" ;)?
<ScottK> I'm not aware that there is one.
<ScottK> I know Ubuntu works really hard to push fixes it does into Debian and I've done so literally hundreds of times.
<ScottK> I don't recall ever seeing someone from Mint doing the same.
<ScottK> Ubuntu has a lot of derivatives and I don't think anyone in Ubuntu minds a bit.
<ScottK> As a rule though, I don't think there's a lot of interchange.
<ScottK> It's equally possible that I'm working with people who also work on Mint and I just don't know it.
<ClassBot> There are 10 minutes remaining in the current session.
<bdrung> The difference of Ubuntu/Kubuntu/Xubuntu is just the CDs. There is no difference between a Kubuntu or Xubuntu developer. We all work on the same archive. Just a different set of packages is used to build the CDs.
<ScottK> Yes.
<jsjgruber-x-p_> Can you get upload rights without packaging from scratch?
<ScottK> Yes.
<gustavo_> enc
<ScottK> If you've done enough other things.
<ScottK> We generally encourage new packages to go to Debian these days so packaging from scratch in Ubuntu is not the norm.
<JoseeAntonioR> calmi asked: so everyone does his thing in "his tribe" except ubuntu-debian?
<bdrung> I newer met a Mint developer. Maybe I worked with them, but then they didn't say that they were from Mint.
<ScottK> calmi: We can't answer that.
<ScottK> I do know that the Sabily developers are active in Debian/Ubuntu.
<ScottK> So that's at least one exception.  The Ichthux developers were too when it was active.
<ScottK> So there are some exceptions.
<bdrung> calmi: Mint uses the Ubuntu archive and add some packages, but Ubuntu uses just the source packages from Debian.
<ScottK> I also see developers from other Debian derivatives active in Debian.
<chilicuil> the people who help u to come abroad are still part of ubuntu?, do u see people leaving ubuntu at the same rate new people jumps in?, how is the relation?
<bdrung> calmi: Every update to the Ubuntu archive will end up in Mint.
<ScottK> One point I want to make sure that I make is that Ubuntu participation is based on contribution and merit.
<ScottK> It doesn't matter who you work for.
<ClassBot> There are 5 minutes remaining in the current session.
<jincreator> How much times do you spend on contribuing Ubuntu?
<ScottK> I'm, among other things, a member of the Ubuntu Archive team who's job it is to check and make sure new packages are legal for Canonical and the Ubuntu mirrors to distribute, even though I don't and have never worked for them.
<bdrung> chilicuil: most of them are still active. some are less active than they used to be. the job and the real life can influence the time you have to spent on Ubuntu.
<ScottK> jincreator: It varies a lot.  I've probably spent less than two hours this week, including this last hour, but then some times I've spent full days on it.
<bdrung> jincreator: around one hour per week for the DMB and a varying timespan for packaging stuff (between 0 hours till 60 hours per week)
<ScottK> I've done all nighters where someone broke something and I was the only one around that could fix it.
<bdrung> jincreator: i have spent just this hour this week for Ubuntu, because i am ill.
<jincreator> It really varies a lot! bdrung: Hope you get better soon.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/30/%23ubuntu-classroom.html
<ScottK> Feel free to ping me on #ubuntu-motu if you have 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 ||
<JoseeAntonioR> ok guys, so this is the end of the session
<bdrung> jincreator: thanks. i feel better today. no headache any more. yeah!
<JoseeAntonioR> and also the end of the Ubuntu Developer Week for this cycle
<JoseeAntonioR> I hope you all enjoyed the sessions, I should also thank all the instructors who volunteered for doing this, you've done a great job
<JoseeAntonioR> we'll be having some Ubuntu on Air sessions and the Ubuntu OpenWeek soon, so stay tuned! again, thanks for being here :)
<chilicuil> \o/, thanks a lot guys!
<jsjgruber-x-p_> Thanks, all.
<bdrung> if you still have questions, feel free to ping me on #ubuntu-devel, #ubuntu-motu, or #ubuntu-packaging
#ubuntu-classroom 2012-08-31
<starmedia> Hello
#ubuntu-classroom 2012-09-01
<smile4> bye :)
#ubuntu-classroom 2012-09-02
<your_favorite_ni> i just finished putting ubuntu desltop on a compaq presario f700 ...it acted like it was working but then when i restart it says no operating system found... help!?!
<stevenjames>  i just finished putting ubuntu desltop on a compaq presario f700 ...it acted like it was working but then when i restart it says no operating system found... help!?!
#ubuntu-classroom 2014-08-28
<fherba> hello
#ubuntu-classroom 2014-08-29
<fherba> hello
