/srv/irclogs.ubuntu.com/2008/09/04/#ubuntu-classroom.txt

CSillshmm maybe I am late for the classes?01:41
=== DiesIrae is now known as mathias
=== Rafik_ is now known as Rafik
=== dholbach_ is now known as dholbach
=== ALAY1 is now known as ALAYA
=== ALAY1 is now known as ALAYA
=== malakhi_ is now known as malakhi
=== thekorn_ is now known as thekorn
araOk, it is 4pm UTC, I think that we can start with the session17:00
araHello and welcome to the Automated Desktop Testing session, part of the Ubuntu Developer Week. Thanks for coming17:01
arawho is here for the automated test session?17:01
arammm, not many hands up...17:02
araok, anyway, we should start17:03
araMy name is Ara and I have started the Ubuntu Desktop Testing project17:04
ara(http://launchpad.net/ubuntu-desktop-testing)17:04
arathe project aims to create a nice framework to run & write desktop tests for Ubuntu17:04
araIf you have any questions during the session, please ask them in #ubuntu-classroom-chat, prefixed with "QUESTION: ..."17:05
araso I can spot them quickly17:05
araAlso, if you don't understand something or you think I am going too fast, please, stop me at anytime17:06
aralet's start with a brief introduction to desktop automated testing, just in case you don't know what this session is about17:06
araWith automated desktop testing we name all the tests that runs directly against the user interface (UI), just like a normal user would do17:07
araIn GNOME this can be done by accessing the accessibility layer (AT-SPI)17:07
arathis layer was originally written for assistive technogies, like screen readers and such17:08
arabut it works pretty well for desktop automated testing17:08
arathat is why some frameworks use the AT-SPI layer to get access to the UI objects, get some information from them, and get them to do things (push buttons, write text, etc.).17:09
araif you want to be able to run the examples during the session you would need to enable the assistive technologies17:09
araand you must use GNOME, as the layer does not work for KDE17:10
araHere they are some instructions on how to do it: https://wiki.ubuntu.com/Testing/Automation/LDTP#How%20to%20enable%20GNOME%20Assitive%20Technologies17:10
arathe bad news is that you would need to restart your gnome session if you want the changes to be applied17:11
acemoara: will this session be learnfull even while am on a mac and don't have a linux pc near me atm?17:11
araacemo: yes, you can stay anyway :)17:12
dholbachacemo: do you think you can ask your next question in #ubuntu-classroom-chat please and prefix it with QUESTION:? :)17:12
araacemo: please, post questions at -chat17:12
ara<dholbach> QUESTION: How about XFCE, which parts of GNOME are required? :)17:12
aradholbach: I think assistive technologies are present in xfce, but i haven't tested the ubuntu desktop testing with it yet17:13
dholbachOK17:14
araFor the Ubuntu Desktop Testing layer we are using LDTP (http://ldtp.freedesktop.org/), that has a python library for writing tests. This is one of those automated desktop testing frameworks that use the at-spi layer17:14
araWhen using this library you have to use some specific information from the UI in order to recognize the objects (window titles, object hierarchy, etc)17:14
araI.e. if you want to click a button in the Gedit window, first you will need to recognize the window, then obtain its children, and finally click the selected button.17:16
araIf we add all that information to the script and then the UI changes, we would need to change all the scripts to match the new UI changes.17:16
ara<pwnguin> QUESTION: so this all won't be very useful for testing mouse input tools like cellwriter17:18
arapwnguin: I haven't tried cellwriter, but it should be ok. Mouse inputs can be mimic through the at-spi layer17:19
arapwnguin: you won't be testing the mouse itself, obviously, you will be testing the tool17:19
araOne of the main objectives that we are persuading when creating a testing framework for Ubuntu desktop is to avoid scripts to know anything about the objects behind them.17:20
araDefinitively, these objects will still require to be maintained, but the logic of the scripts will remain the same.17:20
araOne example. Let’s imagine that we had a regression test suite for Gedit that will edit, modify, open and save several files.17:22
araMany17:22
araAbout a hundred17:22
araIf any of the Gedit features changes its UI, only the Gedit class will be modified. All the scripts will still be valid.17:22
araThe other good thing about it is that people willing to add new test cases to ubuntu, can do it easily17:24
arawhich version of Ubuntu are you running at the moment?17:24
araok17:25
araIf you are using Intrepid you can install the desktop-testing-library easily through PPAs: https://wiki.ubuntu.com/Testing/Automation/LDTP/HowToUseTestingLibrary#Installation17:25
araHardy PPAs are also available, but they are not well maintained, therefore some things might be broken: https://wiki.ubuntu.com/Testing/Automation/LDTP/HowToUseTestingLibrary#Notes%20on%20Hardy%20Heron%20(Ubuntu%208.04)17:26
araDon't worry, we won't perform any potentially harmful tests for this session >:-)17:27
ara<pwnguin> QUESTION: where should bugs against a PPA be reported?17:28
arapwnguin: please, don't file them in Ubuntu project :-)17:28
arapwnguin: ping me in the irc or use my email address :-)17:28
arapwnguin: but you can use the LP project17:29
arapwnguin: and file them in bugs17:29
arahttps://launchpad.net/ubuntu-desktop-testing17:29
araThe Library API is up-to-date and it is available at: http://people.ubuntu.com/~ara/ldtp/doc/testing_module_doc/17:30
araRight now we have classes for Gedit, Update Manager and GkSu. We also have a generic Application class to gather common behaviour from GNOME applications.17:31
ara<thekorn> Question: GUI testing is kind of new to me, but I have read about dogtail, how does dogtail fit into this concept, or is it totally different?17:31
arathekorn: good question17:31
aradogtail is another of those desktop testing frameworks that use at-spi layer to access the gnome objects17:32
aradogtail is completely written in python, while LDTP is C+python17:32
arapython only would be easier to maintained, but the truth is that the LDTP upstream project is much more active, that the dogtail one17:33
arathat's the main reason we decided to go for ldtp17:33
ara<tacone> what's wrong with at-spi ? why not just using that ?17:34
aratacone: simplicity. ldtp (or dogtail) makes it easier to write scripts17:35
arahidding some low level assistive techology programming stuff17:35
ara<mnemo> QUESTION: If I write tests using "ubuntu desktop testing" can I still run those tests on Fedora/Debian??17:36
aramnemo: you can, many of them will fail, though :) And you will need to install the testing library manually17:37
aramnemo: but common stuff, like applications that run in GNOME and don't have many ubuntu tweaks will work17:38
aralet's see an example on the difference on writing tests for ubuntu using the testing library and using only LDTP17:39
araThis is the link to the code using the testing library: https://wiki.ubuntu.com/Testing/Automation/LDTP/HowToUseTestingLibrary/Comparison/UsingDesktopTestingLibrary17:40
araAs you can see the code is clean and almost self-explaining17:41
araNow the code using pure LDTP code: https://wiki.ubuntu.com/Testing/Automation/LDTP/HowToUseTestingLibrary/Comparison/PureLDTPCode17:42
araNow the code becomes less clear, with LDTP specific code and application constants dependent. Also the desktop testing library include error checking code that I have removed from this example to make it clearer17:43
araQUESTION: how do you judge a test's pass or failure?17:44
arapwnguin: that is something ldtp can hide. If something breaks in the application, an ldtpexcetpio is raised, which can be used for logging failures17:45
arapwnguin: also, in the testing library, i am writing "check" class (part of the check module, see the api documentation) to check things a little bit more complicated17:46
arapwnguin: i.e. comparing a gedit saved file against one that we know it looks like it should17:46
ara<tacone> see line 141 for the save function http://paste.pocoo.org/show/84369/17:47
ara<tacone> Question: do I have to write similar code for every new application I test, right ?17:47
aratacone: yes, and no. if the application is simple, and saving only saves with the common dialogs, you can use the Application class instead, that also has a save method17:48
araYou can download this example and try it on your machine. The script is available at http://people.ubuntu.com/~ara/udw/gedit/intrepid.py17:48
araI have added also a working script for hardy, just in case you want to try that on hardy http://people.ubuntu.com/~ara/udw/gedit/hardy.py17:49
araDownload the file and run17:49
arapython intrepid.py17:49
araThat should make the magic start (if you have enabled the assistive techonogies, and have the desktop testing library installed...)17:50
arawell, we are running out of time, let's wrap up17:51
araYou can contribute easily, with very little programming knowledge, to the automated testing efforts by writing new test scripts using the testing library. A How-To guide is available at https://wiki.ubuntu.com/Testing/Automation/LDTP/HowToUseTestingLibrary17:52
araIf you have any questions you can ping me in #ubuntu-testing channel or at my email address17:52
araAlso, if you have more advanced python knowledge and would like to give a try on extending the desktop library that would also be great17:53
araplease, bear in mind that we are focusing on intrepid now, so fixing bugs for hardy is not a priority :)17:53
ara<tacone> Question2: for what applications will you develop test cases?17:54
aratacone: we would like first to add a lot of coverage to one or two main ubuntu applicaitons, like the update manager. not only the test cases, but mainly the library. so adding new test cases should be easy17:55
ara<pwnguin> QUESTION: is this project something you expect wider upstream participation in the distant future for?17:56
arapwnguin: sure! We would like to make the gnome classes as much as ubuntu independent as possible, so they can be use in other distributions and/or upstream teams. but as you said, distant future ;-)17:57
araOk, no time for anything else17:57
araThanks everybody for joining in17:57
dholbachthanks a lot for the great session, ara!17:57
aradholbach: ;-)17:58
dholbach:-)17:58
dholbachHello everybody! Welcome to another "How to fix an Ubuntu bug" session!18:00
dholbachWho's here for the session?18:00
techno_freak\o18:00
tacone\o18:00
pwnguino/18:00
ara\o18:00
pmatulis\o18:00
Kurto/18:00
fredre\o18:00
swingnjazz\o18:00
dholbachCan you quickly state which version of Ubuntu you're on and just mention if you have a slow connection?18:01
Kurthardy, fast18:01
techno_freakhardy - medium fast18:01
swingnjazzHardy, medium18:01
acemooh darn session starting already? hope i dont miss too much.. i have to go and get my linux comp here..18:01
xander21cHardy, medium18:01
fredrehardy  medium18:01
acemo8.04, fast18:01
dholbachHang on... I recognise a few names, who was NOT in the last "How do I fix an Ubuntu bug" session?18:02
dholbach(on Tuesday)18:02
huatso/18:02
acemo\o18:02
xander21co/18:02
araintrepid, fast18:02
fredreo/18:02
chombium0/ hardy, fast18:02
pwnguino/ (but i think i can keep up ;)18:02
dholbachalright... let's get the preparations out of the way, because some of the commands might take a bit to finish18:02
dholbachPlease run:18:02
dholbach  sudo apt-get install debhelper cdbs pbuilder build-essential18:02
dholbachthis should install a few packages that we need during this session18:03
dholbachwe're going to set up pbuilder, which is an awesome tool to test if a package builds in a clean, minimal environment (this will take a bit)18:03
dholbachplease create a file called  ~/.pbuilderrc18:04
dholbachand add at least this to it:18:04
dholbachCOMPONENTS="main restricted universe multiverse"18:04
dholbachthen please run18:04
dholbach  sudo pbuilder create18:04
dholbachwhich will bootstrap a minimal environment for build purposes18:04
dholbach<techno_freak> QUESTION: Can we setup pbuilder for Intrepid being in Hardy? if yes, can we do it today as many are in hardy?18:04
dholbachtechno_freak: yes, as you like it - it's explained on https://wiki.ubuntu.com/PbuilderHowto and there's a nice wrapper tool called pbuilder-dist in ubuntu-dev-tools to help with that too18:05
dholbachfor our examples here it shouldn't matter, I tested both examples to work in both hardy and intrepid18:05
techno_freakok :)18:06
dholbachNext I'd like you to add a few environment variables which will make our lives easier18:06
dholbachPlease edit  ~/.bashrc  (or similar if you use a different shell)18:06
dholbachand add something along the lines of:18:06
dholbachexport DEBFULLNAME='Daniel Holbach'18:06
dholbachexport DEBEMAIL='daniel.holbach@ubuntu.com'18:06
dholbachif you haven't set a sensible editor, you can do that by adding something like:18:07
dholbachexport EDITOR=vim18:07
dholbach(your choice... whatever... :-))18:07
dholbachafterwards, please run18:07
dholbach  source ~/.bashrc18:07
dholbachOK, pbuilder should be setting itself up and we're ready to go.18:07
dholbachSome weeks ago I started hacking on a web service called Harvest.18:08
dholbachHarvest's only use is: get low-hanging fruit from various data sources and display it in your browser per source-package18:08
dholbachthe URL is http://daniel.holba.ch/harvest18:08
dholbachthe HTML pages are very very long18:09
dholbachso let's fast-forward to http://daniel.holba.ch/harvest/handler.py?pkg=gedit-plugins18:09
dholbachthis will just show the "opportunities" for gedit-plugins18:09
dholbachtwo are called "resolved-upstream" which means as much as "bugs that have been filed for Ubuntu, were forwarded to the Upstream developers, fixed there, but not yet in Ubuntu"18:09
dholbachthe other opportunity is called "patches" which simply means: somebody attached a patch to one of the gedit-plugins' bug reports and the bug's not closed yet18:10
dholbachLet's take the 155327 opportunity18:10
dholbachhttps://bugs.launchpad.net/ubuntu/+source/gedit-plugins/+bug/15532718:10
ubot5Launchpad bug 155327 in gedit-plugins "Embedded Terminal: wrong gconf key" [Undecided,New]18:10
dholbachI hope you let me know if you run into problems or I don't make sense.... right?18:11
dholbachOk... the bug report seems to make sense and the patch is relatively small.18:11
dholbachPlease now run:18:11
dholbach  dget http://daniel.holba.ch/motu/gedit-plugins_2.22.2-1.dsc18:12
dholbachwhich will retrieve the source package18:12
dholbachYou will notice that it has downloaded a .orig.tar.gz, a .diff.gz and a .dsc file18:12
dholbachI won't go into too much detail, just let you know that .orig.tar.gz is the unmodified tarball that was released by the software authors on their homepage18:13
dholbachthe .diff.gz the compressed patch we need to apply to make gedit-plugins build our way18:13
dholbachand the .dsc file contains some meta-data18:13
dholbachplease run18:14
dholbach  dpkg-source -x gedit-plugins_2.22.2-1.dsc18:14
dholbachwhich will extract the source package18:14
dholbach(dget -x .... would have given us the short cut)18:14
dholbach<mnemo> QUESTION: is this "dget daniel.holba.ch/blah" command the same as doing apt-get source blah but getting some other version?? And also, what command should we use for real bug fixing? we should point to some intrepid .dsc file right??18:14
dholbachmnemo: yes, "dget -x URL" would be essentially the same as "apt-get source ..." - I just wanted to make sure we all work on the same source package and nobody has to set up their   deb-src line   in /etc/apt/sources.list18:15
dholbach<riot_le1> QUESTION: is the -x Flag only the Command for Extract?18:15
=== riot_le1 is now known as riot_le
fredrels18:15
dholbachriot_le1: exactly, it was my intent to talk a bit about the individual parts of the source package before dive into it :)18:15
dholbachOk, now please download the patch from the bug report and save it to some place you're going to remember18:16
dholbachthe patch author was nice enough to mention "debian/patches" in the bug report18:16
dholbachI won't go into too much detail about patch system (there was an excellent session about that last night), but it essentially means that patches are not directly applied to the source package itself, but stored in the debian/patches directory and applied during the build18:18
dholbachthis has the advantage that if you can put separate patches into separate files and just "add the debian/ directory to the source package"18:18
dholbachit has disadvantages, but this should not be part of this session :-)18:18
dholbachanyway... let's first try to see if the patch still applies - the bug was filed in 2007-10-2118:19
dholbach  cd gedit-plugins-2.22.218:19
dholbach  patch -p1 < /wherever/you/saved/the/patch/01_terminal_correct_gconf_key18:19
dholbachif that works fine, let's unapply it again18:19
dholbach  patch -p1 -R < /wherever/you/saved/the/patch/01_terminal_correct_gconf_key18:20
dholbachI just got a small warning18:20
dholbach<mnemo> QUESTION: Why is this "patch system" used? Why queue the patches un-applied instead of merging them into the code once the patch arrived to debian?18:20
metrofoxsalve18:20
dholbachmnemo: the main reason for this is separating patches into separate files, that you can easily drop if the upstream developers decide to accept one of your patches in a new upstream version, but not the others18:21
dholbachetc18:21
dholbachalright, now that we know the patch applies, let's put it into debian/patches18:21
dholbachdebian/patches does not exist yet, so let's create it18:21
dholbach  mkdir debian/pathces18:21
dholbach  cp /wherever/you/saved/the/patch/01_terminal_correct_gconf_key debian/patches18:22
metrofoxare there any italians here?18:22
dholbachmetrofox: please ask questions in #ubuntu-classroom-chat - thanks18:22
dholbachok, now that we have the patch in place, let's document what we did18:22
dholbachplease run18:22
dholbach  dch -i18:22
dholbachthis should now use your name, your email address and your favourite editor18:23
WiebrenHi18:23
dholbachthe changelog has a very strict format, but luckily  dch  did quite some work for us already18:23
dholbachwe'll just add a small note saying what we did and why18:24
dholbachI'll add something like18:24
dholbach  * debian/patches/01_terminal_correct_gconf_key: add patch by Sevenissimo <email address here> to let the terminal plugin use the right gconf key. (LP: #155327)18:25
dholbachIt's very important you document each and every change you make in a source package properly18:25
dholbachWe maintain all packages as one big team and you wouldn't want to have to guess why a certain change was made either :)18:26
dholbachI specifically pointed out the following:18:26
dholbach - files I changed18:26
dholbach - credited the patch author (as good as I could)18:26
dholbach - explained the use of the patch18:26
dholbach - mentioned the bug report with the full discussion for reference18:26
dholbachThe great thing about (LP: #155327) is, that it will close the bug automatically on upload. :-)18:27
dholbachOK18:27
dholbachnow please save the file, then run:18:27
dholbach  debuild -S -uc -uc18:27
dholbach(-S will generate a new source package, -us -uc will avoid having to sign it)18:28
dholbachNow run:18:28
dholbach  cd ..; ls18:28
dholbachand you will notice that you now have two .diff.gz files and two .dsc files18:29
dholbachwhich means that we updated the .diff.gz for the new revision we just created18:29
dholbach<techno_freak> QUESTION: Error= make: *** No rule to make target `/usr/share/gnome-pkg-tools/1/rules/uploaders.mk'.  Stop. dpkg-buildpackage: failure: fakeroot debian/rules clean gave error exit status 218:29
dholbachtechno_freak: ooops... please install gnome-pkg-tools too18:30
dholbachthis specific package requires it - sorry18:30
techno_freakok18:30
dholbachOnce that's done, please run:18:30
dholbach  debdiff gedit-plugins_2.22.2-{1,2}.dsc  > gedit-plugins.debdiff18:31
dholbachNow if you could paste the contents of your gedit-plugins.debdiff file into http://paste.ubuntu.com and paste the link here, I'll review it :-)18:31
dholbachin the meantime, I'll answer this question:18:32
dholbach<mnemo> QUESTION: there is so many strange commands and scripts needed for packaging/development... have you considered making a usability analysis of this dev process and then trying to simple it??18:32
takdirhttp://paste.ubuntu.com/43416/18:33
dholbachmnemo: there are several thousands packages with different maintainers who choose different toolsets for different reasons. What you need to bear in mind: the Debian/Ubuntu build process is already a huge simplification of the build scenarios: we apply ONE build process to all kinds of software (being it PHP, Perl, Python, C++, etc.)18:34
dholbachtakdir: it seems you didn't unapply the patch afterwards18:35
dholbach  patch -p1 -R < /wherever/you/saved/the/patch/01_terminal_correct_gconf_key18:36
techno_freakhttp://paste.ubuntu.com/43417/18:36
Kurthttp://paste.ubuntu.com/43418/18:37
dholbachsorry, I made a mistake before, it's:18:37
dholbach  debdiff gedit-plugins_2.22.2-1{,ubuntu1}.dsc  > gedit-plugins.debdiff18:38
dholbachsorry for that18:38
taconehttp://paste.pocoo.org/show/84373/18:38
riot_lehttp://paste.ubuntu.com/43419/18:38
dholbachthey all look quite good, I just wonder why I too get the plugins/terminal/terminal.py change inline18:39
riot_lei take this one: debdiff gedit-plugins_2.22.2-{1,1ubuntu1}.dsc > gedit-plugins.debdiff18:39
dholbachand where the debian/control changes come from18:39
takdirhttp://paste.ubuntu.com/43420/18:39
dholbachah ok... I found out about debian/control change - the description gets automatically created from the .desktop files in the package18:40
dholbachtakdir, riot_le, Kurt, tacone, techno_freak: all looking good, thanks :-)18:40
dholbachnow let's try to build it18:40
dholbachPlease run18:41
dholbach  sudo pbuilder build gedit-plugins_2.22.2-1ubuntu1.dsc18:41
dholbachThis will also take a while, so what would happen next?18:41
dholbach - we'd thoroughly test the resulting packages that pop up in /var/cache/pbuilder/result18:41
geserdholbach: is there a reason why you didn't update the Maintainer field?18:42
dholbachgeser: forgot about it18:42
dholbachgeser is raising a very good point18:42
dholbachif you all install ubuntu-dev-tools you will get a nice script called update-maintainer (among other useful tools)18:42
dholbachthis script will change the Maintainer field in debian/control from the Debian maintainer to an Ubuntu team (still preserving the Original maintainer)18:43
dholbachthis was decided by our Friends at Debian to avoid confusion for our users18:43
dholbachyou just need to run it, it will do all the work for you18:43
dholbachthanks geser18:43
dholbachstill... what happens after the successful build and successful testing?18:44
dholbachIf you're confident in the changes, you will attach the bug to the bug report18:44
dholbachand get the patch through the Sponsorship Process18:44
riot_leit takes a long time to build?18:44
dholbachhttps://wiki.ubuntu.com/SponsorshipProcess18:44
dholbachriot_le: it might take a bit to get all the build-dependencies of the package and install them in the chroot18:45
dholbachsponsoring means: somebody who has upload privileges already will sign the source package with their GPG key and upload it to the build machines for you18:45
dholbachof course it will be properly reviewed before the upload :-)18:45
dholbachAny other questions up until now?18:45
dholbachAlright... shall we try to do a quick other one?18:46
dholbach:-)18:46
takdirmy connection is too slow. Need to get 56.9MB of archives :(18:46
dholbachLet's head to: http://daniel.holba.ch/harvest/handler.py?pkg=grandr18:46
dholbachtakdir: no worries, let it finish the build in the background18:46
dholbachgrandr has just one opportunity open, a small patch18:46
dholbachhttps://bugs.launchpad.net/ubuntu/+source/grandr/+bug/20302618:46
ubot5Launchpad bug 203026 in grandr "grandr does not exit, if "x" is clicked" [Undecided,New]18:46
dholbach  dget -x http://daniel.holba.ch/motu/grandr_0.1+git20080326-1.dsc18:47
dholbachand download the patch to a place you'll remember18:47
dholbachthe patch is relatively small and should be pretty easy to test18:47
dholbach  cd grandr-0.1+git2008032618:48
dholbacha quick examination of the package will tell us that it does not use any patch system18:48
dholbacha quick18:48
dholbach  grep ^Build-Depends debian/control18:49
dholbachshould give us that information usually18:49
dholbach(no dpatch, no cdbs, no quilt, etc)18:49
dholbachso let's try to apply the patch directly to the source18:49
dholbach  patch -p1 < /some/place/you/saved/the/patch/to/grandr_exit_on_close.patch18:50
dholbachin my case it applied successfully18:50
dholbachnow we'll run18:50
dholbach  update-maintainer18:50
dholbachagain18:50
dholbachsorry18:50
dholbachedit the changelog entry first18:50
dholbachso18:50
dholbach dch -i18:50
dholbachany suggestions for the changelog entry? just the line we're about to add?18:51
dholbachok... if not, that's fine, I used something like this:18:52
dholbach  * src/interface.c: applied patch by Stefan Ott to make the program exit after clicking on the "close" button (LP: #203026)18:53
dholbach<Kurt> QUESTION: Should we also put in the changelog that we are updating the maintainer?18:53
dholbachKurt: good you're asking - a lot of people did until recently where we decided "hang on, we have to do this EVERY TIME we change a package from Debian, let's stop doing that...."18:54
dholbachwe felt it's obvious18:54
dholbachso just add that comment to the changelog, save it and run18:54
dholbach  update-maintainer18:54
dholbachthen run18:54
dholbach  debuild -S -uc -uc18:54
dholbach  debdiff grandr_0.1+git20080326-1{,ubuntu1} > grandr.debdiff18:55
dholbachif you want me to review it, give me the link to your pastebin entry :)18:55
dholbach  sudo pbuilder build grandr_0.1+git20080326-1ubuntu1.dsc18:55
dholbachwill test-build the resulting package for you18:56
dholbachany questions?18:56
dholbachone thing the reviewers might ask you to do is: forward the fix upstream18:56
dholbachthis means either Debian or the software authors, so we can drop the diff eventually again18:56
riot_leyes, whats with more complex bugs? this seems so easy18:57
dholbachriot_le: you live you learn :-)18:57
dholbach#ubuntu-motu is a place where friendly people will always try to help you18:57
dholbachalso there's https://wiki.ubuntu.com/PackagingGuide18:57
dholbachand https://wiki.ubuntu.com/MOTU/GettingStarted18:58
dholbachthat references a lot of other helpful documents18:58
dholbachyou don't need to be a hardcore assembler hacker to start helping out with Ubuntu18:58
dholbachmaking Ubuntu better is easy and you can slowly improve your skills and learn something new every day :)18:58
dholbach<jrib> QUESTION: "debuild -S -uc -uc"       that's not really supposed to be "-uc" twice correct?18:58
dholbachjrib: yes, once should be good enough :)18:59
dholbachthanks a lot everybody, you've been fantastic18:59
dholbachI'd love to see all your names connected to Ubuntu Development soon and hear from you again19:00
dholbachhope you enjoy the ride!19:00
dholbachThanks19:00
chombiumthanks dholbach19:00
jribthanks!19:00
swingnjazz Thanks, dholbach19:00
techno_freakthanks a lot dholbach :)19:00
takdirthanks dholbach19:00
dholbachI'll say it again: Make me proud! :-)19:00
chombiumi bet we will :)19:01
dholbachNext up is the unstoppable Jonathan Riddell, who will teach you the pleasures of PyKDE and WebKit!19:01
dholbachEverybody give him a cheer! :-)19:01
JontheEchidnayay Riddell!19:01
Riddellgood evening friends19:01
Riddellanyone want to learn a bit of pykde?19:01
chombiumo/19:02
techno_freak\o19:02
Riddellthis tutorial is to make a very simple web browser program19:02
Riddellusing Qt's WebKit widget19:02
Riddellthis comes with Qt 4.419:02
Riddellby default though hardy only comes with Qt 4.319:03
Riddellso if you're using hardy you need to add some archives19:03
Riddellhardy-updates19:03
Riddelland kubuntu-members-kde419:03
Riddelloh and hardy-backports19:03
Riddellhardy-updates19:04
JontheEchidnahttps://launchpad.net/~kubuntu-members-kde4/+archive <kubuntu-members-kde419:04
Riddellhttp://paste.ubuntu.com/43430/19:04
Riddelladd those to /etc/apt/sources.list19:04
Riddellapt-get update19:04
Riddellapt-get install python-qt4 python-kde4 libqt4-webkit19:04
Riddellif you're in intrepid, you just need python-kde419:04
Riddellwhich Kubuntu users will have by default19:05
Riddellso, our first application19:06
Riddellwe're going to dive right in and have it show us kubuntu.org19:06
Riddellyou need a text editor19:06
RiddellI use kate but any will do19:06
Riddellstarts off with saying that it's a python app19:07
Riddell#!/usr/bin/env python19:07
Riddellthen we need to import some libraries19:07
Riddellimport sys19:07
Riddellfrom PyQt4.QtCore import *19:07
Riddellfrom PyQt4.QtGui import *19:07
Riddellfrom PyQt4.QtWebKit import *19:07
Riddellsys is a standard python library, we'll use it to find the command line arguments (we don't have any but it's required for all apps)19:08
Riddellthen we load the relevant parts of Qt19:08
Riddellnext we create a QApplication object19:08
Riddellapp = QApplication(sys.argv)19:08
Riddellsys.argv is the command line arguments19:08
Riddellnow the useful bit, make the webkit widget, which is called a QWebView19:09
Riddellweb = QWebView()19:09
Riddellweb.load(QUrl("http://kubuntu.org"))19:09
Riddellweb.show()19:09
Riddellthat makes the widget, tells it to load a web page and finally shows the widget19:09
Riddellpretty self explanatory19:09
Riddellfinally we run the application19:09
Riddellsys.exit(app.exec_())19:10
Riddellapp.exec_() is Qt's main loop, all graphical applications need a main loop to show the widgets and wait for users to do stuff19:10
Riddelland that's it19:10
Riddellyou can get the full thing from  http://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit1.py19:10
Riddellalthough I find it's more helpful for understanding to copy these things out for tutorials19:11
Riddellsave it to a file called webkit1.py19:11
Riddelland run it from the comment line with:   python webkit1.py19:11
Riddellanyone got it working?19:12
* JontheEchidna does19:12
Riddellthat's a few got it working19:14
Riddellso lets move on.  this is a Qt application19:14
chombiumQUESTION: should we run chmod a+x webkit.py to run it?19:14
Riddellchombium: yes you can, that'll let you run it with   ./webkit1.py  rather than through python19:14
Riddellin KDE land we prefer KDE applications over pure Qt applications19:15
Riddellthis sets some KDE defaults like the widget style19:15
Riddellit also lets you use KDE classes, of which there are many useful ones19:15
Riddellthe main difference here is we need to set some meta data about the application19:16
Riddellstart by adding some import lines for pyKDE19:16
Riddellfrom PyKDE4.kdecore import ki18n, KAboutData, KCmdLineArgs19:16
Riddellfrom PyKDE4.kdeui import KApplication, KMainWindow19:16
Riddellthen below the import lines set the necessary meta data19:16
RiddellappName = "webkit-tutorial"19:16
Riddellcatalog = ""19:16
RiddellprogramName = ki18n("WebKit Tutorial")19:16
Riddellversion = "1.0"19:16
Riddelldescription = ki18n ("A Small Qt WebKit Example")19:16
Riddelllicense = KAboutData.License_GPL19:16
Riddellcopyright = ki18n ("(c) 2008 Jonathan Riddell")19:16
Riddelltext = ki18n ("none")19:16
RiddellhomePage = "www.kubuntu.org"19:16
RiddellbugEmail = ""19:16
Riddellwhich tells the app what its called, the licence, copyright, where to find translations19:17
Riddellall useful stuff19:17
Riddellwe then make the application which needs a KAboutData to inclue the above data and a KCmdLineArgs to process any command line arguments19:18
RiddellaboutData = KAboutData (appName, catalog, programName, version, description,19:18
Riddelllicense, copyright, text, homePage, bugEmail)19:18
RiddellKCmdLineArgs.init(sys.argv, aboutData)19:18
Riddellapp = KApplication()19:18
Riddellthe rest is the same19:18
Riddellsave that as webkit2.py19:18
Riddellor grab the full things from http://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit2.py19:18
Riddellthis is mostly very standard for pyKDE apps and you usually start with a template that inclues most of it already19:20
Riddell19:19 < sebner> QUESTION: Am I missing some kde libs since it looks like webkit1?19:20
Riddellsebner: it should run and look the same19:20
Riddellthe different will be it uses the oxygen style, but you may well have Qt set to use that anyway, in which case there won't be a visible difference19:21
Riddellso, I've been talking in the wrong room19:27
Riddellin http://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit3.py we add a layout19:28
Riddellwidget = QWidget()19:28
Riddelllayout = QVBoxLayout(widget)19:28
Riddellweb = QWebView(widget)19:28
Riddell19:26 < Salze_> QUESTION: sys.exit(app.exec_()) <- why exactly is app.exec_ (with underscore) called?19:28
RiddellSalze_: that runs the mainloop, if you don't run that, nothing will happen19:28
Riddellthe main loop shows any widgets19:28
Riddellthen sits around waiting for mouse clicks and keyboard types19:29
Riddellwhich get passed to the widgets which may do something with them19:29
Riddell< acemoo> what is different between app.exec_() and app.exec()?19:29
Riddellexec is a reserved word in Python19:29
Riddellin c++ it is exec()  but in Python it's renamed to exec_() because exec is used for other things in python19:30
Riddellin the next version we add a KMainWidget19:30
Riddellthis is embarassingly mostly to work around a bug in pyKDE where it crashes if we don't add it19:31
Riddellbut it's also a useful widget to have for most applications, it makes it very easy to add menus, toolbars and statusbars19:31
Riddellso change the QWidget cration to ..19:31
Riddellwindow = KMainWindow()19:31
Riddellwidget = QWidget()19:31
Riddellwindow.setCentralWidget(widget)19:31
Riddelland instead of showing the widget, show the window19:32
Riddellwindow.show()19:32
Riddellhttp://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit4.py19:32
Riddellit won't look any different yet19:32
Riddell< acemoo> from the first couple lines in the source i see no ;, are they forgotten or python doesnt uses them?19:32
Riddellacemoo: python doesn't use semi colons19:33
Riddellthere's no reason it should, they just get in the way whenever I go back to C++ programming19:33
Riddellpython just uses the end of the line for an end of line marker19:33
Riddell< Salze_> But why the underscore? I thought that was for functions that are not to be called from public/outside?19:33
RiddellSalze_: it's python convention to start private methods with an underscore19:34
Riddellbut here's it's just used because it can't use exec so exec_ is the closest thing that reads similarly19:34
Riddellok, let's add an address bar19:34
Riddellbelow the line which makes the layout19:35
RiddelladdressBar = QLineEdit(widget)19:35
Riddelllayout.addWidget(addressBar)19:35
Riddella  QLineEdit is a common widget for entering a line of text, it'll be used by your GUI IRC applications to type into19:35
Riddellhere's a screenshot http://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit5.png19:36
Riddellsource is http://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit5.py19:37
Riddellis that working for everyone?19:37
=== mcas_away is now known as mcas
sebnerRiddell: yep19:38
Riddellso let's make that address bar do something19:38
Riddellwe need to define a method called loadUrl() which takes the text from the addressBar widget and tells the WebView widget to load it19:39
Riddelldef loadUrl(): print "Loading " + addressBar.text() web.load( QUrl(addressBar.text()) )19:39
Riddellhmm, that didn't paste right19:39
Riddelldef loadUrl():19:39
Riddell  print "Loading " + addressBar.text()19:39
Riddell  web.load( QUrl(addressBar.text()) )19:39
Riddellin python we use spaces to indicate that several lines belong to the code block, so make sure those two lines are indented by your preferred indentation19:40
RiddellI use four spaces19:40
Riddellthat goes below the import lines19:41
Riddellnext we need to connect the return signal from the line edit to that method19:41
RiddellQt has a nifty signal/slot mechanism where named signals get emitted from widgets when interesting things happen19:42
Riddelland we connect those into methods (a connected method is called a slot)19:42
Riddellso just before the exec_() line ..19:42
RiddellQObject.connect(addressBar, SIGNAL("returnPressed()"), loadUrl)19:42
Riddellfull thing at  http://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit6.py19:43
Riddellso I can now load another web page http://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit6.png19:44
Riddell< sebner> Riddell: I have problems loading google.de19:44
Riddellsebner: try adding http://  at the start19:45
sebnerRiddell: working :)19:45
sebnerRiddell: rendering is pretty bad though ^^19:45
Riddellsebner: it should be pretty simple to fix our loadUrl() method to detect if it needs the http:// added at the start19:46
Riddellso, voila, our web browser works19:46
sebnerRiddell: what about being not so strict?19:46
Riddellsebner: in what way?19:47
sebnerRiddell: http://. browser shouldn't care if it's here or not19:47
Riddellright, it just takes some programming in the loadUrl() method to work around that19:47
=== ebel_ is now known as ebel
Riddellthis was done without using any objects, a more complex app would typically define a class which inherits from the main widget and adds functionality to that19:48
Riddellhttp://www.kubuntu.org/~jriddell/ubuntu-developer-week/webkit7.py  does that19:49
Riddellthere we create a class which inherits a simple QWidget and adds the child widgets to itself19:49
Riddella class is a template for an object if you don't know object oriented programming19:50
Riddellso, that's a very simple application using a powerful widget19:51
Riddellwe use pyKDE a lot in Kubuntu, and Ubuntu generally uses a lot of Python19:51
Riddellit makes programming much faster and easier than C++ (and obviously more so than C)19:51
Riddellif this has interested you, it would be great if someone would write up this tutorial onto techbase.kde.org19:52
Riddellwhich is currently lacking in pyKDE starting info19:53
Riddell< jrib> QUESTION: is there a python gtk webkit so I can use webkit without qt?19:53
=== x_dimitr1 is now known as x_dimitri
Riddellyes, I noticed python-gtkwebkit going into the archive in intrepid recently, if you apt-get source it there's an example application which is a lot more full featured than the one we just made here19:53
Riddellbut well, Qt is so much nicer than Gtk, in the humble opinion of people who have compared the two19:54
Riddell< sebner> QUESTION: Aren't you afraid that now >100 new pyKDE webkit browsers appear and disapper?19:54
Riddellthere's no need for yet another browser, but as a widget webkit and khtml is used quite a lot, in plasma and kopete and khelpcentre and more19:55
sebnerasac: \o/19:56
Riddell< tr_tr_> QUESTION: Riddell Are there any apps in intrepid, that are easy to understand, to learn more?19:56
sebnerRiddell: there is no need but it's apparently very easy19:56
Riddellthere are more tutorial apps in the pykde sources  (apt-get source kde4bindings)19:56
Riddellin kubuntu our apps include ubiquity, update-notifier-kde, language-selector and various others19:57
JontheEchidnajockey-kde, gdebi-kde19:57
Riddellprinter-applet and system-config-printer-kde too which are now in KDE itself19:57
Riddellthere's often tasks that need doing on those, so if you'd like to help out join us in #kubuntu-devel and say hi19:57
Riddellbefore I go, I should say there's lots of other useful ways to contribute to Kubuntu19:58
Riddelland again, #kubuntu-devel is generally the way to get into it19:58
Riddellwriting this up as a techbase tutorial would be great as I say19:59
Riddellok, thanks all, hope you found it interesting19:59
jribthanks Riddell19:59
asacthanks Riddell19:59
sebnerRiddell: great session! though gtk ftw! /me hdies19:59
JontheEchidna:P19:59
Salze_Yes, thank you! Good talk, Riddell.19:59
tr_tr_thanks :)19:59
JontheEchidnaThanks19:59
Riddellnext I believe we have AlexanderSack20:00
Riddellmy very favourite Mozilla packager20:00
asacright ....20:00
asacso welcome everyone20:00
asaci think this session is called "Having fun with the MozillaTeam"20:00
chombiumthank you Riddell20:00
asacsorry for this generic name, but i wasnt really sure what topic to use20:00
asaci am also in -chat so if you have questions just use my nick to summon me there20:01
asacso ... agenda20:01
asacfirst i want to give a quick overview of the MOzillateam, what we do and how we do it20:02
asacthen i want to present you what is new in intrepid and ubufox. we have some nice features there ... which leads to a practical excersize20:02
asacbaking a new release from the latest "ubufox" upstream sources20:03
asacthird - depending on how much there will be left I we will try to write a tiny browser writting in xul20:03
asacusing xulrunner20:03
asacso first topic: mozillateam overview20:04
asacthe mozillateam feels responsible for all things that are related to mozilla applications in ubuntu20:04
asacfirst that is obviously all mozilla standalone applications we have in the archive20:05
asacmost prominently firefox20:05
asachowever, mozilla applications alone are just a small part of the ecosystem that comes with firefox and friends20:06
asacanother big chunk is obviously extensions ... of which we have an ever growing number in the archive20:06
asacthose are quite easy to maintain and are ideal for anyone who wants to do initial packaging contributions20:07
asacthe other chunk are "plugins" ... e.g. handlers for webcontent that isnt natively supported by mozilla apps20:07
asaclike flash, video and others20:07
asacanother category of applications  we feel responsible for are applications that use the gecko engine to render HTML20:09
asacbefore we had webkit, the gecko engine was practically the only HTML engines applications could embed and thus20:10
asacmost applications that need to render HTML are still using it20:10
asacprominent gecko embedders are: epiphany, yelp, devhelp, miro and others20:10
asacmost issues in those application that turn out to be gecko related usually end up on the plate of the mozilalteam20:11
asacthe good about webkit is that mozilla has now started a new effort to write a new, easier to use and better to maintain embedding API20:12
asacso there will certainly be interesting happen in the future here20:12
asacthe other "new" category of applications that fall into the yard of the mozillateam are obviously xulrunner applications20:12
asacthose - as I hopefully can show later - are quite easy to develop and especially those familiar with modern website development techniques should find it easy to get started20:13
asacas its basically just XML with javascript20:13
asacQUESTION: is Chromium expected to be part of the browser team efforts shortly?20:13
asacthis is still open. personally i have a high interest in getting this into the archive and thus are monitoring the progress here20:14
asachowever, realistically it will take a few month until there will be something really good to distribute in ubuntu20:14
asacmaybe now that its out they get more contributions than expected or readjust their priorities in favour of linux20:15
asacso lets keep our eyes open20:15
asacQUESTION: that new api is for gecko?20:15
asacyes, the API i referred to is ment to sit on top of gecko and provide a stable and easy to use contract20:15
asacok back to xulrunner applications:20:16
asacfirefox itself is a xulrunner application and if you are look at the code you will probably be impressed that its mostly javascript and XML20:16
asacthough firefox is probably a bit tricky to start with as they use all kind of corner-cases20:17
asacanyway, i expect that new xulrunner applications pop up in the future20:17
asacone xulrunner app that is in the archive is prism20:17
asacwhich basically allows you to make standalone applications out of websites like gmail20:17
asace.g. with a menu entry and in a window that has no navigation bar20:17
asac(just what the chrome folks just presented)20:18
asacif you want to try you can install prism-google-mail20:18
asac;)20:18
asaca package20:18
asacok ... so how does the mozillateam work.20:18
asacespecially when it comes to code and package maintenance.20:19
asacfor all the core things we do, we use bzr20:19
asacour bzr branches can be found here:20:19
asachttp://code.launchpad.net/~mozillateam20:19
asacusually whenever you wonder if there is a snapshot or trunk build available, its already done in bzr20:20
asacfor instance we have branches that track firefox 3.1 and xulrunner 1.9.1 there20:20
asacand even though they are not yet in the archive, using those branches to build your own packages is usually just a matter of CPU power20:20
asacfor our standalong applications - which have a huge source code base - we historically package the debian/ directory only20:21
asacso building is at best done using the bzr builddeb command20:21
asacif someone is instersted in building such branches you can just ask in #ubuntu-mozillateam.20:22
asacmaybe a few words to branch naming. the branches that have a .head suffix usually track the development trunk20:22
asacwe regularly bump the upstream date in changelog after we verified that the build still works20:22
asacwhen it comes to a new upstream release from that branch, we just merge that branch to the .dev branch20:23
asacwhich basically is our release branch20:23
asace.g. everything that gets committed there has been somewhat QAed and will be uploaded20:23
asacfor stable maintenance we suffix our branches with .<release> ... e.g. .hardy20:24
asacso what does that mean. when you want to get a feature into intrepid or want to add a new patch, just do it on top of the .head branch20:24
asacand propose your work for merging20:24
asaclaunchpad has quite a nice feature for "propose a merge". and those requests will get much faster attention and feedback then the "old" way of submitting debdiffs20:25
asacbut maybe we can try the "propose a merge" in the next agenda point20:25
asacok before we start, a few suggestions how developers can get started on mozilla in ubuntu20:27
asac1. if you are not familiar with packaging or want to get more hands-on experience on bzr you can start helping on packaging extensions20:27
asacthe main contact for extensions and plugins is Jazzva ... but you can also ask me obviously ;)20:28
asac2. helping on universe mozilla packages:20:29
asacwe get more and more universe mozilla packages and because of a lack of time it becomes harder to add more to the ubuntu repository20:29
asacmain contact on this topic is fta or me20:30
asac3. helping on security updates for universe:20:30
asacthis is a regular task which requires rebuilding packages with new upstream tarball, QAing them and working with the ubuntu security team and me to get them it20:30
asac4. bug forwarding ...20:31
asacif you wnat to know more about mozillas inner guts its usually a good thing to start seriously forwarding bugs20:31
asacbecause you need to understand in which component a bug is it will help you to get used to the structure of firefox applications20:31
asacwhich in the end helps you to get started on the real code20:32
asacok thats it for the intro :)20:32
asacare there any questions?20:32
asacQUESTION: How do you build the branches?20:33
asacbasically its just: bzr builddeb --merge20:33
asacbut for that you need the orig.tar.gz20:33
asacso if you try to build a snapshot that isnt in any archive that you have in your sources.list20:33
asac(in which case bzr builddeb would automatically download it)20:33
asacyou have to produce the tarball20:33
asacwe have unified way to do that20:34
asacits ./debian/rules get-orig-source DEBIAN_DATE=20080818t150020:34
asacthis will get you a snapshot from 1808 at 1500 UTC20:34
asacthe magic that does all this is shippd i mozilla-devscripts20:35
asacremember that for firefox-3.1 you also need xulrunner-1.9.120:35
asac:)20:35
asacanyway. we also have regularly binaries built. in a semi-official archive20:36
asacbut building from the branches is much more flexible and helps you to directly contribute ;)20:36
asacif you need the archive ask in the mozillateam channel ;)20:36
asacok more questions or can we move on?20:37
asac2. Ubufox 0.6 Beta20:37
asaci am proud to announce that ubufox 0.6 has finally reached beta state and that now the only thing left is to plumber a package from it20:38
asacone of the amazing features we have in their is the ability to switch plugins ;)20:38
asace.g. adobe flash is crashy and you like to use gnash ...20:38
asacin the past you couldnt do that because there was some content that you couldnt use gnash for20:39
asacso now to get some hands on experience, lets get the latest ubufox upstream code from my development branch20:40
asacto do that you run:20:40
asac bzr branch lp:ubufox20:40
asacand when you got that you can run20:40
asac  sh build.sh20:40
asacinside the ubufox directory to produce a .xpi20:41
asaclet me know when you got that far ;)=20:41
asacwhen you did that you can just install the .xpi like you would install any .xpi20:41
asaclike: firefox /path/to/ubufox.xpi20:42
asac(which should be in the directory after running build.sh)20:42
asacso if you are in the ubufox directory you can just run20:42
asac firefox ubufox.xpi20:42
asacwhen you have it installed, please visit youtube (as an example)20:43
asacwhenever you visit a site with flash on it, you should now see a plugin icon (currently blue) in the right bottom status bar20:43
asacanyone not seeing that icon? when you click on it you theoretically can change amount plugins ;)20:44
asacrequirements: a) you have the latest xulrunner from intrepid20:45
asacb) you have more than one plugin visible in about:plugins20:45
asacthe other feature we have in the new ubufox are the safe upgrade feature (e.g. when you upgrade firefox you will get a restart notification in firefox)20:45
asacyou should be able to test that by runnign:20:46
asac/var/lib/update-notifier/user.d/firefox-3.0-restart-required20:46
asacerr20:46
asacsudo touch /var/lib/update-notifier/user.d/firefox-3.0-restart-required20:46
asacanyway. since time is running low, lets do the packging ;)20:46
asacfor that you also need the packagin branch (next to the ubufox branch you just downloaded)20:47
asac bzr branch lp:~ubuntu-core-dev/ubufox/ubuntu20:47
asacthen cd into the ubuntu/ directory20:47
asacand create a new changelog entry to prepare the new upstream merge20:47
asacthe mozillateam always keeps the changelog targetted for UNRELEASED ... so basically to add a new entry you do:20:48
asacdch -v0.6~b1-0ubuntu1 -DUNRELEASED20:48
asacand then safe that changelog without adding any entry20:48
asacthen commit this:20:48
asacbzr commit -m "* open packaging tree for 0.6 beta 1 merge"20:49
asaceveryone got that far?20:49
asacok. lets do the merge ;)20:50
asacwhen you are in ubuntu you now just use bzr to merge ;)20:51
asacwhen you are in the ubuntu/ branch20:52
asacyou just run:20:52
asacbzr merge lp:ubufox20:52
asacwhich will do some rumbling and the merge the latest upstream development20:52
asaci think there shouldnt be any conflict so you are basically done20:52
asacjust document the merge in the changelog:20:53
asacadd an entry like:20:53
asac* MERGE 0.6~b1 release from lp:ubufox20:53
asac  - adds feature 120:53
asac  - adds feature 220:53
asac... (you dont need to add that feature list here now)20:53
asacwhen you added that to the debian/changelog yuo can just20:53
asacrun:20:53
asacdebcommit20:53
asacand that should commit the merge with a proper changelog entry (equal to what you added to debian/changelog)20:54
asacto test the branch you can now just build it with:20:54
asacbzr bd --native20:54
asac(note --native is wrong ... just easy to not neeed to produce a orig.tar.gz)20:54
asacand installing the .deb20:54
asacsince time is running low: lets assume that you tested all this.20:55
asacso how to get that released?20:55
asacsimple: you just push your branch to launchpad. lets assume your launchpad nick is "mynick" ... then you just do a:20:55
asacbzr push lp:~mynick/ubufox/ubuntu20:56
asacand when you have that up, you navigate to your branch and "propose it for merge" ;)20:56
asacthe branch you should propose the merge into is: https://code.edge.launchpad.net/~ubuntu-core-dev/ubufox/ubuntu20:56
asacok :) ... i hope you enjoyed this. and actually i hope i get a propose for merge on this ubufox release ;)20:57
asacunfortunately i cannot show you how easy its to write a webbrowser in xulrunner ;) ... but well. thats bad luck20:57
sebnerasac: \o/20:57
asacif you have questions go ahead now20:57
asacor after this session: #ubuntu-mozillateam or ubuntu-mozillateam@lists.ubuntu.com (subscriptiuon required)20:58
asacok no questions. hope my speed didnt take all energy from you20:59
asacthanks alot20:59
asaccu in #ubuntu-mozillatem20:59
* asac hands over to slangasek 20:59
* Tm_T huggles asac 21:00
* slangasek looks around wide-eyed21:00
lagawhat session is this? "how to avoid making archive admins unhappy"?21:00
asaci think so21:00
slangasekyes21:00
slangasekso, hi, who's here for the session?21:01
tacone\o/21:01
charliecbme!21:01
mok0\O/21:01
asaci am still lurking ;)21:01
gesero/21:01
charliecbif my inet-connection will not break.21:01
slangasekyay :)21:01
lagaslangasek: me21:01
stefanlsd_here21:02
slangasekright, so for those who don't know me, my name is Steve Langasek, and I'm one of the archive admins for Ubuntu21:03
slangasekand dholbach asked me if I would give a talk today about not making archive admins unhappy21:03
asacslangasek: maybe state if you want questions to be asked here ... otherwise consider to join #ubuntu-classroom-chat ... where questions are usually asked21:04
slangasekactually, he asked me if I would give a talk about making archive admins /happy/, but it seems a bit excessive to ask uploaders to send chocolates with their new packages, so we compromised on this title instead ;)21:04
slangasekI'd prefer to have questions asked in here, thanks21:04
lagai was going to ask about that. the chocolate thing, i mean ;)21:05
slangasekso unfortunately this happens to be scheduled the same day as one of our Intrepid alpha milestones, which means I haven't done a whole lot of advanced prep work for this session, and I apologize to you all for that21:06
slangasekit does mean that after covering what little material I have to hand, the floor will be open for questions :-)21:06
slangasekso the archive admins are tasked with getting packages into the right place in the archive: verifying that new packages are legal to distribute, getting them into the right sections in the archive, processing package sync requests and backports, enacting main inclusion requests (MIRs) and freeze exceptions21:08
slangasekthat covers quite a lot of ground :)21:08
lagawhat kind of interface do you use?21:09
lagais there a bunch of scripts? a special NASA-like control panel?21:09
slangasekand somewhat as a result of that, many of us wear other hats besides being archive admins; several of us are on the Ubuntu release team too, some are buildd admins, etc21:09
slangaseklaga: there are two interfaces available for queue management; one is a set of commandline tools only available on the master internal ftp server in the Data Center, the other is a web interface in launchpad21:10
slangasekat this point, I only use the commandline interfaces except for testing, because the web interface doesn't yet scale for bulk processing, among other thnigs21:11
slangasekthings21:11
lagaah, that preempted my next question :)21:11
lagawhen you check NEW packages, do you only check legality or also functionality, eg if the postinst looks sane?21:11
slangasekwho here has ever uploaded a new package to REVU?21:12
lagai did, twice.21:12
slangaseklaga: I'm going to hold that question until a little later, if you don't mind :)21:12
taconeI never did21:12
lagathe second package still needs one ACK, though. ;)21:12
lagasure.21:12
mok0I have, several times21:12
hggdhso... what would make you, as a archive admin, unhappy?21:12
sebnerslangasek: sync requests will also be processed by MOTUs, true?21:12
slangasekand after going through REVU, have you also had your packages uploaded to the NEW queue in Ubuntu?21:13
mok0yes21:13
lagayes21:13
slangaseksebner: MOTU are empowered to approve sync requests; the button-pushing is done by the archive admins, and this is considered a limitation in Launchpad21:13
slangasekmok0, laga: and did your packages make it through the NEW queue on the first try?21:14
sebnerslangasek: yes for my ones21:14
laganot sure. i once had a package rejected, but that was an FFe.21:14
mok0I've had 1 that didn't21:14
lagain fact, one of my packages didn't contain anything useful. i forgot to bzr add things.21:14
lagait still went through. ;)21:15
slangasekgreat, then it sounds like for the most part REVU is doing its job; and for those whose packages didn't make it through on the first try, you can pester the reviewers about not making archive admins unhappy. >:)21:15
lagaheh21:15
mok0heh21:15
lagaok, assume someone is a reviewer. how would he make the archive admins happy? ;)21:16
slangaseknothing makes me unhappier as an archive admin than to have to reject a package that someone's done the work to upload, but it isn't in a distributable state!21:16
lagaand.. what determines that state?21:17
slangasekthe biggest problem that will stop a package from reaching the archive is if debian/copyright doesn't actually list the copyright and license for everything that's included in your source package21:17
geserlaga: one option for the reviewer is to check https://wiki.ubuntu.com/PackagingGuide/Basic#CommonMistakes before advocating21:17
mok0I guessed it21:17
lagaalso, what will result in slightly crumpiness so that you still process the upload?21:18
slangasekif debian/copyright is incomplete, then this means the binaries we would be distributing would not include proper copyright statements, and possibly not even copies of the right license, and that becomes a legal issue21:18
slangasekso please, make your debian/copyright list *all* the copyright holders from your source package21:19
mok0Perhaps we could look at one of these? https://edge.launchpad.net/ubuntu/intrepid/+queue?queue_state=4&queue_text=21:19
slangasek(FWIW, Debian ftp-masters have become even more strict about this of late, so this is a good first step if you want your package to also be included in Debian...)21:19
slangasekmok0: looking at any of those right now would make me unhappy >:-)21:20
geserslangasek: how pendantic should one be for generated files like configure? or config.{guess,sub}21:20
stefanlsd_Is there a recommended way to make sure we have found all of the copyright information?21:20
slangasekgeser: I generally don't bother with copyright of autoconf stuff, so that's ok to leave out because its copyright status isn't inherited by the binary packages21:21
lagaso, all copyright holders of all upstream source files need to be listed in debian/copyright?21:21
slangaseklaga: for best results, yes21:21
lagawow.21:21
mok0Is debian/copyright problems the most common ones?21:22
slangasekif you list them all, the archive admin job becomes easy.  if you don't, we have to make a Determination<tm> on our own21:22
lagathat sounds like a pain in the backside for packages like mythtv, which ship a copy of ffmpeg (libavcodec and friends)21:22
geserlaga: I guess no package got rejected yet because debian/copyright was to large or detailed :)21:23
slangasekmok0: usually, yes.  But to pick up the question from earlier, when I'm reviewing new packages, I do look over the packaging as well - not in depth, but at least to make sure there aren't any glaring problems that will obviously break the archive / the buildd / the system of anyone who instlls it21:23
slangasekstefanlsd_: as a first approximation, recursively grepping the source for 'Copyright' should give you a starting point21:24
stefanlsd_kk. thanks21:24
mok0licensecheck is also a good friend21:24
slangasekif it's hard to even /find/ that someone holds copyright, then it's probably not going to be a reason to reject the package - the archive admins don't have gobs of time to spend on this either, so while we want to get it right, we're not going to be able to do deep archaeology to find mistakes in what's been stated within the package itself21:25
stefanlsd_mok0: thanks. didnt know about that one. Its pretty cool.21:26
slangasekthe other likely reason for a reject is that debian/copyright is complete, but one of the licenses doesn't actually give us permission to redistribute!21:27
slangasekor, for multiverse, the license doesn't give permission to modify, but the package includes patches...21:28
slangasekor the package is under a GPL-incompatible license and depends on GPL libraries :(21:28
slangasekso don't do those things :)21:28
slangasekand one wiki resource that I want to bring to people's attention: https://wiki.ubuntu.com/ArchiveAdministration21:29
slangasekthe primary audience for this page are the archive admins ourselves, but I think it's useful for those who're interested to know it's there so they can get more insight into our routine21:29
slangasekI would particularly point out the list of "members with regular admin days"21:30
slangaseknear the top21:30
slangasekif you need a package processed tomorrow, don't bug me, bug pitti instead ;-)21:30
geserslangasek: is there a list what to look for for the common licenses? e.g. which combinations are good, which not (e.g. GPL and linking to OpenSSL)21:30
slangasekand I'm out of material now, so the rest of the time is open for questions. :)21:30
mok0What are the requirements to become an aa?21:31
slangasekgeser: off the top of my head, GPL is compatible with GPL, LGPL, 3-clause BSD (i.e., BSD without the advertising clause), and expat.  I think the FSF has their own list of compatible licenses on their website21:32
slangasekgeser: for most things more restrictive than a non-copyleft BSD license, it bears having a look to make things compatible; it's even possible to have two bits of GPL code that are incompatibly-licensed, since we now have both GPLv2 and GPLv3 in use21:33
geserso there is no wiki page yet with common licensing pitfalls to look for during package review?21:34
slangasekmok0: well, historically, you have to be a Canonical employee to start with, because no one not under contract can get access to the datacenter server; we do now have one non-Canonical archive admin, who to a certain extent is a "beta tester" for the LP interface21:34
slangasekmok0: I'm not the administrator of the archive admin team in LP, so I can't really say specifically what the criteria are; as far as I'm concerned, it's something like "be dumb enough to make eye contact when cjwatson and mdz are looking for volunteers" ;-)21:35
mok0he21:36
slangasekgeser: I don't know of a wiki page on that specifically; someone in MOTU might have one that I just don't know about from the archive admin side21:36
mok0That would be so useful though21:36
mok0I think the license questions are the most difficult one for many people21:37
slangasekI agree, and would be happy to see an effort to start one21:38
slangasekother questions?  sorry, I can't give you the One True Answer to getting package licensing right here, but I'm happy to answer any questions I can :)21:40
gesertill now this session was mostly focussed on how to make AA happy during NEW processing. What about the other workflows? like sync request. Is there something which can make the work for AA easier?21:42
slangaseksure21:43
slangasek- if you're overriding an existing ubuntu diff, explicitly state this, so the archive admin doesn't have to guess whether you know21:43
slangasek- if there's no ubuntu delta, don't say there's one in the bug, because this just confuses me :-)21:44
sebnerhappend for me once ^^21:44
slangasek- use the requestsync tool, which appears to do a good job of getting all this right (judging by what I see in LP)21:45
slangasek- if you're not a MOTU, don't subscribe ubuntu-archive directly, because we'll just have to bounce it back to ubuntu-universe-sponsors for you21:45
slangaseki.e., follow https://wiki.ubuntu.com/SyncRequestProcess21:45
slangasekgeser: does that answer your question?21:48
geseryes21:48
gesernow and then I file a removal request, is there some required info which should always be included?21:48
gesercurrently I check for rdepends and rbuilddepends and also add the Debian removal bug (if it exists)21:49
gesersomething else to add?21:49
slangasekif it's not removed from Debian, please say whether the package should be blacklisted permanently, or whether it should be allowed back in the next merge cycle21:50
slangasekit also helps if you give a clear reason for the removal, so we can document this for posterity (not something that's often a problem, I'm just saying)21:51
geserare packages removed in Debian also automatically removed from the Ubuntu archive?21:52
slangasekgeser: prior to the DebianImportFreeze, yes21:54
slangasekafter that, they have to be requested21:54
slangasekso if there are no other questions, I'll let people off the hook 5 minutes early, consider it a smoke break or a frozen-bubble break or whatever :-)21:55
sebnerslangasek: that's a cool game :P21:56
geserslangasek: thanks for the session21:56
slangasekthanks for coming, and if further questions come to you later, don't be shy about asking - I'm usually around on #ubuntu-devel and #ubuntu-motu21:56
stefanlsd_slangasek: thanks very much21:56
stefanlsd_slangasek: i'm also trying to understand program libaries and reading a session that you a sistpoty gave. Its excellent. thanks for that also! (https://wiki.ubuntu.com/MOTU/School/LibraryPackaging)21:57
slangasekyou're welcome - sistpoty deserves most of the credit for that, I was mostly just kibbitzing :)21:58
FlannelNothing is going on for UDW right now, right?22:10
Flannelspiritssight: so, what are you trying to set up?  Just apache? or the entire LAMP stack?22:11
spiritssightin very simple words I don't know :-) I need webserver to serve a very little website, and email also I have a domain with go-daddy and my router has built in dynipic ip address thing22:13
Flannelspiritssight: Just static web pages on that web site?22:13
spiritssightphp and will have a event system I hope soon :-) mysql22:14
spiritssight\I want to have the lastest and greatest :-) well ok the most stabled22:14
FlannelAlright.  So you want all of LAMP.22:14
Flannelspiritssight: https://help.ubuntu.com/community/ApacheMySQLPHP  that page will walk you through the entire set up22:14
spiritssightI guess that would be a yes :-)22:15
Flannelspiritssight: And configuring all the things after you've installed it too.22:15
spiritssightare you going to be staying on as I know there is there I don't understand and will want to ask for trying to understand22:15
Flannelspiritssight: I may not still be here personally, but there should be other people in this channel that can help.  This channel will get pretty noisy in about 18 hours until about this time tomorrow, because we're holding some other events here.22:17
Flannelspiritssight: but, after that, this channel would be the place you can come to for reliable, low volume assistance22:17
spiritssightoo ok thanks22:18
Flannelspiritssight: and also, for server issues, you can also try #ubuntu-server22:18
spiritssightnow it looks like its talking about Feisty, not harden hero22:18
spiritssightnever mind just saw it22:19
spiritssightnow is there a good GUI to go with the LAMP22:19
Flannelspiritssight: No, LAMP doesn't have a GUI.  Really a GUI would be sort of useless.  To cluttered to be effective.22:22
spiritssightok so I just type sudo tasksel install lamp-server?22:24
Flannelspiritssight: yep, and then the configuration of mysql and such.22:24
spiritssighthere goes :-)22:25
spiritssightso does this tasksel have a gui so you can see what packages can be install as a bundle type thing22:26
spiritssightlike the lamp-server22:26
taconeFlannel: if you have to setup simple virtualhosts you may want to try rapache (self publicity)22:28
Flannelspiritssight: If it's not showing anything, then no.22:28
Flanneltacone: You'd be telling spiritssight that, not I.22:28
taconeoh22:28
tacones/Flannel/spiritssight/22:29
Flannelspiritssight: It'd be something like apache2 mysql-server php5 libapache2-mod-php5 php5-mysql22:30
Flannelspiritssight: (and then all the depends of those packages)22:30
spiritssightok I ran the installer thingy it ask me for a pasword for mysql now what :-) ? how do I make it so its safe and secure also how do I get it to show publicly22:31
Flannelspiritssight: Well, it already is more or less safe, to get it to show publically, you need to forward port 80 on your router to your computer, and then if you're going to use some sort of hostname, you'll want to set that up.22:35
Flannelspiritssight: but technically once you forward the port on your router, you'll be able to browse to your IP and see it.22:35
spiritssighthostname is what ?22:36
Flannelspiritssight: the dynamic IP thing you were talking about.  a DNS entry, sorry, not a hostname.22:38
spiritssightwhat is the 80 port FTP http https22:38
spiritssightdo I want TCP or UNP? or any and  schedule aways right?22:40
Flannelspiritssight: TCP, port 80 is for http.  https is port 443, but you haven't enabled https yet in apache.22:42
spiritssightoo ok so I will setup both through while in the router or is that bad idea22:42
spiritssightdo you know good dns to use that I can use my own domain and not pay much for year its for a non-profit22:48
Flannelspiritssight: 443 won't really matter much to forward.  But if you don't plan on using it, there's no reason to forward it.22:51
Flannelspiritssight: If this is going to be a "real" website, you might need to check your ISP's terms of service. Some of them forbid you to run servers like this with regular plans22:51
spiritssightcorrect, its a real site just not busy at all, I will worrie more about the traffic when it gets mover then a hand full of visitors22:53
=== stefanlsd_ is now known as stefanlsd

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