=== johnsgruber is now known as jsg1234567
=== jsg1234567 is now known as a123456789012345
=== a123456789012345 is now known as jsjgruber
=== _LibertyZero is now known as LibertyZero
=== max is now known as Guest23210
=== zyga is now known as zyga-afk
=== zkriesse_ is now known as Guest31717
=== shadeslayer_ is now known as shadeslayer
=== jpds_ is now known as jpds
dholbachHELLO MY FRIENDS!15:51
dholbachWelcome to the last day of Ubuntu Developer Week!15:51
dholbachI'm as sad as you all are, but I guess that's just how things go :)15:51
dholbachToday is another action-packed day, which will kick off with Sam "smspillaz" Spilsbury and a great presentation about fixing bugs in compiz15:52
dholbachBy now most of you know the organisational stuff already15:52
dholbach - Make sure you're in #ubuntu-classroom-chat as well, so you can ask questions there and please prefix them with QUESTION:15:53
dholbachie: QUESTION: Is it hard to survive in the DX team as a vegetarian?15:53
dholbachsmspillaz, you have my sympathy15:53
dholbach - And also: Check out https://wiki.ubuntu.com/UbuntuDeveloperWeek for logs of all the past sessions15:53
smspillazdon't worry, you can always order a salad and find steak in it :)15:53
smspillaz(at least, only in dallas)15:54
dholbachI know the "bonus meat" - it's always just "for the taste" :)15:54
dholbachalrightie... you still all have 6 minutes, so take it easy and enjoy the last day of UDW!15:54
smspillaz6 minutes to track down and fix this bug that I'm workign on mwahahahaha15:54
dholbachsmspillaz, the stage is yours!16:00
smspillazlovely, we're ready to start16:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Fixing bugs in compiz - Instructors: smspillaz
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html following the conclusion of the session.16:01
smspillazhey everyone, you may have heard of me before, you may have seen my funky hair or youthful appearance :) I'm Sam Spilsbury, the current maintainer of compiz, the compositing window manager behind unity16:01
smspillazlast UDW I gave a session on how to write plugins for this wonderful window manager16:01
smspillaztoday I'm going to give you a session on how it works and how you can fix the little odd corner cases within it16:02
smspillazso agenda:16:02
smspillaz1. What is compiz and how does it work16:02
smspillaz2. Gimmeh teh code16:02
smspillaz3. Where is everything in the code?16:02
smspillaz4. How can I get fixes to you16:02
smspillazfantastic, okay, item one, what is compiz and how does it work16:03
smspillazso you've probably all heard of compiz as the bit of magic on the system that provides all of the bling, best known for things like wobbly windows, spinnan cubez ;-) etc16:03
smspillazor drawing fire on the screen16:03
smspillazhowever, compiz is also responsible for a lot of other stuff too16:04
smspillazfor example, even when your screen is idling and you've just got some windows up16:04
smspillazcompiz is drawing the entire contents of those windows to the screen16:04
smspillazor when you grab a titlebar to move a window, compiz is handling the grab of the titlebar, the moving of the window and the placement of the window16:05
smspillazit also handles resizing windows, focus stealing prevention, tiling windows16:05
smspillazdrawing the window borders on windows16:05
smspillazbasically, if it ends up on your screen, compiz is probably doing some work somewhere16:05
smspillazso, because of that, we call compiz a "compositing window manager" because it "composites" windows on screen as well as determining how they behave16:06
smspillazand because of that, there's a lot of scope for things to go /wrong/ too16:06
smspillaz(especially in the land of X11 window managers)16:06
smspillazfor example, if a window is placed off screen, that's a compiz bug16:06
smspillazor if movement makes the window jump a little, compiz bug16:07
smspillazor if windows jump around when maximized and the resolution is too low for that window16:07
smspillazcompiz bug16:07
smspillazso the kind of bugs that you do get in compiz aren't all complicated graphical ones where the effects don't work16:07
smspillazit can even be small window management related things16:07
smspillazso there's lots of scope for bugs to fix16:08
smspillazand luckily, these window management ones are not too tricky to fix16:08
smspillazso as for how it works16:08
smspillazso basically compiz' main job is to communicate with the X Server (or X11) on your system to find out the contents of windows and what properties and hints the application has set on them, and then combine them with user input in order to implement a set of rules for how windows behave on screen16:09
smspillazusually problems happen in one of three places16:09
smspillazfirst, in communication with the X server16:10
smspillazsecond, the process of turning that communication and user input produces something which is not correct16:10
smspillazor third, actual graphical problems16:10
smspillaz3) is a realm that is rather complicated and that we won't look into16:10
smspillaz1) is also quite complicated, but for new contributors, it can be worked out fairly quickly (though you should ping marnanel or me if you plan to work in this area)16:11
smspillazand 2) is where the easy wins lie16:11
smspillazso now you ask, how do I find the bugs in compiz16:12
smspillazbasically, they're all on launchpad16:12
smspillazright now, all of the bugs are filed against the compiz package on launchpad16:12
smspillazhowever, a few days ago, I mirrored all of our components (incl. plugins, settings, everything) to launchpad too in separate launchpad projects16:13
smspillazso now as we're sorting through the bug queue, I'll be assigning bugs against that larger package to the smaller components, eg, core, plugins, settings16:13
smspillazlets have a look now at the bugs filed against the compiz package on ubuntu16:13
smspillazhere's the algorithm I use to sort "that looks nasty" from "easy win"16:14
smspillazanything regarding visual glitches? (corruption, blank windows)16:15
smspillazthat's probably something quite nasty16:15
smspillazsomething like "compiz does this when it should do this"16:15
smspillazeg "places transient dialogs behind currently focused window"16:16
smspillazthat's an easy win16:16
smspillazthe next thing to determine if its easy is to find out if there's a reproducible test case16:16
smspillazusually the reporter would have said something about that16:16
smspillazif it's not reproducible easily, then its not going to be easy to fix16:16
smspillazbecause often fixing the bugs requires a very close tracing of what's going on16:17
smspillazusually I find that if a bug can't generally be reproduced then I ask the bug reporter to show an application which is triggering the problem or a screencast of what's going on16:17
smspillazreproduction is 90% of the way to fixing it16:18
smspillazanything about compiz crashing with SIGSEGV can contingently be easy wins16:18
smspillazhave a look at the stacktrace that apport gives you16:18
smspillazif it's full of things like "??" then it's not useful16:19
smspillazif it has references to "nux::" in it, then it is probably a bug in untiy or nux and not in compiz (though this should be mostly resolved by apports heuristics)16:19
smspillazhowever, if it's got references to things like "PluginScreen::doBlahBlahBlah" then you're good16:20
smspillazespecially if the stacktrace ends within compiz itself16:20
smspillazok, now you're probably asking me "where do I get all of this stuff! I want to get my hands dirty hackign on this!"16:20
smspillazwell, compiz is hosted upstream at git://git.compiz.org and also mirrored in launchpad at lp:compiz-core16:21
smspillazif you're used to working with launchpad, then I'd suggest using launchpad as it has some rather powerful features16:21
smspillazusually we try to keep the ABI/API of upstream compiz in sync with what downstream ubuntu is shipping16:21
smspillazthat way, if you build core, you also don't have to rebuild plugins16:21
smspillazhowever, in the rare circumstance that this is the case, you'll need to rebuild some of the other standard components16:22
smspillazso, that being lp:compiz-core lp:compiz-plugins-main lp:libcompizconfig lp:compizconfig-python lp:ccsm16:22
smspillazfor each of those, it's as easy as doing something like mkdir build; cd build; cmake ..; make && make install16:23
smspillaz(compiz uses the cmake buildsystem)16:23
smspillazif there's a break in the API/ABI you'll also need to rebuild unity16:24
smspillaz(that's lp:unity)16:24
smspillaz(same instructions_)16:24
smspillaza small protip: since the window manager is a fairly core part of your system, its nice to have a working one if you're hacking on compiz and have happened to break things16:24
smspillazso you can install cmake-curses-gui and run ccmake .. and change the CMAKE_INSTALL_PREFIX to something that is not in the system $PATH16:25
smspillazfor example, I keep mine in ~/Applications/Compiz16:25
smspillaz(so you need to adjust your PKG_CONFIG_PATH LD_LIBRARY_PATH LD_RUN_PATH XDG_DATA_DIRS PATH and PYTHONPATH to reflect that change)16:26
smspillazin order that I don't get carpal tunnel syndrome, I usually just keep a script in my ~/.bashrc with a function to export those variables correctly16:26
smspillazso now that you've got the source code, where is everything16:27
smspillazwell, if we have a look into http://bazaar.launchpad.net/~compiz-team/compiz-core/0.9.5/files16:27
smspillazyou'll see there is quite a lot there16:27
smspillaz(and this is just for core, but that's where all the bugs lie anyways)16:27
smspillazso first of all, you can ignore cmake/ po/ xslt/ metadata/ images/ legacy/ (I should really remove that)16:28
smspillazthose are all either there for building compiz or default settings16:28
smspillazgtk/ is where the GTK-Window-Decorator lives and kde/ is where the KDE4-Window-Decorator lives16:29
smspillazbasically in compiz, window borders, titlebars, menus etc are handled in a bit of a special way16:29
smspillazthere's a process called a "decorator" which runs outside of compiz and actually draws the contents of the window borders16:29
smspillaz(there's a good reason for this, and that is that it is not a good idea to mix toolkits and window managers)16:30
smspillazso part of the titlebars are handled by compiz and part of them are handled by the decorators16:30
smspillazbasically, what the decorators do is talk with compiz' decor plugin over X11 window properties using the protocol defined in libdecoration16:31
smspillazthey specify the geometry of the backing input window for the decorations as well as a pixmap which is the contents of that decoration16:32
smspillaz(they work independently to figure out the contents of every single window decoration)16:32
smspillazthey also handle all the input events on the backing input window for the decoration and tell compiz when to start moving and resizing windows16:32
smspillazso that's the decorators in a nutshell16:33
smspillazas for plugins/16:33
smspillazsurprisingly, a lot of stuff in compiz is handled by plugins16:33
smspillazfor example, moving a window by dragging it's titlebar or alt-drag is handled in a plugin16:33
smspillazor resizing a window in the same way also in a plugin16:33
smspillazthe alt-tab switcher is in a plugin16:34
smspillazeven rendering using OpenGL is in a plugin16:34
smspillazthe compiz end of window titlebars and frames are also in a plugin16:34
smspillazthe way those plugins work is fairly simple, they take some user interaction and modify the state of the window system based on it16:35
smspillazbut the real magic of compiz happens within core16:35
smspillazwhich is that subdirectory named /src16:35
smspillazcore is both a lovely and scary place16:35
smspillazlovely because you can see all the hard-set policy of compiz16:35
smspillazscary because this is where communication with X11 happens and a lot of it isn't pretty16:36
smspillazmost of core is separated out into separate files so you can see what's going on16:36
smspillazaction.cpp is the file which handles the dispatching "compiz events" (eg ctrl-alt-left to move desktops) on X11 input events16:37
smspillazevent.cpp is where we handle X11 events and change state based on policy16:37
smspillazmost of that happens in this gigantic function here16:38
smspillazI'll run through them breifly16:38
smspillazbasically, we have to dispatch "actions" on key and button events (also also enter/leave events for edge windows)16:38
smspillazthere are also a number events that we only get because we're the window manager16:39
smspillazso SelectionRequest and SelectionClear are basically two special events which exist when another window manager or compositing manager wishes to take over from us16:39
smspillazsections are explained here16:40
smspillazthey aren't really of all that much concern to compiz16:40
smspillazthe next is ConfigureRequest (will come back to ConfigureNotify in a second)16:41
smspillazbasically, in X11, we can set an event mask which stops all other application from being able to resize windows except us16:41
smspillaz(that being the magical SubstructureRedirectMask)16:41
smspillazwe do this on what's called the root window16:41
smspillazwhich is the topmostlevel window in the window heirarchy16:42
smspillazall windows are children of the root window16:42
smspillazby selecting SubstructureRedirectMask on the root window, we are telling X11 that no client which is a direct child of this window should be able to resize itself16:42
smspillazor move itself16:42
smspillazor change its stack position16:42
smspillazwhen that happens, compiz gets a ConfigureRequest event16:43
smspillazat which point, compiz decided whether to allow the window to move, resize, or restack itself16:43
smspillaz(in most cases, it will just go straight through, however we may need to adjust the request a little so that windows don't go above, eg, panels)16:43
smspillazby calling XConfigureWindow on the window, we override the substructureredirectmask and change the size,position,stacking of the window ourselves, usually what the application wanted16:44
smspillazMapRequest is another important event16:44
smspillazit happens when a window attempts to display itself16:45
smspillaz(using XMapWindow)16:45
smspillazin that case, we need to set its initial position and also some properties on the window16:45
smspillazthen there are the "Notifies"16:45
smspillazso ConfigureNotify happens whenever the size,position,stacking of a window *actually* changes16:46
smspillazthis is usually in response to us changing the size,position,stacking of the window ourselves, but watch out, because some windows are "override redirect" and will be able to change their positions anyways regardless of our SubstructureRedirectMask16:47
smspillazthere is also FocusIn and FocusOut which we use to handle focus stealing prevention16:47
smspillazso once compiz processes these events, where do they actually go?16:47
smspillazwell, for any request that tries to *change* the size,position,stacking of a window, that's all handled in a function called CompWindow::moveResize16:48
smspillazfor any request that tries to create a new window, that's all in ::processMap16:49
smspillazonce a window *is* resized, restacked or moved, that's handled in CompWindow PrivateWindow::configure16:49
smspillazor PrivateWindow::configureFrame if it is a normal toplevel window16:49
smspillaz(eg reparented)16:49
smspillazin response to a window being mapped, we've got CompWindow::map and CompWindow::unmap for UnmapNotfy16:50
smspillazCreateNotify creates a new CompWindow16:50
smspillaznow finally there is this big block called PropertyNotify16:50
smspillazin there are handlers for a whole bunch of changes to window properties known as "atoms"16:50
ClassBotThere are 10 minutes remaining in the current session.16:51
smspillazbasically, applications set hints on windows for how they're supposed to operate16:51
smspillazthat's all specified in a standared known as the Inter Client Communications Conventions Manual and the Extended Window Manager Hints16:51
smspillazhere: http://tronche.com/gui/x/icccm/ and here: http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html16:52
smspillazprotip: unless you want your brain to explode, I would NOT read those all at once16:52
smspillazrather, if you hit a bit of the code which deals with a particular property, go look in those manuals16:52
smspillazsince those explain what that property does16:52
smspillazfor example, when a window changes state we get a property notify for _NET_WM_STATE (Atoms::winState)16:53
smspillazthe relevant section in the manual specifies what each state is supposed to mean16:53
smspillazthat's pretty much how compiz operates as a window manager16:53
smspillazthe logic controlling how each request and event handler is supposed to work is all implemented in window.cpp and screen.cpp16:53
smspillazscreen.cpp is the "toplevel" object handling the window management context16:54
smspillazand window.cpp is for each window16:54
smspillazok, now how to make your stuff rock16:54
smspillazonce you've tracked down the bug, and fixed it in the implementation section or the communication section you can create a launchpad branch merge proposal16:54
smspillaznot that compiz is an upstream project as such you do not need to sign the contributor agreement for it16:55
smspillazmerge propose your branch to lp:compiz-core16:55
smspillazor if you're working on a plugin outside of core lp:compiz-$whatever-plugin16:55
ClassBotThere are 5 minutes remaining in the current session.16:55
smspillaz(don't merge propose to lp:compiz-plugins-main or lp:compiz-plugins-extra)16:55
smspillazonce that's done, the launcher team and the other compiz maintainers will look over it16:56
smspillazand approve and merge it if its good16:56
smspillazhappy bug fixing!16:56
smspillazNow is the time to hit me with questions16:56
smspillaz(and not pet bugs)16:56
smspillazok, we had a question and ClassBot isn't picking it up16:57
smspillazQUESTION: (App writing) What's the best way to resize a ui  file defined gtk window before showing it (getting dimensions  from preferences before display), so Compiz will put in in a  good place. Seems like the window size defined in the ui file  is the only one compiz looks at.16:57
smspillazso this is more of an app developers question16:57
smspillazbut basically, compiz places windows in the "least used space possible"16:57
smspillazso if you want to get a good position, you should make the size of the application in the ui file the actual size that you plan to use16:58
smspillazyou can also modify the win_gravity hint16:59
smspillazthat will make a window more likely to be placed in a certain area of the screen by default16:59
smspillazhave a look at the section called "window geometry" in the Extended Window Manager Hints16:59
smspillazokay, that's it17:00
smspillazback to work for me :P)17:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Helping develop the Ubuntu Websites - Instructors: mhall119, nigelb
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html following the conclusion of the session.17:01
mhall119hello everyone, my name is Michael Hall, and I'm one of the community webapp developers17:01
mhall119you may not know it, but there are several projects that live under the *.ubuntu.com domain that are actually designed, developed and maintained by the Ubuntu community17:02
mhall119among the biggest are the loco directory at http://loco.ubuntu.com and the UDS scheduler at http://summit.ubuntu.com17:03
mhall119a larger (but by no means complete) list of these projects can be found under our umbrella project: https://launchpad.net/community-web-projects17:04
mhall119most of our projects are written in Python and use the Django web framework17:05
mhall119which makes them pretty easy to get started hacking on17:05
mhall119the sites themselves are hosted on Canonical's servers, so we regularly interact with their IS team as well17:06
mhall119any questions about community projects in general?17:07
ClassBotabhinav_singh asked: Are there PHP based web projects?17:07
mhall119not yet, no, though we do maintain Wordpress and Drupal themes that match the ubuntu.com page17:08
mhall119not that we have anything against PHP, it just so happens that the projects we've accumulated have all been Python17:09
mhall119though status.ubuntu.com might be in PHP, cjohnston recently added that one so you can check with him17:09
mhall119I'm going to single out the loco directory to show you how to get it set up, but the process will be similar across all of our django projects17:12
mhall119first you need to find the development focus by checking https://launchpad.net/loco-directory17:12
mhall119in this case, it's lp:loco-directory17:13
mhall119so you can just run "bzr branch lp:loco-directory"17:13
mhall119if you plan on making a single contribution, that's easy enough, but if you plan on working on multiple features or bug fixed, I'd highly recommend you follow the guide described here: http://micknelson.wordpress.com/2011/05/19/sharing-your-development-environment-across-branches/17:14
mhall119for loco-directory, there are instructions for setting up a python virtualenv here: https://wiki.ubuntu.com/LoCoDirectory/Development#Using_Virtualenv17:16
mhall119virtualenv is great for python development because you can use python packages specific to your project, without them conflicting with versions used by other projects17:16
mhall119Django provides a manage.py script that lets you perform various setup and maintenance activities, some of which I'll cover in a minute17:17
mhall119it also provides a settings.py for configuring your project.17:18
mhall119since some configuration settings are specific to your environment, you might want to override them by creating a local_settings.py, an example of which is included in the local_settings.py.sample17:19
mhall119an example of why you would want this is database configuration17:19
mhall119loco-directory uses postgresql by default, but that's a pretty big requirement for development, so you can tell Django to use an sqlite database, which is much simpler17:20
mhall119once you have your django project configured, you will usually run "python manage.py syncdb", which will create any database tables Django needs to save your project's data to the database17:21
mhall119after that, loco-directory provides a couple of commands for populating your database17:21
mhall119the first is "lpupdate", which will perform a series of calls to Launchpad to retrieve the list of loco teams and their admins17:22
mhall119this will give you the minimum amount of data that loco-directory needs, you won't have events, meeting or venue data17:22
mhall119the second option is "import-live-data", which uses the loco-directory's JSON API to populate your local database with a copy of what is in the production site.  This will give you everything you need to test out new features or reproduce bugs, but it can take a long time (upwards of an hour) do to the amount of data17:24
mhall119you can do either of these by calling manage.py again: "python manage.py lpupate" or "python manage.py import-live-data"17:24
mhall119but, by far the easiest option is to get a relatively up to date copy of someone else's sqlite database, which I happen to have for you here: http://people.ubuntu.com/~mhall119/loco-directory/17:25
mhall119once you have that, you can run "python manage.py runserver" to run the loco-directory through Django's built in web server, which is perfect for development and testing17:25
mhall119any questions so far?17:26
mhall119I guess not17:28
mhall119each of our projects generally has a lead developer, who is your best point of contact for getting setup, as well as designing new features of solving bugs17:29
mhall119for loco-directory, the lead is cjohnston17:29
mhall119for summit it's nigelb17:29
mhall119for cloud portal: daker17:30
mhall119and for hall of fame it's cdbs17:30
mhall119the leads generally set the targets for new features, and will also prioritize bugs if necessary17:31
mhall119but you are encouraged to make whatever contributions interest you17:31
mhall119some projects, like loco-directory, will tag small, easy bugs as "bitesize", and this is a good way for you to get starting making a contribution while you get familiar with the codebase17:32
mhall119here's the list for loco-directory: https://bugs.launchpad.net/loco-directory/+bugs?field.tag=bitesize17:32
mhall119once you have your local setup working, the process for contributing is generally the same:17:33
mhall1191) find a bug or feature to work on17:33
mhall1192) fix/implement it17:33
mhall1193) push it to a bzr branch on launchpad using "bzr push lp:~${your username}/${project name}/${branch name}17:34
mhall119where ${branch name} is a unique name for your branch, typically something like "fixes-12345" where 12345 is the bug number17:35
mhall119then you find your branch on launchpad and click the "Propose for merging" link and describe what your branch does17:36
mhall119you should also add a "commit message" on this page, this is what will be added to the bzr log when your branch gets approved and merged17:36
mhall119from there one of the developers on the project (not always the lead) will review your code, and either ask for changes or approve it17:37
mhall119once it's approved, it will automatically be merged into the project's main branch17:37
mhall119all of this is pretty standard for Ubuntu distributed development17:37
=== zyga-afk is now known as zyga
mhall119any questions?17:39
mhall119you don't need to know Python to contribute either, there's plenty of work that can be done in the HTML, CSS and Javascript sides too17:40
mhall119Oh, I forgot to mention, discussion of community web projects is held in the #ubuntu-website channel here on freenode17:44
mhall119you can find one or more of us there pretty much any time of day, since we have contributors all over the world17:44
ClassBotpleia2 asked: you mentioned that launchpad.net/community-web-projects is not a complete list, is there a more complete list somewhere?17:46
mhall119good question, unfortunately not17:47
mhall119there are several sites that are different mixes of canonical and community involvement, like the wiki, planet, etc17:47
mhall119also some that probably should be on there, but aren't yet, like status.ubuntu.com17:47
ClassBotpleia2 asked: do you know the status on the Ubuntu Team Reports project? (I get asked about such a thing a lot by teams who hate using wiki for reporting)17:48
mhall119I don't, dholbach might be able to give you more information on that17:49
mhall119I know it's come up in the past couple of UDSs, but we just haven't had anybody willing to lead the project17:49
mhall119if there are any aspiring community web contributors who want to take it for a spin, that would be awesome17:50
mhall119right now our list of projects is outpacing our number of contributors17:51
ClassBotThere are 10 minutes remaining in the current session.17:51
mhall119so there are plenty of places for people to get involved17:51
mhall119and we are very encouraging to new contributors17:51
mhall119any other questions before I'm out of time?17:52
ClassBotThere are 5 minutes remaining in the current session.17:55
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Bug Triage Class - Instructors: hggdh, pedro_
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html following the conclusion of the session.18:01
hggdhHello. My name is Carlos de-Avillez. I am one of the administrators for the BugSquad and BugControl teams on Ubuntu. I have been around bugs for pretty much all my professional life -- causing them, or finding them, or fixing them (or all three in sequence, and not necessarily in the this order ;-).18:02
hggdhI started with Ubuntu in 2006, when I was trying to (yet again) find a Linux distribution that I felt more confortable with, and that did not need me to spend a lot of time tweaking the kernel, etc. And guess what... Ubuntu won! :-). I then joined the community, and started being active beginning of 2007.18:02
pedro_Hola, My name is Pedro Villavicencio and i'm also one of the admins for BugSquad and BugControl teams on Ubuntu, I work as a Defect Analyst for the Desktop Team (so if you have bugs related to that please ping me)18:03
hggdhNow, as usual, questions should be asked on the #ubuntu-classroom-chat channel. If you want to ask a question, write it there, and precede it with 'QUESTION:'. For example:18:04
hggdhQUESTION: what does 'hggdh' mean?18:04
hggdhLet's get into the class now.18:04
hggdhFirst, who we are (https://wiki.ubuntu.com/BugSquad)18:04
hggdhThe BugSquad is the team responsible for *triaging* bugs opened against Ubuntu and its packages. The term 'triage' is pretty much taken from medicine --  determining the priority of treatments based on the severity of a condition  (see http://en.wikipedia.org/wiki/Triage).18:04
hggdhDifferent from medical triage, though, we do not expect human death as a consequence of delayed treatment.18:05
hggdhBut we still need to triage: there are many more bugs than triagers; we have to be able to prioritise the bugs; we _should_ be able to address _all_ bugs eventually.18:05
hggdhFor us, then, triage is the process of analysing a bug, verifying it indeed seems to be a valid bug, collecting enough data to completely describe it, and marking the bug 'Triaged', and give it an importance.18:05
hggdhTriage ends there -- it is not our responsibility to *solve* the bug: once the issue is identified, and all necessary and sufficient documentation has been added to the bug, triaging *ENDS*, and the bug goes on to a developer/maintainer to be worked on.18:06
hggdhAgain: triaging *ends* when a bug status is set to Triaged (see https://wiki.ubuntu.com/Bugs/Status).18:06
hggdhThis does not mean we do not solve bugs ourselves. Most of us wear a lot of hats, on (possibly) more than one project. But _triaging_ ends when the bug is set to Triaged.18:06
hggdhNow, another important point is being able to differentiate between bugs (errors in a programme/package) and support issues (how to use a programme/package, how to set up something). We only deal with *bugs*.18:07
hggdhSupport requests should be redirected to one of the appropriate fora: https://answers.launchpad.net/, http://askubuntu.com/ , http://ubuntuforums.org/, an appropriate IRC channel, etc.18:08
hggdhWith that in mind...18:08
hggdhDO: follow the advices and recommendations from https://wiki.ubuntu.com/BugSquad/KnowledgeBase: they can be used not only for finding more about your own issues, but *ALSO* for triaging somebody else's bugs.18:08
hggdhDO: read https://wiki.ubuntu.com/BugSquad/KnowledgeBase. Really. No kidding18:09
hggdhDO: read the Ubuntu Code of Conduct (http://www.ubuntu.com/community/conduct).  A nice exposition of the CoC is also at https://wiki.ubuntu.com/CodeOfConductGuidelines.18:10
hggdh(if you wish to be a member of the BugSquad, we require that you sign it.)18:11
hggdhThis -- the CoC -- is perhaps the major difference between Ubuntu and other projects: we try very hard to live by it. *NOT* signing it does not free one from been required to be civil. So...18:12
pedro_Yes, remember that at the other side of the Computer there's a person , so please be nice18:13
pedro_There's nothing much that you didn't learned before :18:14
pedro_DO: be nice. Say 'please', and 'thank you'. It does help, a lot. Follow the Golden Rule (http://en.wikipedia.org/wiki/The_Golden_Rule), *always*.18:14
pedro_DO: keep in mind that English is the official language on https://bugs.launchpad.net, but _many_ Ubuntu bug reporters are *not* native speakers of English. This means that many times we will get bugs that are badly written in English (or not in English at all).18:15
pedro_And there's also Triagers who are not native English speakers, ie: myself and hggdh18:16
pedro_and plenty more, so if you're triaging and not sure if your english is good enough, don't worry there's plenty of people to ask in #ubuntu-bugs about a comment you'd like to add to a bug report18:17
pedro_try to do your best:18:17
pedro_DO: Try to understand. Ask for someone else to translate it if you do not speak (er, read) the language (hint: the #ubuntu-translators and #ubuntu-bugs channels will probably have someone able to translate). Be nice -- always. "I cannot understand you" is, most of the times, *not* nice ;-)18:17
pedro_and if you're unsure about something?18:18
pedro_DO: ask for help on how to deal with a bug if you are unsure. Nobody knows it all, and we all started ignorant on bug triaging (and, pretty much, on everything else ;-). We have a mailing list (ubuntu-bugsquad@lists.ubuntu.com) : https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugsquad, and we are always at the #ubuntu-bugs channel on freenode18:18
pedro_You can ask either at the mailing list or at our IRC channel, there's plenty of folks there willing to help in a 24/718:20
pedro_Please note that we do not _triage_ bugs on #ubuntu-bugs, or the ML -- we will answer and help on procedures and requirements. We will, though, point out deficiencies and missing data, and suggest actions.18:20
pedro_DO: _understand_ the problem. A lot of times we see a bug where a _consequence_ is described, but not the _cause_.18:21
pedro_The triager should do her/his best to understand which is which, and act accordingly. This may mean changing the bug's package, or rewriting the description, etc.18:21
pedro_The point here is: if we do not understand what is the problem, then how can we correct it?18:22
pedro_There are many ways to do that (er, _understand_, not solve); most will require learning18:22
pedro_most processes & procedures for understanding a problem also have never been really ported/adapted to computing (differential diagnosis -- medicine --, fault trees -- nuclear reactors, rockets --, etc). So... right now, the best way is to learn more. To keep on learning. With time you will be able to _intuitively_ see a consequence.18:23
pedro_Also, it is important to keep in mind that *correlation is not causation* (see http://en.wikipedia.org/wiki/Correlation_does_not_imply_causation).18:23
hggdh(and, on the correlation <-> causation issue, there is this very good xkcd strip, from today: http://xkcd.com/925/ )18:25
hggdhDO: Try to ask and find answers for some questions: WHAT did happen? WHY did it happen? WHICH COMPONENTS are involved? HOW did it happen? HOW can it be REPEATED? What has CHANGED (if it worked before)?18:26
hggdhDO: add a comment on every action you take on the bug (changing status, importance, package, etc). Although for you it may be crystal-clear the reasons for taking an action, this may not be true for others (in fact, a lot of times it is not clear, at all...).18:27
hggdhok. There are only positive 'DO's so far. Enough is enough.18:27
hggdhDO NOT: add comments like "me too", "I also have it", "also a problem here", etc. These comments just pollute the bug, making it more difficult to find out what happened, where we are, and what is the next step.18:28
hggdhyes! Finally something to, ah, not do...18:28
hggdhINSTEAD, just mark it as "affects me too" (and subscribe to it, if you wish to know when the issue is resolved).18:29
hggdhDO: if you are starting on triage, browse the open bugs (there are about 80,000 of them) and look for one you feel _confortable_ with (or less unconfortable ;-). Ideally, you should be able to reproduce it. It does help if you start with bugs on packages you yourself use.18:29
hggdhWe collected a set of Easy Tasks at: https://wiki.ubuntu.com/Bugs/EasyTasks/ ; that is a really good start if you don't know where to look at it first.18:30
hggdhAnd do get on to #ubuntu-bugs, and ask for help there when in doubt. We do not bite...18:31
hggdhOh, since we are here:18:31
hggdhDO NOT: change a Triaged bug to New/Incomplete/Confirmed -- a triaged bug is OUT OF SCOPE for triaging. It is not our problem anymore (while wearing the triager's hat).18:32
pedro_And one of my favorites :18:33
pedro_DO NOT: assign yourself (or any other person) to a bug. Bug assignment is a clear, official, signal that "the assignee is actively working on resolving this issue". Nobody else -- including the developers/maintainers -- will touch this bug anymore. Instead...18:34
pedro_DO: so... if you are triaging, and have asked a question/requested action from the OP (Original Poster), *subscribe* to the bug. Nothing is worse than a fire-and-forget action.18:34
pedro_I've seen a few new triagers doing that, so remember that DO / DO NOT, is *really* important18:35
pedro_Other that is on my list of favorites is :18:35
pedro_DO NOT: confirm your own bugs. The fact that you see/experience a bug does not necessarily _make_ it a real bug. It may be something on your setup...18:35
pedro_DO: follow suggested actions. For some packages we have more detailed 'howtos'. These are described under the https://wiki.ubuntu.com/DebuggingProcedures page. It is always a good idea to check them (and update/correct as needed).18:36
pedro_Now, a lot of the packages we offer on Ubuntu come from different projects -- Debian, Gnome, GNU, etc. We call these projects -- where real development usually takes place -- "upstream". By the same reasoning, we say we are "downstream" from them.18:37
pedro_The ideal scenario is we have our packages identical to what upstream provide, no local patchs (except, probably, for packaging details).18:37
pedro_Having local changes increases the delta (the difference between what we provide and what upstream provides), and makes updates/upgrades more costly. So our patches, ideally, should be provided to the upstream project, and discussed there (and hopefully accepted).18:38
pedro_Bugs affecting upstream projects have to be communicated upstream. This usually means doing a similar triage as we do here for a specific upstream (looking for an identical bug on the upstream project, and opening one if none is found). So:18:38
pedro_DO: Look upstream, and open a new bug if needed; then *link* this upstream bug to ours (and ours to theirs). If you want to see how that process is done, please check https://wiki.ubuntu.com/Bugs/Watches18:39
pedro_Many upstreams have different rules on how to open/work with/close a bug. Ergo,18:40
=== n1xNc0d3 is now known as muneeb
pedro_DO: follow upstream's processes when working upstream (in an old saying, "when you enter a city, abide by its laws and customs").18:41
pedro_DO NOT: Forward bugs upstream if you're unsure of the root cause, some bugs could be caused by an Ubuntu patch.18:42
pedro_If you want to see if a package is patched by Ubuntu or not as a first clue look at http://patches.ubuntu.com/18:42
pedro_DO: Forward bugs upstream if you sure that is not caused by an Ubuntu patch. We have a set of instructions on how to do that at : https://wiki.ubuntu.com/Bugs/Upstream/18:42
hggdhSo... we triaged a bug, eventually a developer/maintainer got to it, and fixed it -- or so they say ;-) --.Our job now, is to check if the fix provided indeed:18:43
hggdh(1) *does* fix the bug;18:44
hggdh(2) does *not* introduce a regression (see http://en.wikipedia.org/wiki/Software_regression)18:44
=== jtaylor_ is now known as jtaylor
hggdhFor Ubuntu, a bug (on a stable release)  is fixed by a SRU -- Stable Release Update, see https://wiki.ubuntu.com/StableReleaseUpdates. SRUs have to be tested and confirmed to follow (1) and (2) above. So...18:45
hggdhDO: test SRUs. This helps on allowing timely updates to the user base.18:46
hggdhDoing SRU Testing in most of the cases is an easy task to do, we always need help to deal with the queue: http://people.canonical.com/~ubuntu-archive/pending-sru.html18:46
hggdhIf you're really new to Triage and Ubuntu but you want to help:18:47
hggdhDO: Consider requesting a Mentor, The BugSquad has a great program for that and you can find more info at : https://wiki.ubuntu.com/BugSquad/Mentors, or...18:47
hggdhDO: consider joining #ubuntu-bugs, and asking for help there. We -- the (so called) experienced triagers -- are all there.18:48
hggdh(I personally think going to #ubuntu-bugs to be more productive, since what I do not know (and there is a LOT of it) may be known by somebody else)18:49
hggdhBUT... please remember:18:49
hggdhDO NOT: Start doing triage work by your own, its always better to ask first to the people who know about it.18:49
hggdhand read the documentation we pointed to above ;-)18:50
hggdh#ubuntu-bugs is open 24/7 so if you're unsure please ask there first. We *will* answer, probably in the same hour :-)18:50
ClassBotThere are 10 minutes remaining in the current session.18:51
hggdhFinally... (and this is not a DO/DO NOT):18:51
hggdhPlease help. We need triagers, and we need triaging.18:51
hggdhthank you.18:51
pedro_is there any questions?18:51
pedro_seems not. Thanks all and remember if you have doubts about bugs just ask in #ubuntu-bugs ; we don't bite18:54
pedro_thanks again!18:54
ClassBotThere are 5 minutes remaining in the current session.18:55
hggdhwe really do not bite, those more dangerous are kept in a special enclosure, and well-fed ;-)18:57
=== 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: Lubuntu Development - Instructors: phillw - Slides: http://is.gd/BpvE2K
ClassBotSlides for Lubuntu Development: http://phillw.net/Slide_Lubuntu.pdf19:01
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html following the conclusion of the session.19:01
phillwHiyas everyone :)19:01
phillwFor those not using Learnid, I'll give a minute to grab the 8 slides from http://phillw.net/Slide_Lubuntu.pdf19:02
phillwThis presentation is a quick introduction to Lubuntu and the scope for any budding developers in the various areas.19:03
phillw<Slide 2> A brief run down of what Lubuntu is and why Lubuntu is.19:05
phillw<Slide 3> Lubuntu came into being to add the lxde to the familiy that is *ubuntu19:06
phillwWith 11.10 it is on track for full adoption19:06
phillw[slide 4]19:06
phillw[SLIDE 4]19:07
phillwAs stated, Lubuntu is an easy to use member of the family for those who's computers simply lack the resources to run the other members.19:08
phillw[SLIDE 5]19:09
phillwEven within Lubuntu there are more than one variant, all giving Lubuntu but going about it slightly differently19:10
phillwThe community builds are created in response to known issues and requests from the user base.19:10
phillwThe starting point for all sections of help is https://help.ubuntu.com/community/Lubuntu/Documentation It pulls together links to both the docs area and to other parts of the project in one handy place.19:12
phillw[SLIDE 6]19:13
phillwThe main change in 11.10 will be the adoption by Canonical. As we are still at the alpha stage of testing. To keep up to date head over to the Development area, and follow what is said on the Mailing Lists.19:14
phillwThe alpha 2 is running late, as this is the 1st one to follow the official build, things have proven to be a little more complicated for the Developers.19:14
phillw[SLIDE 7] As with every project within the *buntu familiy there are lots of things to do. From Documentation, through art work, bug chasing / triaging / fixing. translation etc. etc. Pick an area (or areas) that interest you and come and jopin in.19:16
phillwThere are things to do both on Lubuntu and LXDE itself.19:18
phillw[SLIDE 8]19:18
phillwApologies that our Head of Development (Julien) cannot be here, I will Attempt to answer or point you in the correct area. Whilst I am quite Familiar with Lubuntu, I am one the Docs team and am not a Developer!19:19
phillwOh, I've just had an update on the alpha 2 being late.... The problem is not in the build script, but in the state of oneiric repository itself. I'm on it.19:24
phillwWhich for those familiar with the Black Arts of building iso's I am sure means something :)19:25
ClassBotcoalwater-testin asked: ok i don't understand 1 thing, lubuntu is just ubuntu with the lxde desktop right? so i don't understand how there could be a separate lubuntu development19:27
phillwThere are certain things specific to Lubuntu, such as the use of LXTerminal etc. that are looked after seperately.19:28
phillwA fuller list of the LX specific areas can be found at https://wiki.ubuntu.com/Lubuntu/Testing19:30
=== yofel_ is now known as yofel
ClassBotThere are 10 minutes remaining in the current session.19:50
ClassBotThere are 5 minutes remaining in the current session.19:55
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Project Lightning Talks - Instructors: nigelb
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html following the conclusion of the session.20:01
=== 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: Project Lightning Talks - Instructors: nigelb, tumbleweed, crazedpsyc, mhall119
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html following the conclusion of the session.20:01
nigelbHello and welcome to lightning talks!20:01
nigelbSince the last few "weeks", we've been having a session on the last day that's just lightning talks20:02
nigelbBasically, we'll have people talk about a project they're working on20:02
nigelband you guys can check out and proably help with the project20:02
nigelbFirst up today is tumbleweed. He's going to talk about Ubuntu dev tools.20:03
nigelbtumbleweed: Stage's all yours :)20:03
tumbleweedThanks nigelb20:03
tumbleweedevening everyone20:03
tumbleweedfor me it's pretty late on a friday evening, but hopefully there are a few people listening :)20:04
tumbleweedubuntu developers (like all developers) like scripting things where possible20:04
tumbleweedthere's a whole bunch of really useful scripts in devscripts and ubuntu-dev-tools20:04
tumbleweedI recommend that everyone go and have a look through the list, even if you already have20:05
tumbleweedI keep discovering new things in devscripts, every time I look20:05
tumbleweed/usr/share/doc/devscripts/README.gz has a reasonable list20:05
tumbleweedand apt-cache show ubuntu-dev-tools will show you what's there20:05
tumbleweedI'll just present a couple of highlights20:06
tumbleweedlast UDW, bdrung spoke about wrap-and-sort, which is a neat littel tool that sorts lists of dependencies in debian/control20:06
tumbleweedI find it makes packages far more maintainable (and recommend that my debian sponsorees use it in packages they mantain)20:06
tumbleweedIf you haven't seen it, look at it20:07
tumbleweedubuntu-dev-tools also has a couple of other useful bits:20:07
tumbleweedbackportpackage makes it really easy to test a backport into your PPA20:07
tumbleweedpull-lp-source and pull-debian source make it really easy to download source packages without having to have deb-src lines for all releases in your /etc/apt/sources.list20:08
tumbleweed"pull-lp-source bash lucid" will get you the bash sourcepackage for lucid20:08
tumbleweedit can also pull old, superseded versions from lp's archives, or debian's snapshot service20:09
tumbleweedok, that's my 5 minutes, back to nigelb20:09
nigelbThanks tumbleweed!20:09
nigelbNext up, we have crazedpsyc. He's going to talk about Melia, which from the screenshots I saw was quite interesting20:09
crazedpsycHey folks, My name is Michael Smith, and I am a python lover :)20:10
crazedpsycI've just recently started a project called Melia, written in PyGTK20:10
crazedpsycMelia is a desktop shell, meaning that it just sits on top of an existing desktop environment like GNOME or XFCE20:10
crazedpsycIf you'd like to take a look at some screenshots, go to http://strenua.github.com/Melia and click 'Take a Peek'20:10
crazedpsycI'll start out by walking you through some of the features and goals of Melia20:11
crazedpsycThe biggest goal for Melia is to be completely mobile-ready, while remaining versatile enough to use on netbooks, laptops, and even desktops.20:11
crazedpsycAnother big goal is speed. You don't want your tablet or phone to take more than a few seconds to boot and log in, so we really have to work on 'de-bloating' everything.20:11
crazedpsycThe big, long-term goal is to create an entire touch-friendly distribution, where we will use parts of MeeGo20:12
crazedpsycAt the moment, Melia is not very polished. However it does have plenty of features, and there are many more on the way.20:12
crazedpsycThe most important features are mostly interpreted from other desktops including Unity, Gnome Shell, Gnome2 classic, and even a few ideas from KDE.20:13
crazedpsycA quick summary of the top feaures:20:13
crazedpsyc - Customizability: Melia is completely themable, the launcher can be moved, resized, and much more... and soon Melia will support loading extensions, which can modify the shell in any way.20:13
crazedpsyc - Quicklists: Melia supports dynamic quicklists via its own simple API, and it will soon support Unity's quicklists as well. (soon being tomorrow in this case)20:14
crazedpsyc - Integrated notifications: Small, quiet notifications appear in the center of the panel, where you will soon be able to reply to IMs just like gnome shell.20:14
crazedpsyc - Indicators and systray: Melia currently has its own poweful indicator API, which is almost entirely compatible with Ubuntu's. Melia will also have a system tray similar to gnome shell's20:14
crazedpsyc - Native: Melia is written entirely in Gtk, so everything blends seamlessly20:14
crazedpsycAt this point I am the only developer for Melia, so my time is a bit stretched. I need help! One of the biggest tasks is porting Melia to PyGI (thanks pitti!).20:15
crazedpsycTime's up already :) back to nigelb20:15
nigelbThanks crazedpsyc20:15
nigelbcrazedpsyc: Do you want to finish answering the questions before I go on to the next talk?20:16
crazedpsycOnly one question right now, but if there are more, I'm free in #melia :)20:16
nigelbNext up is mhall119!20:17
nigelbHe got OMG!Ubuntu'd recently for his work on tomboy-pastebinit20:17
nigelbThat's what he'll be talking about :)20:17
mhall119thanks nigelb20:17
mhall119so, I like tomboy, kind of a lot, I use it anytime I need to quickly write something down20:18
mhall119however, it's not really useful for sharing, and a lot of time I'm writing stuff down in tomboy that I'm only writing down so I can share it later20:18
mhall119what I ended up doing was just select-all, copy, open up paste.ubuntu.com, paste20:19
mhall119over and over and over again20:19
mhall119I also use pastebinit, a greate little command line tool written by stgraber20:19
mhall119you can pipe anything to it, and it'll send it to a pastebin service, and print out the pastebin URL20:20
mhall119for some reason, it took me a while to put 2 and 2 together20:20
mhall119but when I did, I took an hour to learn C# and the Tomboy addin API20:20
mhall119and I wrote an addin that will take the content of a note, pass it through the pastebinit command line tool, take the URL it spits out and open it in your browser20:21
mhall119the result was tomboy-pastebint: http://mhall119.com/2011/06/pastebinit-for-tomboy-notes/20:21
mhall119it's nothing big, it's nothing fancy, but it cuts down a frequent task from 5 steps to 120:22
mhall119there are things that would be nice to add to it, and I'd love to have someone better at C# helping me with it20:22
mhall119project is here: https://launchpad.net/tomboy-pastebinit20:23
mhall119instructions are in the source tree20:23
mhall119any questions?20:23
mhall119if not, that's my time20:25
tumbleweedhello again20:26
tumbleweedthis time I'm talking about something not directly related to Ubuntu devolpment. Something I work on in my spare time is IRC bots20:26
tumbleweedevery online community needs bots to help manage their channels20:27
tumbleweedbut they can also be fun to play with and useful20:27
tumbleweedwe went a bit all out, and tried ot create a bot (in python, of course) that would be really easy to write plugins for20:27
tumbleweed(and also great fun to have in your channel)20:27
* tumbleweed has one here tonight20:27
tumbleweedIbid_: hi20:27
tumbleweedI wrote a quite plugin for him while the last talk was happening20:28
tumbleweedit seems to work20:28
tumbleweedIbid_: udw talk20:28
Ibid_tumbleweed: I suggest: Growing the Ubuntu Server20:28
tumbleweedIbid_: udw talk20:28
Ibid_tumbleweed: I suggest: Growing the Ubuntu Community20:28
tumbleweedheh, that's a useful one20:28
tumbleweedanyway, the point of the project is to make a bot that's fun to have around and dead-simple to write plugins for20:29
tumbleweedin this one you can see it registers the plugin based on the regex in line 8, and puts together a response by making some random choices20:29
tumbleweedit can do a *whole* lot more20:29
tumbleweedIbid_: what can you do?20:29
Ibid_tumbleweed: I can help you with: administrative functions, bot accounts and permissions, debugging me, looking things up, remembering things, delivering messages, decisions, games, monitoring things, browsing the internet, conversions, silly fun stuff, calculations, system administration, software development and south african stuff.20:29
Ibid_Ask me "help me with ..." for more details.20:29
tumbleweedIbid_: help me with silly fun stuff20:30
Ibid_tumbleweed: I use the following features for silly fun stuff: bash, bucket, choose, coffee, dinner, draw-aa, duel, dvorak, figlet, fml, fortune, insult, mlia, morse, nickometer, random, redirect, remind, rot13, saydo, tfln and werewolf20:30
Ibid_Ask me "how do I use ..." for more details.20:30
tumbleweedIbid_: how do I use choose20:30
Ibid_tumbleweed: Choose one of the given options. You can use it like this:20:30
Ibid_  choose <choice> or <choice>...20:30
tumbleweedIbid_: choose should I fix a bug tonight or go to bed early?20:30
Ibid_tumbleweed: I choose go to bed early20:30
tumbleweedIbid_: botsnack20:30
tumbleweedibid.omnia.za.net / launchpad.net/ibid if you want to see more, or ping me on IRC20:31
tumbleweedthat's my 5 mins20:31
nigelbOk, so lightning talks are done!20:34
nigelbSorry it was too short.20:35
nigelbNow, I'm handing over to mhall119 for some impromtu fun :)20:35
mhall119ok, so I floated this idea to nigelb only a little bit ago, but I wanted to try having a reverse-lightning talk20:35
mhall119what's that you say?20:35
mhall119well, I'm glad you asked20:35
mhall119in a reverse lighting talk, you get 5 minutes to tell people what you'd like to see made20:36
mhall119so, if you've ever though "someone should write a program to do x", here's your chance to tell us20:36
mhall119if it's interesting, maybe someone will do it20:36
mhall119but you only have 5 minutes to describe it in enough details for a developer to implement it, so you're not getting a new OS or anything big20:37
mhall119would anybody like to give it a shot?20:37
mhall119ok, well maybe we'll give this a try when we have time to advertise it prior to it actually happening20:41
nigelbOk, then. We tried.20:41
nigelbThank you all for showing up at the Ubuntu Developer Week!20:41
nigelbUntil next time, this is a goodbye from the classroom team :)20:42
nigelbDon't forget we have an upcoming Ubuntu Cloud days!20:42
nhainesAnd don't forget next week is Ubuntu Community Week.  :)20:45
nigelbYes! that too :-)20:46
pleia2oh, randall said he'd have the schedule put in calendar tonight so we can review over the weekend20:46
pleia2\o/ community week!20:47
ClassBotThere are 10 minutes remaining in the current session.20:50
ClassBotThere are 5 minutes remaining in the current session.20:55
=== me is now known as Guest53140
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html21:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
=== barjavel.freenode.net 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: Project Lightning Talks - Instructors: nigelb, tumbleweed, crazedpsyc, mhall119
PwnusMaximushi guys, whats the topic today?21:52
pleia2Ubuntu Developer Week just ended an hour ago, you can view the logs from today here: http://irclogs.ubuntu.com/2011/07/15/%23ubuntu-classroom.html21:52
PwnusMaximusthanks for the link'21:55
SayyanIs there somewhere with links to all the chatlogs?22:26
=== medberry is now known as med_out

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