=== vanhoof_ is now known as vanhoof
awantiHello friends I am from india. I want to attend the Ubuntu Developer Week. So plz. tell the time?00:28
pleia2awanti: the second day starts in 15.5 hours00:29
rwwawanti: The schedule's at https://wiki.ubuntu.com/UbuntuDeveloperWeek . Click the times on it to get conversions to your timezone.00:29
awantiok thanks I got the timings. In India it will start at 9.30 pm.00:32
=== MTecknology is now known as billmeye
=== billmeye is now known as MTecknolgoy
=== MTecknolgoy is now known as MTecknology
=== jmarsden_ is now known as jmarsden
=== jledbetter_ is now known as jledbetter
=== kenvandine_ is now known as kenvandine
=== MTecknology is now known as pfSensory
=== pfSensory is now known as MTecknology
=== Pete is now known as Guest77399
=== lag` is now known as lag
laxmiubuntu wired network problem08:22
laxmiwireless works, wired does not work08:22
leoquanthi laxmi for support please join #ubuntu08:23
leoquantvia /join #ubuntu08:23
=== qwebirc76859 is now known as geco2
ClassBotLogs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/10:45
ubot2Official channel logs can be found at http://irclogs.ubuntu.com/ . LoCo channels are now logged there too; for older LoCo channel logs, see http://logs.ubuntu-eu.org/freenode/10:45
deeprajhello !!10:51
ana_shi all11:19
coz_hey guy11:19
ana_sthe schedule link seems to be down11:21
maxpishhi, i'm new in this classroom, i'd like to know how i can join ubuntu developers community...11:40
=== Ursinha-afk is now known as Ursinha
maxpishcould someone help me??11:41
=== shadeslayer_ is now known as shadeslayer
ClassBotLogs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/13:22
ubot2Official channel logs can be found at http://irclogs.ubuntu.com/ . LoCo channels are now logged there too; for older LoCo channel logs, see http://logs.ubuntu-eu.org/freenode/13:22
view666hello,boys and grils14:18
anirudh24sevencan i know when the sessions start ? in how many hours ? 3 ?14:53
Mkaysianirudh24seven: http://is.gd/8rtIi14:55
Mkaysi(Link from topic)14:55
anirudh24sevensorry for not having looked through earlier15:02
anirudh24sevenwas checking it out before looking at your link... thanks anyway15:02
=== Ursinha is now known as Ursinha-lunch
Vishal_wen the class is gonna start??15:08
serfusVishal_, http://people.ubuntu.com/~nhandler/classroom.html15:08
lmontrieuxVishal_: in about 1 hour15:09
hellyeah_what would be the topic of discussion in class?15:12
Nijabohellyeah_, 16.00 - How to write a compiz plugin15:20
=== seiflotfy_ is now known as seiflotfy
=== s1aden is now known as sladen
* fisch246 puts on atom heart mother album to bring him into the mood of Learning Ubuntu :D15:41
misterxyzmsg NickServ identify atzenmusik15:44
Mkaysimisterxyz: If that is your password, you should change it immidiatly.15:46
roelandtOr maybe it's too late.15:47
smspillazdholbach: are we good to start ?15:57
dholbachwe are15:57
dholbachlet me do a quick introduction :)15:57
smspillazsure thing!15:57
techbreak_smspillaz, :) so we are begining right ?15:57
techbreak_dholbach, smspillaz yeah :)15:57
dholbachplease join #ubuntu-classroom-chat if you haven't done that yet15:57
dholbachit's the place where all the questions and chat goes15:58
dholbachand if you do have questions, please ask15:58
dholbachbut please prefix them with QUESTION:15:58
dholbachie: QUESTION: smspillaz: Do you have pets?15:58
smspillazI have one cat ;-)15:58
dholbachall the information you need should be available at https://wiki.ubuntu.com/UbuntuDeveloperWeek15:58
smspillazhe is very awesome :)15:58
dholbachhave a great day 215:58
dholbachit's great to have you!15:58
dholbachnow let's kick off the day15:58
chandan_kumarsmspillaz, yaa we aready.15:59
smspillazdholbach: let me know when I'm good to start :)15:59
dholbachsmspillaz, also known as Sam Spilsbury graciously agreed to give a session, and he'll talk to you about bringing more bling to compiz by writing spiffy plugins15:59
dholbachsmspillaz, the stage is yours!15:59
smspillazok, awesome, so yes, here I am, I am the maintainer of the Compiz 0.9 series, i.e the version of compiz that will be used in Ubuntu 11.04 and Unity as well as most upcoming distros16:00
smspillazfirst things' first, because I overprepare for everything, I made some documents that you all might find useful (and me too!) when following me16:00
smspillazso the first one is the internal architecture of compiz16:00
smspillazwhich can be found here:16: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: How to write a compiz plugin - Instructors: smspillaz
smspillazand the second is a 7 page guide on writing compiz plugins, which is half-finished, since I've been quite busy this week16:01
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session.16:01
smspillazso feel free to grab those :)16:01
smspillazalrighty, so starting from the beginning16:01
smspillazfirst of all, a quick introduction to how compiz works, and what exactly its function is16:02
smspillazand then how to get and compile a development version of compiz, or just develop for it on ubuntu16:02
smspillazand then I'll do a quick walkthrough of the basic structure of a plugin and some commonly done things in plugins16:02
smspillazok, so as for how compiz works, and what exactly it does16:03
smspillazto take a page from the compiz wiki, compiz is basically what we call a "Compositing Window Manager" in X land, which means that as well as managing windows on screen, it also is in charge of drawing those windows. This technology came about in around 2005ish when XComposite came about16:04
=== m4n1sh is now known as manish
smspillazso this means that in terms of your scope of compiz plugins, you can affect how windows are actually managed, affect how they are drawn, and affect how the entire scene is drawn16:04
smspillazalong with its plugin interface, this makes it pretty much possible to do any bling that you want16:05
=== manish is now known as manish__
smspillazso, now moving on to exactly how to set up a development environment16:05
smspillazluckly, ubuntu makes this pretty easy16:05
smspillazjust sudo apt-get install compiz-dev and compiz-plugins-main-dev and you're done16:06
smspillaz(On maverick, it is compiz-fusion-plugins-main)16:06
=== manish__ is now known as manish_
smspillazbut, if you want to do development in a little more, I usually suggest having a local build of compiz handy.16:06
smspillazLuckily, most of that is relatively straightforward these days, since there are scripts to do that16:07
smspillazhttp://git.compiz.org/~soreau/scripts/ <- like these fantastic ones16:07
smspillazjust clone the git repo there and with the script you'll have a full working installation from source.16:08
smspillazThis helps if, for example, some plugin does something similar to what you want to do, and you can start hacking on that plugin first.16:08
smspillazso, a quick question I've recieved16:08
smspillazQUESTION: What about Ubuntu 11.0416:09
smspillazso, this tutorial here, as I probably should have explained will be for Ubuntu 11.0416:09
smspillazsince compiz was re-written in between the 0.8 and 0.9 series (maverick and natty)16:09
smspillazhowever, those git scripts about should also work on maverick16:09
smspillazNow on to the nitty gritty of writing your first plugin16:10
smspillazCompiz plugins are written in C++. We don't really use very many advanced features of the languages or external libraries that heavily, so if you have a basic knowledge of that, then you should be good16:10
smspillazwe only use boost to a small extent, glib more recently and sigc16:11
smspillazCMake is also used for building rather than automake16:11
smspillazto answer another quick question16:11
smspillazQUESTION:Is it possible to do some type of local build using  the ubuntu packaging and pbuilder or something like that so  that you can remove it easily?16:11
smspillazSo, the answer to this is is that you can indeed clone lp:compiz , however, this is the packaging branch of compiz core, and doesn't get all the modules16:12
smspillazin addition, I'm not sure about how to make it build and install locally16:12
smspillaz(plus, adding extra stuff to it is a pain since you need to rebuild the whole thing all the time using bzr bd)16:12
smspillazso I'd suggest you stick to the scripts or to the master source16:12
smspillaz(A link to the build tutorial is in the documents I linked to earlier)16:13
smspillazso now back to writing plugins16:13
smspillazso the basic knowledge, you will need once again, is C++, boost or CMake16:13
smspillaznote that OpenGL isn't really a strict requirement, since a lot of the graphics functions that are commonly used are abstracted through the API of compiz16:14
smspillazit's just that if you want to go down the road of bling-bling, then OpenGL is nice16:14
smspillazok, so now for creating your plugin project16:14
smspillazso to start off with, say you want to create a plugin called "moveleft" which, every time a window is opened, if moves every other window to the left16:14
smspillazso, your directory structure would be16:15
smspillaz-> src16:15
smspillaz---> moveleft.cpp16:15
smspillaz---> moveleft.h16:15
smspillaz-> moveleft.xml.in16:15
smspillaz-> CMakeLists.txt16:15
=== qwebirc46515 is now known as geco2
smspillaznow to explain each component of that16:16
smspillazbasically, the .cpp and .h files are the implementation of your plugin, eg the loadable object code16:16
smspillazthe .xml.in describes information about your plugin for CCSM and also its options16:16
smspillazand the CMakeLists.txt is the buildsystem16:16
smspillaznow, lucky for plugin authors, the buildsystem for compiz plugins is insanely easy16:16
smspillazall you need is three lines16:17
smspillazfind_package (Compiz REQUIRED)16:17
smspillazinclude (CompizPlugin)16:17
smspillazcompiz_plugin (moveleft PLUGINDEPS foo bar PKGDEPS baz)16:17
smspillazso now on to what each line dos16:17
smspillazthe first basically finds compiz with pkgconfig16:18
smspillazthe second imports all the plugin buildsystem16:18
smspillazthe third sets up a new "compiz plugin" project in CMake with the name "moveleft" depending on other plugins "foo" and "bar" and depending on external packages "baz"16:18
smspillazso to disect that further16:18
smspillaznow that you've called your plugin "moveleft" you must stick with that shortname everywhere16:19
smspillazso for example, the .xml.in must be named "moveleft"16:19
smspillaz However in the src/ tree, you don't need to worry about that16:19
smspillazanother interesting thing is that you can depend on other plugins16:19
smspillazcompiz 0.9 was designed in mind with inter-plugin dependency with each plugin providing objects to other plugins16:20
smspillazso, a common example of this is the fact htat the opengl and composite bits of compiz are in fact plugins themselves16:20
smspillazso most plugins that need to access this functionality will set those as their PLUGINDEPS16:20
smspillaznow on to the metadata file16:21
smspillazI've explained this in more detail in the documents I linked to earlier16:21
smspillazbut basically, here you need to define your plugin name too16:21
smspillazso <compiz>16:21
smspillaz <plugin name="myplugin" useBcop="true">16:21
smspillazthe useBcop is crucial if you want your life to be easier with autogenerated options code16:22
smspillazyou can also define some options there16:22
smspillazbut we will get back to that later16:22
smspillazso close all the tags and save it16:22
smspillaznext, you need to define the classes of your plugin16:22
smspillazso the way things work in compiz is that each plugin is responsible for one or both of two things16:23
smspillaz1) attaching their own information and hooks to existing objects16:23
smspillaz2) creating their own objects16:23
smspillazthe vast majority of plugins only do 1)16:23
smspillazand they usually hook two very important existing object16:23
smspillazCompWindow and CompScreen16:23
smspillazso, starting with the second16:24
smspillazcompiz runs per X-screen16:24
smspillazso, this means that CompScreen is kind of like the "master class" where everything relating to everything going on on screen happens16:24
smspillazCompWindow is a representation of some managed X11 window16:24
smspillaz(and believe me, there are a lot of them, see xwininfo -root -tree for how much there is to manage)16:25
smspillaznow each plugin works by attaching their own structures to those core objects16:25
smspillazso if you defined a MoveLeftScreen as attaching to CompScreen16:25
smspillazthere would be one MoveLeftScreen per CompScreen16:25
smspillazsame thing with MoveLeftWindow16:26
smspillazthis allows you to store data and functions on those core structures16:26
smspillazso, for moveleft, you might want to track if you've moved a window already, and if it has moved since you've moved it16:26
smspillazso you would store that information in MoveLeftWindow16:26
smspillazthe actual attaching16:27
smspillazso the actual attaching is done by a special class called PluginClassHandler16:27
smspillazit's basically a template class that sets up some special indexes in the base object and attaches your class to it16:27
smspillazso that, whenever you want to get your own data for the base object, you just call MoveLeftWindow::get (CompWindow *)16:28
smspillazso in constructing your MoveLeftWindow, you'll get something like:16:28
smspillazclass MoveLeftWindow :16:28
smspillaz    public PluginClassHandler <MoveLeftWindow, CompWindow>,16:28
smspillaz    public WindowInterface16:28
smspillaz(See the handout)16:28
smspillazthe WindowInterface is for interfacable functions and will be explained in a bi16:29
smspillazso now that you've got your MoveLeftScreen and MoveLeftWindow defined as classes attaching to the relevant core structures16:29
smspillazthere are a few final things to do16:29
smspillazthe first is to define a VTable for your plugin16:29
smspillazthis tells core how to load and what "attaching classes" to initialize when objects are created16:30
smspillazwe have templates for the most common usecases16:30
smspillazso, you'd have16:30
smspillazclass MoveLeftPluginVTable :16:30
smspillaz    public CompPlugin::VTableForScreenAndWindow <MoveLeftScreen, MoveLeftWindow>16:30
smspillaz    public16:31
smspillaz        bool init ();16:31
smspillazthe only thing yout need to put in your init function for now is a core ABI version check16:31
smspillazif (CompPlugin::checkPluginABI ("core", CORE_ABIVERSION)) return true; else return false;16:31
smspillazand finally, a extern C object definition for core to look up the VTable on plugin load16:32
smspillazand like all good things, we have a macro for that16:32
smspillazCOMPIZ_PLUGIN_20090315 (MoveLeftPluginVTable, moveleft);16:33
smspillaznote the use of "moveleft" again16:33
smspillazthat is *crucial*16:33
smspillazsince the library is going to be named "moveleft" and core will be loading a plugin called "moveleft"16:33
smspillazso its going to be looking for the right symbol16:33
smspillazAs a quick aside, I've been asked to explain what CCSM is16:33
smspillazin fact, I should probably explain some of the other compiz modules16:34
smspillazso "compizconfig" == our library to handle configuration and desktop integration amongst different settings backends (eg ini, dconf, gconf, kconfig4)16:34
smspillaz"ccsm" == "compizconfig-settings-manager" which is a tool to adjust all the settings in compiz (seriously, there are tons)16:35
smspillaz"core" == the core executable of compiz, where the base window management logic and API comes from16:35
smspillazok, so back to plugins16:35
smspillazonce you have checked off implementing your MoveLeftScreen, MoveLeftWindow, MoveLeftPluginVTable, COMPIZ_PLUGIN_20090315 etc16:36
smspillazand #included <core/core.h>16:36
smspillazyou now have an installing plugin!16:36
smspillazhowever, it doesn't really do all that much16:36
smspillazso lets get on to something more interesting16:36
smspillazwhat about being able to "plug-in" to things that core or other plugins do16:37
smspillazah, QUESTION: how can we make sure there isn't another plugin called "moveleft"16:37
smspillazwell, the simple answer to that is, you don't16:37
smspillazthere aren't too many compiz plugins around, but if a plugin with the same name is already loaded then yours fails to load16:37
smspillazok, back to being able to plugin-in to things16:38
smspillazso, as I was saying a bit before, we have another special thing in compiz called "wrapable interfaces"16:38
smspillazthese are basically just call chains of function objects in doubly linked lists16:39
smspillazwhen you thing you are calling some core function that was implemented in an "interfacable way" you are actually just calling a function which increments the linked list counter by 1 and calls the next function in the list16:40
smspillazthe convention is that at the end of each of the plugin's function calls, they will call the same core function again, which increases the function counter, calls the next function and so forth16:40
smspillazthis allows us to, on each core function call, call lots of other functions at the same time16:41
smspillazSo the first thing you would have seen in the MoveLeftWindow definition was that we inherited a class called "WindowInterface"16:41
smspillazthis is the "Interface class" to all of these Intefacable functions16:42
smspillazso if you have a look in core/include/window.h, you will see all the functions that plugins can hook16:42
smspillazby inheriting this class you are said to be "implementing" this interface16:42
smspillazby default, the functions in WindowInterface all do nothing, but that is because they are all virtual!16:43
smspillazso to change that, you overload one of the functions16:43
smspillazfor example, void moveNotify (int, int, bool); is a function that tells us when a window has moved and by how much16:43
smspillazso if we implement a function like that in our MoveLeftWindow class which inherits WindowInterface, we will have implemented that16:44
smspillaznext, in the MoveLeftwindow constructor, we have a call to WindowInterface::setHandler (window);16:44
smspillazwhat this does, is set the handler of the interface class that we inherited to the base class that owns the function16:45
smspillazso that now whenever we call the base class function16:45
smspillazour function will be called first16:45
smspillazthen functions from the previously loaded plugin16:46
smspillazetc etc16:46
smspillazuntil you get to the main function in the class16:46
smspillazok, another question!16:46
smspillazQUESTION: so, can i write a separate MoveLeft function,  embed in Window.h, and then call n override it whenever n  wherever i want?16:46
=== dholbach_ is now known as dholbach
smspillazSo, I'm not too sure what is meant by this, but if you mean adding a new wrapable function to core, I am afraid that is out of the scope of this tutorial16:47
smspillazplugins should generally only overload the functions in the interface classes16:47
smspillazanyways, interfaces are explained a bit more in the document I posted16:48
smspillaznext up: options16:48
smspillazso say you've interfaced CompWindow::windowNotify from WindowInterface16:48
smspillazso now whenever someone else calls window->windowNotify (), MoveLeftWindow::windowNotify is also called16:48
smspillazand you've handled the CompWindowNotifyMap there to loop over all windows in screen->windows () (eg, loop over an std::list) and call w->move (x, y, immediate) to move them to the left16:49
smspillazbut now, you want to play with an option whereby it actually moves windows to the right instead of the left!16:50
smspillazso you need to go back into your moveleft.xml.in and add some information about this option16:50
smspillazso <option name="right" type="bool">16:50
smspillaz  <_short>Move right</_short>16:50
smspillaz  <_long>Do the wrong thing </_long>16:50
ClassBotThere are 10 minutes remaining in the current session.16:51
smspillaz <default>false</default>16:51
smspillazthat defines the option, with the default value of false16:51
smspillaznow, in your MoveLeftScreen make sure you inherit MoveleftOptions (note the small case l) to get access to autogenerated code from this option16:51
smspillazok, so now here is where it gets funky16:52
smspillazthat options code is owned by MoveLeftScreen16:52
smspillazso you need to MoveLeftScreen *mls = MoveLeftScreen::get (screen) in your ::windowNotify16:52
smspillazthen, you want to read the option to see what it says16:53
smspillazso for "right" that would be16:53
smspillazmls->optionGetRight ()16:53
smspillazand it returns true or false depending on the option value16:53
smspillaznow, here is how the generation code works16:53
smspillazfirst you have optionGet, which is prepended to call getters16:53
smspillazthen you have "Right" right came from "right" in the xml file16:54
smspillazso the parser replaces underscores with CamelCase16:54
smspillazso if you had right_foo16:54
smspillazit would be come16:54
smspillazoptionGetRightFoo ()16:54
smspillazOk, cool so now you've read the option16:54
smspillazso with some simple math16:54
smspillazand that skeleton16:54
smspillazyou should be able to make everything go to the left when a new window is mapped16:55
smspillazor at your choosing16:55
smspillazgo to the right16:55
smspillazI'll open the floor to questions16:55
smspillazQUESTION: since you mentioned compiz 0.9 written for  Ubuntu, do you use any distro specific API  implementations which may break if I write a plugin for,  say, Arch?16:55
smspillazGood question16:55
ClassBotThere are 5 minutes remaining in the current session.16:55
smspillazso, compiz 0.9 was written independently, and has only been started to be used for unity until early this year16:55
smspillazso it is still an upstream project16:56
smspillazand as such I keep the API consistent between all version16:56
smspillazthere used to be an API inconsistency with the glib mainloop stuff, but that has been upstreamed16:56
smspillazany other questions?16:56
smspillaz(I might just paste again those documents I'm referring to in case you missed them)16:57
smspillazQUESTION: What happened to the compiz mindcontrol?16:57
smspillazI love it16:57
smspillazthat project would be cool, except that the developer with that idea didn't cobble together the funds to buy a headset for that16:58
smspillazplus it requires shaving your head16:58
smspillazwhich I would never do since I have awesome hair16:58
smspillazany more questions before I wrap it up?16:58
smspillazok, well it is 16:59, I should probably wrap it up16:59
smspillazthanks for attending!16:59
smspillaznow go write some awesome plugins!16:59
=== RobertM is now known as Guest11535
jibelHi folks,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: How Stable Release Updates work - Instructors: jibel
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session.17:01
jibelThanks to smspillaz for this awesome introduction to compiz.17:01
jibelmy name is Jean-Baptiste Lallement, I live in France and I'm working on the QA Team.17:01
jibelI've started my QA activity with lot of bug triaging, then I moved to ISO Testing, Automated Desktop Testing and Stable Release Updates.17:02
jibelIn this session we will talk about Stable Release Updates, and how the QA process contributes to rock solid stable releases.17:02
jibelOnce an Ubuntu release is out, updates for it follow a very specific procedure called a "Stable Release Update" aka "SRU"17:03
jibelUpdates are only released under certain circumstances.17:03
jibelWhy this SRU process ?17:04
jibelUnlike development releases (at the moment Natty), official releases of Ubuntu are widely deployed and used by a wide variety of users.17:05
jibelDuring the development, the population are developers, early adopters or advanced users, they are aware that pre-release software may break and they accept the risk.17:05
jibelWhen you are using an official release, you use your system for your day to day work and are expecting a high degree of stability.17:06
jibelAny problem can be really disruptive and the system should not requires the intervention of the user.17:06
jibelStable release updates are automatically recommended to a very large number of users. So it is critically important to be paranoïd and to treat them with extreme cuation.17:08
jibelTherefore, when updates are proposed, they must be accompanied by a strong rationale and present a low risk of regressions.17:08
jibelSome will argue "It's just a one line change, go ahead"17:09
jibelRight, let me give you one example, with bug 559822 and its friend bug 61097517:09
jibelThe cause of the bug wasa C++ library (wxwidgets2.8) was uploaded with no code changes. Due to an underlying toolchain change/bug, this caused an ABI change, causing a lot of unrelated packages to break.17:10
jibelIt was not a one line change, it was a no change at all bug.17:10
jibelSo people, when dealing with SRU, expect the unexpected.17:11
jibelWhen should you request a Stable Release Update ?17:12
=== dholbach_ is now known as dholbach
jibelNot all bugs are good candidates to Stable release updates,17:12
jibeland in general only those that fix high impact bugs are17:13
jibelexamples of such bugs include:17:13
jibel* security vulnerabilities. These are done by the security team and follow a slightly different but somewhat similar process17:14
jibel* severe regressions from a previous release.17:14
jibelThis includes packages which are unusable, like being uninstallable or crashing on startup.17:15
jibel* bugs which may cause data loss17:15
jibelbugs which doesn't fit under the above categories but have an obviously safe patch17:15
jibeland affect an application rather than critical infrastructure packages (like X or the Kernel)17:16
jibel* for Long Term Support (LTS) we regularly want to enable new hardware.17:17
jibelsuch changes are appropriate provided that we can ensure to not affect upgrades on existing hardware17:17
jibelAnd the last type of SRU17:17
jibel* New version of commercial software in the canonical partner archive17:18
ClassBotwolfpack asked: Is stable release update has only bug fixes or can it have features upgrade ?17:18
jibelSRU doesn't introduce new feature, or with rare exceptions.17:19
jibelFor new features, or new upstream versions of packages, but don't fix critical bugs you should request a backport instead.17:20
jibelNew features are usually not good candidates.17:20
jibelSo How to proceed ?17:22
jibelYou've found a good candidate ? There are a few steps that you must follow in order to see your fix land in a Stable Release.17:22
jibelFirst of all, the bug must be fixed in the current development release17:23
jibeland the task in the bug report set to "Fix Released"17:23
jibelThis ensures that the fix won't be missed on newer version of the package and that the bug won't be reintroduced17:24
jibelIf it is not fixed, in the development version, the request for SRU will be rejected.17:24
ClassBotdarkdevil58 asked: if suppose i fix a bug on my 10.04 system, still the fix release be rejected as i m not using 10.10?17:26
jibelIf you want a fix in 10.04 LTS, it must be fixed in the latest development release - Natty - before being ported to 10.0417:28
jibelWe can accept an SRU for 10.04 but which is not necessarily a good candidate for 10.1017:28
jibelWhen filing an SRU add all necessary the information to the bug description to help with the review of the report. Ideally, make sure it contains:17:29
jibel* The rationale for the SRU. the impact of the bug on users, and a justification for backporting the fix to the stable release17:29
jibel* Explain how the bug has been addressed in the dev branch, and attach a minimal patch against the current stable version of the package.17:30
jibelAt this point, if you think that preparing the patch will be time consuming,17:30
jibelyou should get approval from the SRU Team first.17:30
jibelOn the other hand its useless to spend time on a patch that is not critical enough to match SRU criteria.17:31
jibelSo, in doubt, don't hesitate to ping the SRU team17:31
jibelAn important part, document the test case with detailed instructions how to reproduce the bug.17:32
jibelDocument the test case with detailed instruction how to reproduce the bug17:33
jibelfor example https://bugs.launchpad.net/ubuntu/+source/software-center/+bug/63970117:33
jibelincludes 3 easy steps to reproduce the issue, and verify the fix.17:33
jibelThe steps should allow anyone, not familiar with the package to reproduce the bug and verify that the issue is fixed with the updated package.17:34
jibel* Add information about potential regressions and inadvertent side effects.17:34
jibelFor example in https://bugs.launchpad.net/ubuntu/+source/txaws/+bug/634022 , the dev explains why there's very little risk of regression17:35
jibelOnce you've provided all the required documentation17:35
jibel* Target to the appropriate serie and subscribe ubuntu-sru17:35
jibel* Upload the fixed package. If you can not do it yourself, attach a debdiff and subscribe ubuntu-sponsor.17:36
jibel* If everything goes right, the archive admins will approve and publish you fixed package to the -proposed repository.17:36
jibelAnd please, keep this rule in mind: One bug = One report17:36
=== drubin_ is now known as drubin
jibelThen we enter in the second phase of the Stable Release Update: SRU Verification17:36
jibelThe current set of pending SRUs is tracked at http://people.ubuntu.com/~ubuntu-archive/pending-sru.html17:36
jibelOn this page, you'll find a list of packages currently in -proposed17:37
jibeland available for testing.17:37
jibelFor each package, there's an indication of which version is in which pocket (-security, -updates, -proposed) and a list of bugs fixed by the upload17:38
jibelThe process we follow to verify a package is roughly:17:38
jibel- setup a testing environment17:38
jibel- Try to reproduce the issue in the most recent published version of the software17:39
jibel- Enable the -proposed repository and install the proposed update for that software17:39
jibel- Try to reproduce the issue with the updated software17:39
jibelThe first step is to create a clean testing environment of the release the fix is targeted for.17:40
jibelWe want to eliminate any outside effects and control the changes brought by the update of the package.17:40
jibelTo create this environment any virtualization solution is good: KVM, VirtualBox, VMWare, ... are very useful to create an isolated testing environment17:41
jibelYou can use snamshot to quickly setup a fresh env or rollback to a previous state.17:41
jibelDoing testing in a chroot is also good enough.17:42
jibelIf you are trying to reproduce hardware related issues, then, of course, VM technologies are not the right choice.17:42
jibelHardware specific bugs offer their own special problems; if we don't have the hardware, it's much harder to reproduce17:42
jibelThere's not much we can do except prompt on the bug report for people affected by the bug to do the testing and install the package ourselves to look for regressions.17:42
jibelThese are often kernel, X, libc (where the compiler is bounded to CPU capabilities) problems17:43
jibelThen we want to make sure that all updates are applied to the testing environment and we can start the testing and try to reproduce the bug17:43
jibelWe want to do this so that we know what we're testing for when we install the proposed package.17:43
jibelOften, just doing this will offer us more insights into the actual problem being solved and sometimes discover a regression or another bug.17:44
jibelIf we can't reproduce the initial problem, we have much less confidence that the update actually is going to fix the issue.17:44
jibelIn this situation, whether the Test Case is wrong or incomplete, or the condition to reproduce the bug are not well defined, so we can have a doubt that the fix will really fix the bug in every conditions.17:45
jibell'll illustrate the verification phase with bug https://bugs.launchpad.net/ubuntu/+source/metacity/+bug/49409617:47
jibelThis is a critical usability defect. Clicking on a window send the events to the underneath window.17:47
jibelwrt to this bug a patch has been attached in comment #23 and the bug has been nominated for SRU between comments 25 and 26.17:47
jibelThe description is fairly complete, the issue is easy to understand and it includes a test case.17:48
jibelThat's not always the case, so sometimes you get to figure out how to test for the condition, or if that's really unclear what the bug is and how to reproduce, you can simply set the status back to 'in progress' asking for more info from the reporter or the dev.17:48
jibelThe first task is to reproduce the issue.17:48
jibelJust follow the steps described in the bug report. Once this is done you can enable -proposed17:49
jibelYou can do this through the menus, via System -> Admin -> Software Sources menu17:49
jibelThe details to enable -proposed are at https://wiki.ubuntu.com/Testing/EnableProposed17:49
jibelAs part of reproducing, make sure to double-check exactly which version you are testing17:50
jibelFrom the command line, apt-cache policy is your friend, and in this case17:50
jibel$ apt-cache policy metacity17:50
jibel  Installed: 1:2.30.1-0ubuntu117:50
jibel  Candidate: 1:2.30.1-0ubuntu1.117:50
jibel  Version table:17:51
jibel     1:2.30.1-0ubuntu1.1 017:51
ClassBotThere are 10 minutes remaining in the current session.17:51
jibel        500 http://archive.ubuntu.com/ubuntu/ lucid-proposed/main Packages17:51
jibel *** 1:2.30.1-0ubuntu1 017:51
jibel        500 http://fr.archive.ubuntu.com/ubuntu/ lucid/main Packages17:51
jibel        100 /var/lib/dpkg/status17:51
jibelWe see that 1:2.30.1-0ubuntu1 is installed and the candidate 1:2.30.1-0ubuntu1.1 from -proposed is available for update.17:51
jibelYou can install it either with update-manager or from the command line:17:51
jibel$ apt-get install metacity17:51
jibelOnly update this package and its dependencies, but not all the packages from -proposed as they may introduce some other issues.17:52
jibelOnce it is installed logout/login and try to reproduce the bug again.17:52
jibelIf the result is what you expect from the test case, we can start looking for regressions as well.17:53
jibelSome things to look for in term of regressions:17:53
jibel* install requirements; does it depend on other packages in proposed, particularly ones not from the same source package?17:53
jibelif it does, and both packages aren't moved into updates at the same time, the package will be uninstallable.17:54
jibel* possible differences in behavior for fresh install versus update from buggy version17:54
jibelsometimes the fixes only show up for new installations, particularly for packaging problems17:54
jibeljust generally play with the app; helps here if you're familiar with it.17:54
jibelFor metacity, that's pretty straightforward, we'll go ahead use our desktop, and see if things still work properly17:54
jibelIf everything passes then tag the report with verification-done17:54
jibelQuicky another example where things didn't went so well, which affects ssh17:54
jibelssh is a key component of  the system and it is critical to not break it.17:55
jibelThe bug is that you cannot disable access from IPv4 hosts to IPv6 only hosts. This makes life of sysadmins harder to keep sane access control where IPv6 is the primary protocol.17:55
ClassBotThere are 5 minutes remaining in the current session.17:55
jibelYou can see that the bug description has been rewritten by the developer to improce the documentation. He was kind enough to keep the history of the original report for reference.17:56
jibelHe also added a test case, every commenters and tester on the report agreed to say that the bug was fixed.17:56
jibelA security guy comes in and said "STOP! this fix doesn't includes the fixes from previous version"17:56
jibelThis is what is called a regression. The report has been tagged as verification-failed and the package will be removed from proposed.17:56
ClassBotakshatj asked: What if a bugfix fixes a security issue but introduces another type of bug that is not security related like a usablity bug(not sure if this is possible)17:56
jibelIf a fix introduces a regression it is rejected.17:57
jibelI don't have bug in mind to illustrate your question though.17:58
jibelFinally both failures and successes are important to report!17:58
jibelalso report anything out of the ordinary or unexpected you had to do in testing17:58
jibelit's also helpful to update the description of the bug if elements are missing (eg. you created a TESTCASE)17:59
jibelWe could use help in doing verifications and looking for regressions17:59
jibelThere's an SRU verification team on launchpad at https://launchpad.net/~sru-verification which tracks the SRUs,17:59
jibelAnd if, when doing all this, you run into problems, you can always solicit for help on #ubuntu-bugs and #ubuntu-testing, as well as asking directly on the bug report.17:59
jibelAnyone can contribute by doing SRU verification.17:59
jibelany question ?18:00
jibelaquarius, the floor is yours18:00
aquariusjibel, thanks, and thanks for a great talk! I now know loads more about SRUs :-)18: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: The Ubuntu One App Developer Programme - Instructors: aquarius
aquariusHi, all!18:01
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session.18:01
aquariusI'm Stuart Langridge, from the Ubuntu One team, and I'm here to talk about our upcoming app developer programme.18:01
aquariusDo please ask questions throughout the talk: in the #ubuntu-classroom-chat channel, write QUESTION: here is my question18:01
aquariusUp until now, your ability as developers to do cool things with Ubuntu One has been limited.18:02
aquariusBut I'm going to change all that.18:02
aquariusWe want to make it possible, and easy, for you to add the cloud to your apps and to make new apps for the cloud18:02
aquariusSo we do all the heavy lifting, and your users (and you!) get the benefits.18:02
aquariusImagine, for example, you've made a recipe manager application.18:03
aquariusSo you can type in all the recipes you like to cook, and you've got a permanent record of them.18:03
aquarius(For me, that would be: get a pizza base; put pepperoni on it. You'll be better at that than me.)18:04
aquariusDon't really want to take your laptop into the kitchen, though, of course.18:04
aquariusSo, build a mobile app which you sign into with Ubuntu One, and have that show all your recipes too.18:04
aquariusAnd a web app which you sign into with Ubuntu One, so that you can look up recipes while you're at a friend's house.18:04
aquariusThis is the sort of thing that we want to make easy; giving your users and you quick access to the Ubuntu One technology.18:05
aquariusMobile access to your data; web app access to your data; saving files direct into Ubuntu One; publishing files and photos from all your apps; adding playlists to the Ubuntu One music streaming app; streaming the user's own music into a game you've written.18:05
aquariusThis stuff is all being heavily worked on right now as we speak.18:06
aquariusSo this talk won't be too detailed with specifics, because they might change.18:06
aquariusI want to give you a flavour of what will soon be possible, and answer questions, and give some pointers, and get your thoughts.18:06
aquariusAlso, this is Developer Week, so I can talk about what the components we're working on are and then admire all the cool ways you all come up with for snapping them together, rather than waiting for marketing to come up with a "product" for you to use :)18:06
aquariusSo, some components that can be snapped together.18:07
aquariusYou'll be able to sign in to a web application with Ubuntu One.18:08
aquariusThis means that you don't have to manage your own identity system, think about password renewal, all that.18:08
aquariusThis is just like "sign in with Facebook" or "sign in with Twitter"; it's OpenID-based, and lets your users sign in to a web app and you'll know their Ubuntu identity.18:09
aquariusAnd that identity is shared everywhere; you can build web apps and mobile apps and Windows apps and Ubuntu apps which all share the same identity and know who they're talking to.18:10
aquariusOnce you've signed in to an app with Ubuntu One, that app can ask for permission to work with your data.18:11
aquariusThis lets you, developers, build applications that work on the desktop, on the web, on mobile phones.18:11
aquariusThe recipe manager example I mentioned above is one sort of thing you could do, there18:12
aquariusYour users use the nice recipe manager app on Ubuntu, which you've build with Quickly or whatever you prefer18:12
aquariusAnd then they can go to yourrecipemanager.com and sign in with Ubuntu One18:12
aquariusyourrecipemanager.com then asks them for permission to access their "recipes" database18:13
aquariusand can then show them all their recipes on the web!18:13
aquariusYour app (yourrecipemanager.com) does this via OAuth; it goes through the standard OAuth dance to get an OAuth token which can be used to access the user's recipes CouchDB database18:14
aquariusAnd your users can be happy that it's secure, because yourrecipemanager.com will only have access to their recipes database; it can't read their contacts, or their files, or their credit card info.18:14
ClassBotfisch246 asked: about when can this kind of stuff be implemented? 11.04? 11.10? 12.04?18:15
aquariusfisch246, everything I'm talking about today should be available for the 11.04 release.18:16
ClassBotth3pr0ph3t asked: Isn't it too early to start building apps for ubuntu one? -- I mean that thing can hardly sync files18:16
aquariusth3pr0ph3t, the 11.04 release will bring some massive improvements to all the Ubuntu One services -- data, music, files18:17
aquariusthe stuff I've talked about so far is around data, and I'll get on to files in a bit :)18:18
aquariusBut you can imagine sharing other sorts of data between applications.18:18
aquariusImagine, for example, an achievements system.18:18
aquariusYou write a few games; some on the web, some on mobile phones, some on the Ubuntu desktop, some on Windows.18:19
aquariusAnd every time the user achieves something in a game, you save that achievement to that user's "achievements" database.18:19
aquariusOn Ubuntu, you'd save it into desktopcouch, and Ubuntu One will take care of synchronising that into the cloud.18:19
aquariusOn Android, your game would include the DroidCouch library which gives you simple access to save data directly into the user's personal cloud databases.18:20
aquariusOn the web, your game's backend could use the u1couch Python library to do the same thing, save directly into the cloud, or you could just use the underlying REST API (which is just standard CouchDB with OAuth signing; u1couch is just a wrapper)18:20
aquariusOr you could write your own wrapper library for PHP or Rails or Flash or whatever you prefer (and then tell me about it so I can point to the documentation for it!)18:21
aquariusAt that point, all your games save achievements to the same place, so all your games can show you the achievements you've won in any game18:21
aquariusAnd, as before, you can set up yourachievements.com where a user can log in and see all their achievements.18:22
ClassBotdael99 asked: everything will be web-based? Will some kid of API be available to use trough Python, Java or C directly?18:22
aquariusdael99, certainly not everything is web-based. Ubuntu One is about you working with your stuff on your own terms18:23
aquariusSo part of that is that your data is everywhere, if you want it to be.18:23
aquariusYou can work with the copy that's in the cloud, or with the local copy of it, whether that's data, files, music, whatever.18:23
aquariusFor working with data in the cloud, there'll be web-based APIs, and then wrappers for those APIs for various languages.18:24
aquariusSo you'll be able to, for example, just import a Python library and write code Pythonically with that API, and hardly even have to care that that API goes off to the cloud to do its work. As far as you're concerned, it's just Python.18:24
ClassBotchadadavis asked: How does local caching of settings and data work? Can there be a bidirectional pipe between gconf (or dconf, or whatever) and ubuntuone?18:25
aquariuschadadavis, yes, there could be; it would be possible to write a desktopcouch backend for {g,d}conf.18:25
aquariusThere are a couple of interesting problems to solve, there; most applications don't distinguish between "stuff I care about which is specific to this machine" and "stuff I care about generally".18:26
aquariusImagine, for example, that an app stores its window position in dconf18:26
aquariussyncing that to your netbook might be a problem.18:26
aquariusSo there are some fun issues around that, but it would certainly be possible to do if you wanted to.18:26
ClassBotdarkdevil_ asked: will there be any feature with which I will be able to sync my Ubuntu One cloud with any existing non Ubuntu One clouds?18:27
aquariusdarkdevil_, that depends on precisely what you mean.18:27
aquariusYour data is stored in CouchDB. So you can replicate data from Ubuntu One to any other CouchDB anywhere, and the reverse.18:28
aquariusYour files are also accessible via the API, so you can pull files out of Ubuntu One directly and push them into another cloud provider if you want to, and the reverse.18:28
aquariusThese are the components that you'll be able to snap together.18:28
ClassBotdavidboy asked: There's going to be PHP bindings right?  So I can write web apps that take advantage of U1, etc.18:29
aquariusCertainly it will be entirely possible to write PHP bindings; the APIs that your web apps will talk to are just HTTP, so anything that can do HTTP requests (which PHP happily can) will be able to use them.18:29
aquariusSo you will be able to use PHP to talk to Ubuntu One out of the box.18:30
aquariusIt might be cool for someone to write a wrapper library to make that sort of thing even easier for PHP developers18:30
aquariusI don't think we'd do that on the Ubuntu One team ourselves, because (a) we're not PHP developers, and (b) it's best for us to concentrate on making the APIs great. But one of the things I'd love to do is point at those wrapper libraries from the main API documentation18:31
aquariusThere's loads of stuff you can do with shared data.18:31
aquariusBut Ubuntu One's not just about data.18:31
aquariusTake the music streaming service, for example.18:32
aquariusYou can currently stream music to Android and iPhone, and you'll be able to add that music to the cloud from Ubuntu and Windows.18:32
aquariusMaybe you want to be able to stream music back to your Ubuntu machine without syncing it, or your Mac, or your Palm Pre, or your LG mobile phone, or your toaster.18:32
aquariusSo, just use the music streaming API, which is a simple REST HTTP API, based on the Subsonic API, or help people to get at their music by showing them our HTML5 web player for streaming music.18:33
aquariusBut there's more interesting ideas around music streaming than just "listen to the music".18:33
aquariusPlaylists, for example. The Ubuntu One Streaming apps on Android and iPhone know how to create playlists.18:33
aquariusBut how they do that is not a secret. Your playlists are just stored in your cloud databases.18:34
aquarius(well, they will be once this stuff exists. See above point about how all this is being written. :))18:34
aquariusSo, why not sync your playlists from Banshee or Rhythmbox or Amarok or Exaile or Quod Libet or iTunes or Windows Media Player?18:35
aquariusCopy the playlists from your media player into desktopcouch on Ubuntu or into the cloud directly with u1couch on Windows or the Mac or anywhere else, in the correct format, and those playlists will instantly show up on your phone!18:35
aquariusA simple example of this is https://code.launchpad.net/~sil/%2Bjunk/m3u2u1ms/ which is a quick script I wrote to take an m3u playlist and store it in desktopcouch on Ubuntu.18:35
aquariusSo you can make your Banshee playlists available to the Ubuntu One app on your Android phone by exporting them as m3u and then importing them with the script.18:35
aquariusTighter integration is great, here; what we want to do is to make it easy for you all to build the stuff that you want on top of Ubuntu One.18:36
aquariusSo if you want to have your Amarok playlists available for streaming, it should be possible to do.18:36
aquariusI rather like the idea of playing a Flash game on the web and having the background music be the most appropriate music chosen from *my* music collection. That'd be cool.18:36
ClassBotjderose asked: Will U1 ever offer continuous CouchDB replication? Like say *someone* was developing a distributed video editor with real-time collaboration :)18:37
aquariusjderose, cor, just imagine if someone was doing that, eh? (you should all watch jderose's lightning talk at the end of the week ;))18:37
aquariusContinuous replication: not planned right now. (There are some big issues with turning it on for lots and lots and lots and lots and lots of databases, which is what we have.)18:38
aquariusIt's something I want to continue to investigate, though.18:38
aquariusUbuntu One also, as you know, does file sync.18:39
aquariusBut just syncing files is already taken care of by Ubuntu One itself, on Ubuntu and Windows.18:39
aquariusWhat's more interesting is working with those files.18:39
aquariusSo, for example, imagine being able to instantly, one-click-ly, publish a file from your application to a public URL and then tweet that URL.18:39
aquariusInstant get-this-out-there-ness from your apps.18:40
aquariusThe screenshot tool Shutter, for example, can do this already; PrtSc to take a screenshot, then "Export > Ubuntu One".18:40
aquariusThey did a bunch of hard work to do that, and I massively applaud them; nice one Shutter team!18:41
aquariusBased on what they did, that's the sort of thing that should be easier to do.18:41
aquariusSo there will be easy-to-use APIs so your apps can do the same. Imagine quickly sharing your newly created image or document or recipe with the world.18:41
aquariusYour app could have a button to "store all my files in the cloud", or "publish all my files when I save them", or "automatically share files that are part of Project X with my boss".18:41
aquariusMore to the point, you'll be able to work with files directly *in* the cloud.18:42
aquariusSo a backup program, for example, could back up your files straight into Ubuntu One and not sync them to your local machines.18:42
aquariusAnd of course being able to save things in and out of the cloud means that you can get an Ubuntu One sync solution on other platforms.18:43
aquariusSo you could work with your files from your non-Android mobile phone (we've already got the great mkarnicki working on that for Android!)18:43
aquariusBuild a fuse or gvfs backend for Ubuntu or Fedora or SuSE or Arch Linux. Build a WebDAV server which works with Ubuntu One and mount your Ubuntu One storage as a remote folder on your Mac.18:44
aquariusAnd web apps can work with your cloud too, for files as well as data.18:44
aquariusImagine, say, a torrent client, running on the web, which can download something like a movie or music from legittorrents.info and save it directly into your cloud storage.18:45
aquariusSo you see an album you want on that torrent site (say, Ghosts I by Nine Inch Nails) and go tell this web torrent client about it (and you've signed in to that web torrent client with Ubuntu One)18:45
aquariusAnd the website then downloads that NIN album directly into your personal cloud -- which of course makes it available for streaming direct to your phone.18:45
aquariusYou could do that with videos as well: choose a torrentable video (say, Beyond the Game, the documentary about World of Warcraft) and download that directly into your cloud, if someone built the web torrent client.18:47
aquarius(Of course, that would be cooler if Ubuntu One offered a video streaming service as well as music streaming, wouldn't it. Hm... ;-)18:47
aquariusBut it's not just about your content for yourself; think about sharing.18:48
aquariusUbuntu One lets you share a folder with people. This would be great for distribution.18:48
aquariusImagine that you publish an online magazine.18:48
aquariusSo, you create a folder on your desktop, and put issues of the magazine in it.18:48
aquariusThen, you put a button on your website saying "Sign in with Ubuntu One to get our magazine".18:49
aquariusWhen someone signs in, your website connects to the Ubuntu One files API, with your private OAuth token, and adds that signed-in user to the list of people that your magazine folder is shared with.18:49
aquariusThen, whenever your magazine has a new issue, you just drop it into that folder on your desktop.18:49
aquarius(Or even upload it to Ubuntu One directly through the website.)18:49
aquariusAll the subscribed people will get the new issue instantly, on all the machines they want it on, and in the cloud.18:49
aquariusYou could distribute anything like this. Imagine a podcast, or chapters of a novel.18:50
aquariusIt would also work for paid-for content; when someone pays, have your code share a folder with them, and put their paid-for stuff in that folder. That's all doable through the files API.18:50
aquariusWe're building the files API itself (an HTTP-based REST API) and also some wrappers for it to make it easier to use in your apps from Python and the like.18:51
ClassBotThere are 10 minutes remaining in the current session.18:51
aquariusOK, I've talked about a blizzard of ideas that'll be made possible, and shown you almost no code.18:51
aquariusWhich is because, as mentioned at the beginning, a lot of this code is currently being written and tested as part of the 11.04 release :)18:51
aquariusHowever, code is nothing without documentation, and that's really important.18:52
aquariusMy main task for this cycle is to build documentation for all of this stuff; how to use Ubuntu One and all the APIs we provide in the cloud, on Android, on Windows, on iOS, on Ubuntu.18:52
aquariusSo there'll be documentation for all this stuff so all of you clever people can build things that I haven't even dreamed of.18:52
aquariusWe did some user research (thanks ivanka and the user research team!) on which sites have great API documentation and which don't, so we have an idea of good directions to go in.18:53
aquariusAnd I'm working away feverishly on getting an alpha version out!18:53
aquariusSo, to summarise, since I'm running out of time: what the app developer programme is all about is giving all of you the chance to use Ubuntu One as a piece of infrastructure...like Gtk, or Python's urllib module, or PHP's curl bindings.18:54
aquariusWhen you want your users, or you, to be able to get at their data on their terms, from anywhere, then you should be able to use Ubuntu One to do that18:55
aquariusSo, what I'd like to know is: what are your cool ideas? What help do you need from me in making them happen? What do you want to use Ubuntu One for in your apps and your scripts and your work?18:55
ClassBotdavidboy asked: So when will the documentation be up? :D18:55
ClassBotThere are 5 minutes remaining in the current session.18:56
aquariusdavidboy, at 11.04 release! That's the deadline :)18:56
aquariusSo you'll be able to start working with this stuff once natty comes out -- but we're documenting and building APIs for all sorts of platforms, as I said; for Ubuntu 11.04, for the web, for Windows and Android.18:57
aquariusSo your apps can be anywhere and all work together :)18:57
ClassBotchadadavis asked: URL to current code / docs / wiki, so that we can follow development?18:57
aquariusat the moment there isn't one, because half of the APIs aren't yet written. There are blueprints you can look at which show some of this work18:58
aquariusand I'd like to get an alpha version of the documentation up as early as possible18:58
aquariusOK, I've got 2 minutes left: any final questions?18:58
aquariusThen I shall hand you over to the seif and manish show to hear about the greatness that is Zeitgeist :)18:59
seiflotfythanks :)19:00
aquariusseiflotfy, manish, it's all yours. Thanks, everyone!19:00
manishThanks aquarius19:00
seiflotfythank you aquarius19: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: Rocking with Zeitgeist - Instructors: manish, seiflotfy
seiflotfymanish, ready19:01
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session.19:01
manishHello everyone19:01
manishThis session will introduce you to zeitgeist19:01
manishand its related to components19:01
manishthe agenda is here https://wiki.ubuntu.com/UbuntuDeveloperWeek/Sessions19:01
manishscroll down19:01
manishI will post it here19:01
manishWhat is Zeitgeist and what it is not - 10 mins19:01
manishSecurity Implications - 5 mins19:02
manishTechnologies used - 5 mins19:02
manishComponents of Zeitgeist - 10 mins19:02
manishIntegration of Zeitgeist in applications - 10 mins19:02
manishLatest release numbers and installing zeitgeist - 5 mins19:02
manishand finally FAQ for 15 mins19:02
manishI have allocated FAQ for 15 mins because I see there are a lot of confusion reguarding what zeitgeist is19:03
manishLet us start with first19:03
manishWhat is zeitgeist?19:03
manishZeitgeist is an event logger which keeps a track of your activities while you are using your computer (any supported computing device).19:03
manishEvents such as opening files, closing files, recieveing calls, sending a message on Instant Messenger (GTalk, Yahoo etc) are logged by Zeitgeist.19:03
manishThe logging can be configured, so you have the complete control on what is logged and what is not.19:04
manishThis data can then be used for variety of useful activities.19:04
manishSome of the possibilities are having a complete skype, empathy, pidgin call log.19:04
manishFinding out with you converse the most.19:04
manishYou can check which applications you launch the most and how many times you have opened a specific file.19:04
manishPeople ask me - what are the possibilities of the things we can do with this19:05
manishI reply - The possibilities are endless, the sky is the limit19:05
manishI am hoping on you people to come up with innovative ideas after this session19:05
manishafter coming to know what zeitgeist is exactly an what it is not19:05
manishso now what zeitgeist is not?19:05
manishFirst and formost - Zeitgeist is not a search engine!!!19:06
manishremember this19:06
manishit is an event logged19:06
manishIf you have some file on your system, then don't expect zeitgeist to search for it.19:06
manishIt is not the work of zeitgeist to scan you disks and find files.19:07
manishIt's work is to track your activities and log it.19:07
manishAs opposed to general misconception, zeitgeist doesn't track files19:07
manishZeitgeist deals with events and not files.19:07
manishThere are events where no file is involved like recieveing a call.19:07
ClassBotUndiFineD asked: are there apps for mobiles, to be keeping track of my android19:07
manishactually work is going on to port it to phones too19:08
manishwe had a prototype for Maemo19:08
seiflotfyand android19:08
manishbut sadly Maemo's future is not clear after it got merged with Meego which again is a bit confusing19:08
manishwe are working on android19:08
manishsince Android doesn't use the standard linux stack, some work is needed for making it run on android19:09
manishesp testing the port is very important19:09
ClassBotdarkdevil71 asked: is it a key logger ?19:09
seiflotfydarkdevil71, no its not19:10
manishdarkdevil71: I will come to it. It is the next topic. The security implication19:10
manishdarkdevil71: it doesnt track each and every key you press19:10
manishit just logs your activity19:11
manishmost opening and closing of files19:11
manishand some other events19:11
manishwhich events you want to send is configurable19:11
manishthough the api is still a bit crippled19:11
manishNext is - Security Implications19:11
manishYou might heard that Zeitgeist is a malware/spyware which tracks your activities.19:11
manishThis is not an exact definition of malware/spyware.19:11
manishMalwares record your activity, steal your data without your approval and sneak into the system without system. They have a destructive intention.19:12
manishContrast this with zeitgeist, it records events so that it can be used for constructive purposes.19:12
manishIt's like nuclear technology.19:12
manishUse it constructively, it will benefit mankind, use it destructively and you will be harmed.19:12
manishOne concern people raise is that if some malware is installed, then it can steal the zeitgeist data.19:12
manishIn this scenario, if a malware is installed, then you are at a bigger risk than just getting your zeitgeist data stolen.19:13
manishYour pidgin passwords are stored in plain text in your home directory.19:13
manish(last when I used pidgin)19:13
manishYour browser's history is very easily accessible.19:13
manish If you have not set the master password in Firefox, then even your passwords are available to the malware.19:13
manishany questions related to security implications?19:14
manishNext up we have - Technologies used in Zeitgeist19:15
manishZeitgeist is written using Python and uses sqlite to store the events.19:15
manishIt exposes an API using DBus using which other applications can communicate with it.19:15
manishBelow the hood, it is basically dependent on glib which makes zeitgeist portable.19:16
manishGet a proper port of dbus and glib on windows and zeitgeist should run there without much issues.19:16
manishor in this case any other OS19:17
manishNext up -  Components of zeitgeist19:17
manishZeitgeist is not a single project19:18
manishbut a collection is components19:18
manishhelper libraries etc19:18
seiflotfya framework more or less19:18
manishthe core part is the engine19:18
manishor the daemon19:18
manishAt the core of zeitgeist is an engine which stores all the events and acts as the store.19:19
manish It recieves and provides relevant information(events) to other process.19:19
manishThe information is exposed via a DBus Session bus.19:19
manishIf the zeitgeist server is not running, the first time an application invokes a method over DBus, the daemon is started.19:19
manishI don't remember the exact name what this is called - autostarting a session bus when first call is made. Hope someone can tell me on #ubuntu-classroom-chat19:20
manishThe second component is called the datahub19:20
manishI know sounds dangerous a bit19:20
manishit is a passive logger19:21
manishthere needs to be some component which keeps on pushing data to the daemon19:21
manishor the daemon is nothing more than a white elephant19:21
manishThanks to aquarius that is called DBus activation --  autostarting a session bus when first call is made.19:21
manishcoming back19:21
manishso datahub is a logger19:22
manishwhich also runs as a daemon19:22
manishand looks at the recently used files19:22
manishand pushes them in the daemon19:22
manishso basically when you open a file by double clicking using nautilus datahub comes in picture19:23
manishI wont go much in the geekery of implementation19:23
manishfor adventurous people - "bzr branch lp:zeitgeist-datahub" is your friend19:23
manishone more thing I forgot was telling you people about our website, sorry19:24
manishDownload section: http://zeitgeist-project.com/download/19:24
manishdevelopment - http://zeitgeist-project.com/development/19:24
manishand we are always available at #zeitgeist on freenode19:24
manishnext up - Activity Journal19:25
manishit was formely called gnome-activity-journal19:25
manishit is a GUI viewer for your events19:25
manishlike a dashboard19:25
manishWith proper zeitgeist extensions you can even have more detailed logs including when you joined an IRC channel or when you received or dropped a call over your IM client.19:26
manishyou can install it, it is in the repos19:26
manishas gnome-activity-journal19:26
manishIf you right click on any event and select "More Information", you can come to know what other files were opened or which other activity you were engaged in during this event. You can delete the event if you do not like it.19:26
manishnext up is - Dataproviders19:26
manishDataproviders are small extension/addins/addons/plugins into applications which can push events to zeitgeist.19:27
manishwe also call it datasources19:27
manishsame thing19:27
manish Datahub cannot push everything to the daemon.19:27
manishIt mostly tracks opening of files by double-clicking from file browser.19:27
manishUsing data-providers more *relevant* events can be added like "Creating a new playlist", "Buying a track from foo music store"19:27
manishnext up is - Extensions19:27
manishWhen we say extensions, it refers to zeitgeist daemon extensions.19:28
manishmeans the extensions for the daemon19:28
manishand not the client19:28
manishZeitgeist extensions are those components using which you can control he behavior of how the daemon behaves. You can expose additional information via DBus.19:28
manishIn a nutshell, you this is your tool of trade if you are not satisfied with how zeitgeist behaves. One size doesn't fit all. :)19:28
manishIf you want to have an inner scoop of extensions behavior, check19:28
ClassBotchadadavis asked: facilities for plugins, e.g. Facebook to include external activity streams?19:29
manishchadadavis: yes19:29
manishthat is what I was telling about dataproviders19:29
manishI or you can write dataprovieders19:29
manishwhich can probably run as a daemon pulling data from all your web apps19:29
manishand logging them in zeitgeist19:29
manishwhich is again browsable19:30
manishchadadavis: nice idea. Added to my TODO19:30
ClassBotMickStep asked: is it likly that a syncing service will every be created for zeitgeist, like tomboy created snowy19:30
manishMickStep: yes. We were working on it19:30
manishbut due to some shortage of time19:30
manishpersonal lie19:30
manishand other important priorities related to zeitgeist pushed this feature a bit below our priority queue19:31
manishthanks for bringing it up19:31
manishwill look into it19:31
manishPeople, ask your questions :)19:31
ClassBotjderose asked: Speaking of syncing, are alternate storage backends a possibility for Zeitgeist, like say desktopcouch?19:31
manishjderose: right now none. It can be looked into19:31
manishbut the thing is that is not worth the effort as of now. Since right now we are spending our time in deploying zeitgeist19:32
manishintegration with applications19:32
manishfor you call,  you can add our zeitgeist ppa or latest packages. Sadly most of the packages are for Maverick19:33
manishthis PPA19:33
manishthere are many zeitgeist-datasources-* packages19:33
manishlike one for tomboy19:33
manishif you install that package19:34
manishthen your opened, closed notes will appear in GAJ :)19:34
manishif you install the -xchat datasource19:34
manishit will show you which all channels you joined19:34
manishwhen you talked19:34
manishwhen you quit, parted19:34
manishcando_ is the current maintainer of gnome-activity-journal19:35
manishthere are many datasources/dataproviders have a look at them in the PPA19:35
manishnext is Language bindings19:36
manishby language bindings I mean, language specific wrappers over zeitgeist api19:40
manishyou can use zeitgeist using it's python client19:40
manishwhich is shipped along with the daemon19:40
manishfor C/Vala we have libzeitgeist19:40
manishfor mono (C#) we have zeitgeist-sharp http://launchpad.net/zeitgeist-sharp19:40
manishQt - libqzeitgeist19:40
manishand we also have for javascript19:40
manishbut still it is not not yet mature19:40
manishneeds work19:40
manishnext is Zeitgeist integration19:40
manish1) Unity19:40
manishokay I will come to it19:40
manishnow lets goto questions19:40
ClassBottechbreak_ asked: its in gsoc ?19:40
manishif you asked if zeitgeist is in gsoc, then we are trying, not sure if we need to apply independently19:40
manishit doesnt make sense19:40
manishwe need zeitgeist integration in applications like kde, gnome apps19:40
seiflotfyzeitgeist will be offering some work over several organizations19:40
seiflotfysuch as KDE, GNOME and hopefully Ubunut19:40
ClassBotUndiFineD asked: can we read out data from zeitgeist, if so could we get some statistics, maybe people would like to compare productivity19:40
manishUndiFineD: yes. you can19:40
manishuse the API19:40
manishif you like, you can use the language of your choice19:40
manishPython, C, Vala, C#, Javascript19:40
manishas I can see in the -chat channel, there is some confusion19:41
manishzeitgeist doesnt look for any data19:41
manishit just sits and waits for events to be pushed19:41
manishwhen asked it hands out events19:41
manishthe pushing it done by datasources19:42
ClassBotjeyd asked: what about the xchat datasource in LUCID?19:42
manishjeyd: we need to put that too. I can see that -datasources package is there for lucid19:43
manishand the lucid package doesnt have xchat19:43
* manish puts this in TODO19:43
manishfor more info https://launchpad.net/~zeitgeist/+archive/ppa/+packages19:43
ClassBotgodbyk asked: Does Zeitgeist only pay attention to the channel part/join events and ignore what was actually said in the channel?19:44
manishgodbyk: it wont log each and every line you said19:44
manishuse your irc client's logging functionality19:44
ClassBottechbreak_ asked: which language it is written inn ?19:45
manishas I said zeitgeist is written in Python19:45
ClassBotMickStep asked: What is the simplest example you can provide for how to write a dataprovider19:46
manishthere is one19:46
manishI will use Python's example19:46
manishyou can check it in git.19:47
manishthis one19:47
manishthe RB plugin19:48
manishWe have implemenation for Unity19:48
manishUnity makes use of Zeitgeist in its dash where it provides the user with easy access to its most and recently used data (files/folders/applications) as well as searching over the Zeitgeist FTS (Full Text Search) extension.19:48
manishThere is more development going on to bring the same features to a contacts dash where the user can browse his contacts by most/recently used.19:48
manisha snapshot by seiflotfy19:49
manishthen we have it integrated in Synapse19:49
=== sre-su_ is now known as sre-su
manishthe uber-cool launcher written by mhr3 and his team19:49
manishOther than heavily depending on the Zeitgeist FTS (Full Text Search) extension for searching, you can also browse recent items which were logged by Zeitgeist, in case you close a document by mistake or just want to hear again the music track that played a few minutes ago.19:49
manishIt also has a relevancy service, which makes sure that applications you use often end up among the first results of a search – this is done using Zeitgeist, so you can also track the popularity also in other Zeitgeist clients.19:50
manishobligatory snapshot - http://zeitgeist-project.com/wp-content/uploads/2010/12/synapse-search-sort-apps-ranking.png19:50
manishI already told about Activity Journal19:50
seiflotfymanish, i think it would be cool to show them the tomboy plugin that provides "used with"19:50
ClassBotThere are 10 minutes remaining in the current session.19:51
manishThe used with is here http://thoughts.manishsinha.net/photo/1280/2890463378/1/tumblr_lfh52cBm7g1qcwfsm19:51
manishhere you can even see bzr plugin in action19:51
manishand xchat plugin in action19:51
manishseiflotfy: you have a snapshot with tomboy plugin19:51
manishcan you take one and upload before this session gets over?19:51
manishlast in integration section is Docky19:52
manishThe integration with Zeitgeist is in the form of generating jump-lists for applications and folders19:52
manishAn application that is provided a jump-list is populated with the most and recently used data that was used with it. This also applies for folder where the most and recently used files are displayed in its jump-list.19:52
manishsnapshot: http://zeitgeist-project.com/wp-content/uploads/2010/12/docky-folder-jump1-300x289.png19:52
seiflotfythis is a video of zeitgeist being used by tomboy19:53
manishNext is Installation:19:53
manishStable PPA: http://launchpad.net/~zeitgeist/+archive/ppa19:53
manishI have an experimental PPA where i love to upload packages19:53
manishbleeding edge19:53
manishenough to break your system19:53
manishuse it with care, if you are adventurous, this is you best best19:54
manishThe best way to install zeitgeist is from PPA of official repos19:54
manishor if you want to check the latest versions19:54
manishZeitgeist Engine - 0.7 "All I have is this woodchuck"19:54
manishZeitgeist Datahub - 0.7.019:54
manishActivity Journal - 0.6.0 "Pink Unicorns don't exist"19:54
manishlibzeitgeist - 0.3.2 Rattleweed19:55
manishzeitgeist-sharp - 0.1.1 Lily19:55
manishLily is the character from HIMYM (I love that series) :)19:55
manishlibQZeitgeist - 0.1 "Hit ‘n Run"19:55
manishand for dataproviders we have only snapshot releases19:55
manishwhich we package19:55
ClassBotThere are 5 minutes remaining in the current session.19:56
ClassBotgodbyk asked: What are some of your favorite future plans for Zeitgeist? How and where would you like to see it be used in the future?19:56
manishgodbyk: nice question19:56
seiflotfygodbyk, alot19:56
manishfav plans are19:56
manishhaving a good blacklist plugin19:56
manishthat is wat everyone wants19:56
manishand Banshee integration19:56
manishwhich is my fav thing19:56
seiflotfyand the geolocation deployment19:56
manishand syncing service19:57
manishwhich is half implemented19:57
manishit uses django19:57
manishseiflotfy: shall we move to next quesiton?19:57
ClassBotJackyAlcine asked: Zeitgeist is a semantic framework, like NEPOMUK, no? Is it possible to use this to do automation tasks like perhaps, backups of the last few used documents?19:57
seiflotfyJackyAlcine, no its not like NEPOMUK19:57
manishseiflotfy: your turn to answer this19:57
seiflotfyNEPOMUK is a ontology19:57
seiflotfyNEPOMUK KDE is a repository19:57
seiflotfyNEPOMUK KDE knows about what your files are about19:58
seiflotfyZeitgeist is a log19:58
seiflotfyit knows how you use your files and how they are contextually related19:58
ClassBottechbreak_ asked: any video log it keeps ?19:59
seiflotfywhat do you mean19:59
seiflotfyif u have any questions please join #zeitgeist19:59
seiflotfywe will be happy to help you out there19:59
seiflotfyour time is up19:59
seiflotfyso thanks you19:59
manishwe have most of our discussion on irc19:59
manishand we hardly use mailing lists19:59
manishthanks you everyone19:59
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting your fixes into Debian, how to make community happy - Instructors: Rhonda, nigelb
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session.20:01
RhondaSo, let's continue with the schedule without further interruption, to keep you satisfied.20:01
=== neversfelde_ is now known as neversfelde
RhondaPlease reminded to ask your questions in #ubuntu-classroom-chat and prefix them with QUESTION: so that ClassBot can pick them up.20:02
RhondaI'm Rhonda and I'm your host for the last session today which is about "Getting your fixes into Debian, how to make community happy"20:02
RhondaI will be your host alone, unfortunately nigelb had to rest.20:03
RhondaAnyway, I'm a longtime Debian Developer and have stumbled maintained a fair amount of packages for Debian for a long time, so I managed to get a good overview on how to work with the Debian Bug Tracking System (BTS).20:04
RhondaFirst let me tell you why you want to send bugreports to Debian and get fixes done there instead of in Ubuntu.20:04
RhondaYou might have attended the great session of tumbleweed yesterday where he mentioned the why.20:05
RhondaLet me quote him, "we should rather report the mistake to the upstream, and we'll get the benefit of the fix, without extra effort, when the upstream releases a new version"20:05
RhondaAnd: "during [regular development time], any uploads to debian get pulled over pretty quickly (assuming we haven't deviated from Debian)"20:05
RhondaHaving a difference within Ubuntu requires a lot of overhead because a merge can't happen automatically. It requires someone to take a look at it, requires testing, wether it still applies, and stuff.20:06
RhondaAnd then there is also our Code of Conduct which asks us to be collaborative, to give back.20:06
RhondaSo every patch that is pushed upstream is a patch less for us to keep care of, with the additional benefit to the rest of the Free Software ecosystem.20:07
RhondaUnfortunately (for certain definitions of that word) Debian doesn't use launchpad but debbugs, a special tailored BTS done for the requirements within Debian.20:08
RhondaThe first interface I want you to get familiar with is the website: http://bugs.debian.org/20:08
RhondaIt offers you simply and quite convenient query shortcuts - and it's just that: A query interface.20:09
RhondaThe Debian BTS is run and operated only by emails, the website is a read-only tool.20:09
RhondaBut it still offers a lot: If you want to see e.g. the bugreports about a certain package, you just add the packagename to the URL, like in http://bugs.debian.org/wesnoth-1.820:10
RhondaThere you get an overview of all the open bugreports against said package.20:10
RhondaFrom there you can click through and end up with different queries, like for a specific bugreport (which can also be reached through http://bugs.debian.org/bugnumber, like http://bugs.debian.org/12345)20:11
RhondaOr for a specific package maintainer address, it's http://bugs.debian.org/maintainer@email.address20:12
RhondaBut more interesting for you, when you are reporting bugs, probably is to query all of your reported bugs that weren't dealt with yet. This is mine: http://bugs.debian.org/from:rhonda@debian.at20:12
ClassBothugohirsch asked: I need to know the exact version of the package I'm looking for bugs in Debian, right?20:13
RhondaNo, the overview page for the bugs for a package aren't for a specific version, or release. You get them all on one page there.20:13
RhondaIf you scroll down to the end of the overview page you have a form where you can narrow down the list, but in general you get them all.20:14
RhondaIf your question was related to wesnoth-1.8, the 1.8 is part of the package name, it's not the package version. Sorry for having used a confusing example here. :)20:15
RhondaPlease notice that a source package can have multiple binary packages, and if you want an overview for all the bugs for a certain source package, you go to http://bugs.debian.org/src:sourcepackagename20:16
RhondaAnyway, like said, the website is just a query interface. The actual working stuff behind debbugs is its email interface.20:16
RhondaThere is one commandline tool that is very popular because it prepares a report template for you and fills in some additional information that are helpful for the package maintainer. That tool is called reportbug.20:17
RhondaWithin Ubuntu though, you need to add pass the -B debian option to reportbug, otherwise it will tell you that you should use launchpad (for Ubuntu) instead to report bugs. :)20:18
RhondaSo if you run reportbug -B debian somepackage, you will be asked a few questions, an editor will get fired up into which you enter the description of the bug, and then you can send it.20:19
RhondaThis though requires usually a local installed mail transport agent, which might be a bit cumbersome. But even in those cases, reportbug can be very useful.20:19
RhondaIt has a --template option which can produce the template text for you to paste into your preferred email client to get the additional information for the package maintainers.20:20
ClassBothugohirsch asked: Is reportbug similar to ubuntu-bug (reporting to LP instead)?20:20
RhondaActually I've never used ubuntu-bug, this is where I would have hoped for a person deeper involved in Ubuntu to jump in to the rescue. ;)20:21
RhondaThe general overview about debbugs can be found on https://wiki.ubuntu.com/Debian/Bugs, and the specific description about the email interface is at http://www.debian.org/Bugs/Reporting20:22
RhondaActually reporting a bug to Debian is sending an email to submit@bugs.debian.org and add a few pseudo header lines in the first lines of your mail text.20:23
RhondaThe most important here is "Package: packagename" so that the BTS knows where to sort your bugreport to.20:24
RhondaThere are additional ones, like "Version: 1.2.3" to note that you found the bug in said version.20:24
RhondaThen there is "Severity: important" - this tells the BTS the severity of the bugreport. Valid values here are grave, critical, serious, important, normal, minor and wishlist20:25
RhondaPlease don't choose the first three unless you are very certain here, they have a special meaning, I'll return to them later.20:25
RhondaIf you are uncertain, just leave it out and it will default to normal. All these things can be adjusted later.20:26
RhondaYou will receive an email in return telling you that your bugreport was received and telling you the number of the bugreport, for a reference.20:26
RhondaAnd here we come to the control bot of the BTS, reachable through control@bugs.debian.org20:27
RhondaYou can send it commands to manipulate the bugs, and for this you need the bugnumber.20:27
RhondaThe documentation for that can be found at http://www.debian.org/Bugs/server-control - you can see the list of commands in the table at the top.20:28
Rhonda<MickStep> Is this debian method of dealing with bugs through email descended from the days before the WWW really took off20:29
RhondaActually to some degree, or rather not. Yes, there weren't these possibilities in the early days of html, but forms were already there.20:30
RhondaBut what actually is important for us to be able to reach the bug reporters, and an email interface is very convenient in that way because email is quite universal.20:30
RhondaWith the commands for the control bot you can see that you can adjust almost all values, like with "severity 12345 important" you'd change the severity of that bug, with "forwarded 123 http://upstream.bugtracker/456" you can note down that this bug was also reported to some upstream project20:32
RhondaThe "tag" command is also very useful, bugs can be marked with certain tags.20:32
RhondaCommonly used ones are moreinfo, unreproducible, wontfix, patch, help, security, pending, and releasename tags, like squeeze or wheezy or sid.20:33
Rhondaretitle will set the bugtitle new, in case when the original bugreporter didn't provide a useful summary in the subject20:34
RhondaWith found one can note down additional affecting versions, and with fixed one can note down that the bug is fixed in said version.20:34
RhondaThough, usually when bugs get closed in a version, it is done similar to how it's done in Ubuntu: with a changelog entry.20:35
RhondaFor Debian this goes like "Closes: #12345" (in Ubuntu it's "LP: #12345")20:35
RhondaThat will do two things in the end: It sets the fixed version in the bugreport, and it will mark the bugreport as done.20:36
RhondaAnd this is where I want to start with explaining how version tracking works in the Debian BTS.20:36
RhondaBecause usually, after a while, bugs get archived so they disappear from the overview page.20:37
RhondaI wrote this down in a blog post of mine last year, but I'll explain it here nevertheless. The blogpost as a reference can be found here: http://rhonda.deb.at/blog/debian/on-BTS-usage.html20:37
RhondaBugs get archived after 28 days they are done.20:38
RhondaThough, there might be certain delaying factors here: The bug has to be done on all architectures in unstable and in testing.20:39
RhondaWhen that's the case, the counter start.20:39
RhondaWell, it has to be done in testing only when the version tracking also sees testing as affected.20:39
RhondaWhen the bugreport was filed against a version that is only in unstable and all archs are in sync in unstable the counter starts then already.20:40
RhondaAlso there are these special bug severities that I mentioned earlier: grave, critical and serious.20:40
RhondaThose are considered Release Critical bugs, and such bugs have to get fixed in _all_ affected distributions, not only in the ones in development.20:41
RhondaThat means, bugreports for RC bugs that are done in unstable will still stay around in the overview for the package as a reminder.20:41
RhondaSometimes though version tracking gets a bit tricky.20:42
RhondaI've dug up some bugreports that we can take a look at to learn to understand it.20:42
RhondaAnd actually, I want to also mention another great helpful tool, which is parts of the devscripts package: It's called "bts".20:43
Rhondabts is a commandline client to the BTS. Actually what it does is create a mail to control@bugs built from the options you give.20:43
RhondaThe former mentioned example of setting the severity of a bugreport would be as easy with bts as "bts severity 12345 important".20:44
RhondaPlease notice again that this requires a local configured MTA (ssmtp is quite easy for simple sending out mails)20:44
RhondaAnd it takes your DEBEMAIL environment variable as email address, so make sure to set that to your preferred value.20:45
ClassBotMickStep asked: That debian ssl bug was a "grave"?20:45
RhondaQuite certainly. :)  You can read up on the definitions of the servities in the BTS documentation on http://www.debian.org/Bugs/20:46
RhondaSo, coming back to my examples. Let's start to dig through the overview page that I mentioned before first, explaining a few more interesting parts there.20:47
Rhondahttp://bugs.debian.org/wesnoth-1.8 - you see the bugreports grouped by severities. You have links to the Bugs themself in the number, after that is a box of [m| | ] which notes down some flags.20:48
RhondaIf you hover the characters you get their meaning in a tooltip - but you can also click there to get additional overview information20:48
RhondaLike who reported the bug, when, the tags, and such#20:49
RhondaIf you actually go to the bug page, you find overview information at the top, and a version graph on the righthand side.20:49
RhondaRed circles mark affected versions, green boxes fixed versions.20:49
RhondaYou also can see the distribution parts in there to see wether stable, testing and unstable are affected20:50
RhondaLet's look at a specific bug: http://bugs.debian.org/61278020:50
ClassBotThere are 10 minutes remaining in the current session.20:51
RhondaYou don't see a version graph here because there aren't any version information given.20:51
RhondaThe total lack of version information makes the BTS think the bug affects all versions of the package.20:51
RhondaActually, building against a package from experimental isn't a release critical bug, so what am I going to do?20:52
RhondaI call this command:20:52
Rhondabts severity 612780 important '# FTBFS against packages in experimental is not RC'20:52
RhondaLeave the page open, we will reload it in a few minutes. :)20:53
RhondaThis bugreport is also interesting: http://bugs.debian.org/45655820:53
RhondaIt actually does have a bug graph, and both found and fixed versions.20:53
RhondaBut why isn't there a green box?20:53
RhondaIf one looks close then one can see that it was found in the audacious package but fixed in the audacious-plugins package.20:54
RhondaThe BTS though doesn't find any information that audacious package is fixed, and the bugreport is assigned to that package.20:55
RhondaSo the proper fix to get that bugreport really done is a reassign to audacious-plugins package.20:55
ClassBotThere are 5 minutes remaining in the current session.20:56
RhondaPlease notice that a reassign deletes all version information, so we have to re-add the fixed version afterwards.20:56
RhondaHere bts comes to the rescue again, and this is a good example for a chained command: One can give multiple commands that are sent to the control bot in one commandline. This is what I am using:20:56
Rhondabts reassign 456558 audacious-plugins '# done in different source package' . fixed 456558 2.0.1-120:56
RhondaActually there are more than just this bug in that state, so I rather leave this up to a team member responsible for audacious: bdrung, please reassign them all appropriately. ;)20:57
RhondaThe next example is more interesting: http://bugs.debian.org/src:mail-notification20:58
RhondaYou will find a fair amount of still non-archived bugs at the bottom of the page.20:58
RhondaLet's pick out http://bugs.debian.org/383159 as example20:58
RhondaThe version graph is pretty unreadable here, so let's click on it to get it in bigger size.20:59
RhondaIf you look closer, you'll notice something pretty interesting: unstable is listed both in a green _and_ in a red box.20:59
RhondaThat's … special indeed. What's going on here? For that we use another fine resource as help: http://packages.debian.org/unstable/mail-notification21:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html21:01
RhondaYou might know a similar page, http://packages.ubuntu.com/ offers the same service for you, it's the same codebase.21: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 ||
RhondaAt the end you'll find that the hurd-i386 package has a different version than the others.21:02
RhondaSo actually the build for that architecture is having troubles. Given that that architecture is not really an official yet, filing a bugreport against ftp.debian.org and asking for removal of the package on that architecture will fix that.21:03
Rhonda… and I guess I should conclude the session, we run out of time.21:03
RhondaThe fineprint is: Version tracking in the Debian BTS is still something rather new, not all Debian Developers have a good understanding of it and it needs a fair amount of cleanup.21:04
RhondaDon't be shy, feel free to ask, stumble by in #debian-ubuntu on irc.debian.org (different network than irc.ubuntu.com) and we'll try to help.21:04
djflorBonsoir tout le monde !21:15

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