GetStarted

Revision 3 as of 2009-08-31 18:19:45

Clear message

Dev Week -- Getting Started with UbuntuDevelopment -- dholbach -- Mon, Aug 31st, 2009

IRC Logs Transcript

EagleScreen     class start at 16:00 UTC, in 3 minutes  16:57
dholbach        WELCOME EVERYBODY TO UBUNTU DEVELOPER WEEK!     17:00
dholbach        Who's all here for Ubuntu Developer Week?       17:00
the-dude        \o/     17:00
andol   o/      17:00
* penguin42 raises a flipper    17:00
andi    +       17:00
shwnj   hello :)        17:00
* devin122 raises hand  17:00
msp301  me :)   17:00
Narodon <-      17:00
syedam  hi      17:00
trothigar       :)      17:00
raji    hi      17:00
medi    hi      17:00
EagleScreen     me, hello       17:00
_Fauchi95_      +       17:00
juanje  \o/     17:00
papapep :D      17:00
slicingcake     \o/     17:00
Oreste  Hi all  17:00
norax   hi      17:00
codeanu hello :-)       17:00
James147        hi :)   17:00
robbbb  heyyy   17:00
rish    o/      17:00
anurag213       hy there        17:00
Karmic  kudos!  17:00
ulysses \o/     17:00
Ker__   Hey     17:00
d3tr01t sup     17:00
ahe     hi      17:00
aalcazar        hi      17:00
bptk421 hi      17:00
HobbleAlong     hi      17:00
svij    heyy    17:00
haveMercy       hi      17:00
marvinlemos     hi      17:00
Gvorr   hi      17:00
* arualavi .-D  17:00
kamikalo        hi      17:00
tdapple howdy   17:00
soyrochus       hola    17:00
riot_   hi daniel       17:00
_Fauchi95_      hi      17:00
sligocki        g'day   17:00
jcastro woo!    17:00
julian_sda      hi      17:00
qwebirc16121    hi      17:00
jacob   \o/     17:00
czambran_       hi      17:00
randomaction    hi      17:00
yo1991  hi      17:01
jango6  :D      17:01
ScottTesterman  hi      17:01
mhall119|work   wow     17:01
tordek-san      hi      17:01
anurag213       so lets begin   17:01
=== benjamin_ is now known as claudius177
=== herbmann_ is now known as herbmann_work
syedam  \ o /   17:01
rish    class started!! good    17:01
anurag213       yup...  17:01
Orphey  hi      17:01
dholbach        HELLO MY FRIENDS!       17:01
c_korn  me, too 17:01
* nealmcb \o/   17:01
rubial  :)      17:01
troxor  \o      17:01
qwebirc47321    howdy   17:01
frandieguez_    hi to all!      17:01
jacob   quite the turnout       17:01
shwnj   hello everyone :)       17:01
danbhfive1      hi      17:02
thowland        yo      17:02
ililias :)      17:02
dholbach        My name is Daniel Holbach... any questions after the session, ideas for improvement, pieces of advice, nice comments and cheques please to dholbach at ubuntu dot com.  17:02
dholbach        I'll be your host for the first two sessions which will be all about "Getting Started with Ubuntu Development". 17:02
credobyte       & me    17:02
rish    ok, dholbach let's start        17:02
rubial  dholbach: funny name    17:02
dholbach        so let's first dive into a bit of organisational stuff  17:02
rubial  go go go        17:02
dholbach        I noticed a bunch of people I already know but there's a lot of new "faces" here too    17:03
codeanu ya      17:03
=== riot_ is now known as riot_le
dholbach        We're around 300 people in here already, which is why ALL QUESTIONS and ALL CHATTER go to #ubuntu-classroom-chat instead of #ubuntu-classroom   17:03
dholbach        else the logs will be totally unreadable afterwards     17:03
Panikos and me +        17:04
the-dude        will logs be saved?     17:04
tiax    won't you set +m?       17:04
dholbach        the-dude: yes   17:04
dholbach        so if you're not in #ubuntu-classroom-chat yet, please join the channel now     17:04
* popey hugs dholbach   17:04
dholbach        in #ubuntu-classroom-chat please prefix your questions with "QUESTION: "        17:05
dholbach        ie: "QUESTION: Do you like doing Ubuntu Development?"   17:05
=== qwebirc16121 is now known as rico45
dholbach        also for those not fluent in English, we have irc channels where you can ask questions in your language, they will be translated into English for you   17:05
dholbach        - Catalan: #ubuntu-classroom-chat-ca    17:05
dholbach        - Danish:  #ubuntu-nordic-dev   17:05
dholbach        - Finnish: #ubuntu-fi-devel     17:05
dholbach        - German:  #ubuntu-classroom-chat-de    17:05
dholbach        - Spanish: #ubuntu-classroom-chat-es    17:05
dholbach        - French:  #u-classroom 17:05
dholbach        if there's other channels for other languages, please announce them in #ubuntu-classroom-chat   17:06
dholbach        Alright... another piece of advice:     17:06
dholbach        https://wiki.ubuntu.com/UbuntuDeveloperWeek lists the timetable and links to a beautiful brochure that has more information     17:06
dholbach        https://wiki.ubuntu.com/UbuntuDeveloperWeek/Sessions should tell you if you need to prepare for any session     17:07
dholbach        https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/glossary has some useful glossary for abbreviations and stuff    17:07
dholbach        alright... that should be everything organisational for now... just bookmark https://wiki.ubuntu.com/UbuntuDeveloperWeek and you'll be fine for this week :-)   17:08
dholbach        so let's get the session started        17:08
qwebirc71751    hey     17:08
qwebirc71751    lets get it started     17:08
dholbach        qwebirc71751: chatter and questions please in #ubuntu-classroom-chat    17:09
MaNU__  lets start      17:09
rish    will you all stop talking and let dholbach speak?       17:09
dholbach        my aim for the session is to get you from "How can I help out? I can't code in C/C++." (a question I get very often) to "Ah, I understand things much better now, I know where to look things up and who to ask."       17:09
rico45  pls start       17:09
zubin71 pls start       17:09
dholbach        so I'll cover a bunch of more general topics and help you set up a development environment      17:10
credobyte       zubin71: patiance :)    17:10
bptk421 /ignore #ubuntu-classroom JOINS PARTS NICKS QUITS       17:10
diwanshuster    hello everyone  17:10
zubin71 hello   17:10
=== rene is now known as Guest54172
rico45  no patiance impatient   17:10
bptk421 /ignore #ubuntu-classroom JOINS PARTS NICKS QUITS       17:11
dholbach        so as a first step, please enable "Source code" in System -> Administration -> Software Sources -> Ubuntu Software      17:11
diwanshuster    done    17:11
Nomads  /ignore #ubuntu-classroom JOINS PARTS NICKS QUITS       17:11
dholbach        Once that's done, you'll notice a lot of entries that start with deb-src in /etc/apt/sources.list       17:12
dholbach        I'll explain why we need it a bit later on      17:12
dholbach        afterwards, please run  17:12
dholbach           sudo apt-get install --no-install-recommends ubuntu-dev-tools build-essential pbuilder       17:12
dholbach        it will install a bunch of very useful tools we're going to need for the session        17:12
dholbach        ubuntu-dev-tools contains scripts that are very useful for packaging and repetitive tasks (it also depends on devscripts which has even more useful stuff)      17:13
dholbach        build-essential is necessary to do the most common tasks having to do with compiling and building       17:13
dholbach        pbuilder is the perfect tool to build packages in a sane and reproducable way   17:14
dholbach        now please edit the file    ~/.pbuilderrc    (gedit, vi, emacs, whatever you like best) 17:15
dholbach        add the following line to it:   17:15
dholbach        COMPONENTS="main universe multiverse restricted"        17:15
dholbach        and save it     17:15
dholbach        now please run: 17:15
dholbach           sudo pbuilder create 17:15
dholbach        it will set up a pbuilder instance for you which will take a while      17:16
dholbach        I forgot, please install gnupg too:     17:16
dholbach          sudo apt-get install gnupg    17:16
dholbach        <_Fauchi95_> QUESTION: Do I need to use pbuilder or is that optional?   17:17
dholbach        _Fauchi95_: pbuilder is a great tool to test-build a package in a separate and minimal environment - it's a great way to test the build 17:18
dholbach        it's by no means a must, but I'll get back to the topic of testing in a bit     17:18
dholbach        ok... while that's running, let's create a GPG Key - if you have one already you can lay back and relax 17:18
dholbach        Please run      17:19
dholbach          gpg --gen-key 17:19
dholbach        we use GPG keys to sign packages to identify them as our own work and make sure they weren't tampered with      17:19
dholbach        you can also use it to encrypt and sign other files and emails  17:19
dholbach        https://help.ubuntu.com/community/GnuPrivacyGuardHowto has more info and I won't go into too much detail, using the defaults should be fine for now     17:20
dholbach        give it your name and your preferred email address, that should be fine for now 17:20
dholbach        once it's done, you can get your fingerprint and key id by running something like this: 17:22
dholbach           gpg --fingerprint your.name@email.com        17:22
dholbach        mine says something like:       17:22
dholbach        pub   1024D/059DD5EB 2007-09-29 17:22
dholbach              Schl.-Fingerabdruck = 3E5C 0B3C 8987 79B9 A504  D7A5 463A E59D 059D D5EB  17:22
dholbach        uid                  Daniel Holbach .......     17:22
dholbach        059DD5EB is the key id  17:22
dholbach        Afterwards please run   17:24
dholbach           gpg --send-keys KEYID        17:24
dholbach        ie: gpg --send-keys 059DD5EB    17:24
dholbach        this will upload your gpg key to the servers, so other people can identify your files and your emails as yours  17:24
dholbach        as a next step, we need to upload it to Launchpad too   17:25
dholbach        (if you have no Launchpad account yet, please visit https://launchpad.net/+login)       17:25
dholbach        it seems like some people have a problem with gpg not having a default keyserver set, in that case, please add  --keyserver keyserver.ubuntu.com        17:26
dholbach        you can add your GPG key to Launchpad by visiting: https://launchpad.net/people/+me/+editpgpkeys        17:27
dholbach        ok, that should be it for preparations right now        17:27
dholbach        so what did we do       17:28
dholbach        - install a bunch of tools      17:28
dholbach        - created a pbuilder instance (which might be still running for some of you)    17:28
dholbach        - created a GPG key     17:28
dholbach        - uploaded the key to keyservers and launchpad  17:28
dholbach        ok... so what do we do with Launchpad   17:29
dholbach        Launchpad is used for everything in Ubuntu - Translations of packages, Bug Reports for packages, Specifications of new Ubuntu features, Code branches, and packages are also built there        17:30
dholbach        that plus our whole team organisation   17:30
dholbach        the great thing about Launchpad is that it is written by awesome people and it is Open Source   17:30
dholbach        also... it's written in Python :)       17:30
dholbach        We'll have a bunch of interesting Launchpad sessions too this week:     17:31
dholbach        -  Using the LP API for fun and profit -- leonardr (Tue 1st Sep, 19:00 UTC)     17:31
dholbach        -  Getting started with Launchpad development -- gmb  (Wed 2nd Sep, 16:00 UTC)  17:31
dholbach        -  Being productive with bzr and LP code hosting - rockstar (Thu 3rd Sep, 19:00 UTC)    17:32
dholbach        -  Hacking Soyuz to get your builds done -- noodles775, cprov and wgrant (Fri 4th Sep, 20:00 UTC)       17:32
dholbach        a lot of other sessions will probably briefly cover Launchpad too       17:32
dholbach        <anurag213> Question:Not enough random bytes available.  Please do some oth     17:33
dholbach        anurag213: just let it sit there for a while - gnupg is getting more entrophy and random numbers from your machine      17:34
dholbach        ok, next we'll tell the development tools who we are    17:34
dholbach        just edit  ~/.bashrc  in your favourite editor  17:34
dholbach        and add something like this to the end of it:   17:34
dholbach           export DEBFULLNAME='Daniel Holbach'  17:35
dholbach           export DEBEMAIL='daniel.holbach@ubuntu.com'  17:35
dholbach        then save it    17:35
dholbach        and run    source ~/.bashrc     17:35
dholbach        alright... that should be it for now    17:35
dholbach        so what's next  17:36
dholbach        I'll talk a bit about source packages and what we do with them, how code gets changed, when we change which pieces of Ubuntu, who you can talk to, where you can find out more, etc. :) 17:36
dholbach        then we'll do some hands-on package building :-)        17:36
dholbach        so first of all, here's where you find more information:        17:37
dholbach        https://wiki.ubuntu.com/MOTU/GettingStarted     17:37
dholbach        bookmark the page! it links to all the important documents we have      17:37
dholbach        among them:     17:37
dholbach          - https://wiki.ubuntu.com/PackagingGuide      17:37
dholbach             which has a lot of information about packaging in general  17:38
dholbach             especially https://wiki.ubuntu.com/PackagingGuide/Recipes where you can find out how to use the tools easily       17:38
dholbach             there's also https://wiki.ubuntu.com/MOTU/Videos which has a bunch of videos which talk about packaging, updating packages, patching stuff, etc.   17:39
dholbach          -  https://wiki.ubuntu.com/UbuntuDevelopment is important too because it explains how Ubuntu Development generally works, processes, who is responsible for what and so on    17:39
dholbach          - https://wiki.ubuntu.com/Packaging/Training invites you to Packaging Training IRC sessions which happen every Thursday       17:40
dholbach        the next one is going to be: Thursday 3rd September, 6:00 UTC, Ubuntu Development Q&A... with me :-)    17:40
dholbach        ok, now let's have a look at https://wiki.ubuntu.com/ReleaseSchedule    17:41
dholbach        it's a great way to understand more about Ubuntu Development if you know more about the different phases of the release 17:42
=== riot_le is now known as Guest50469
dholbach        this is the schedule of the karmic release which we're working on right now - it's due for October 29th 17:42
dholbach        in the first phase the new release is created in Launchpad and the toolchain is set up which means that the most important packages (like libc and gcc, the compiler collection) are bootstrapped       17:43
dholbach        afterwards we start merging changes from Upstream and Debian (I'll go into more detail in a bit)        17:43
dholbach        and then UDS happens    17:43
dholbach        UDS is the Ubuntu Developer Summit where Ubuntu developers meet in real life to discuss and define new features 17:44
dholbach        these often result into specifications where we exactly describe why we want the feature, how it's going to work, its impact and its implementation strategy    17:44
dholbach        https://blueprints.launchpad.net/ubuntu should have a few you can take a look at        17:44
dholbach        <alourie|vm> dholbach: how can a person participate in UDS?     17:44
dholbach        alourie|vm: everybody is invited to attend UDS, so if you live close or are sponsored to go there you can participate locally   17:45
dholbach        if you can't, you can participate via VOIP and IRC      17:45
dholbach        <gotunandan> QUESTION : what do you mean by bootstrap ? 17:45
dholbach        gotunandan: when the new toolchain is uploaded, you need to make sure the new gcc is built with the new libc6 and binutils, etc. - I unfortunately don't have much time to discuss it here, but #ubuntu-toolchain might be a good place to discuss it further   17:46
dholbach        once the new features are all discussed and described in specifications people work on their features, upload new version of packages and we import a lot of packages from Debian       17:47
dholbach        (more on that in a bit) 17:47
dholbach        that all happens in the "green" part of     https://wiki.ubuntu.com/ReleaseSchedule     17:48
dholbach        "green" doesn't mean "it's all great here and it all works"!    17:48
dholbach        it means that developers have a lot of freedom to work on things :)     17:48
dholbach        if you want to participate you need to run the new development release IN SOME FORM     17:48
dholbach        I say "in some form" because obviously you probably need your computer and can't have the kernel, libc, X or GNOME explode all the time :-)     17:49
dholbach        https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases describes how to safely and sanely use the current development release       17:49
dholbach        <trothigar> QUESTION: for packaging can you just run pbuilder for the development release?      17:49
dholbach        trothigar: good question - just what I wanted to talk about :)  17:49
dholbach        the answer is no        17:50
dholbach        test-building a package for karmic is a good start      17:50
dholbach        but you definitely need to do this on karmic too:       17:50
dholbach          _____ _____ ____ _____ ___ _   _  ____ _      17:50
dholbach        |_   _| ____/ ___|_   _|_ _| \ | |/ ___| |      17:50
dholbach           | | |  _| \___ \ | |  | ||  \| | |  _| |     17:50
dholbach           | | | |___ ___) || |  | || |\  | |_| |_|     17:50
dholbach           |_| |_____|____/ |_| |___|_| \_|\____(_)     17:50
dholbach        which is why just "test building on karmic" is not good enough  17:50
dholbach        https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases explains how to use a virtual machine, a chroot or a separate partition for your development work, so you don't hose the family computer :)  17:51
dholbach        ok, moving on in the release schedule:  17:51
dholbach        afterwards we have Feature Freeze (which we're in in karmic right now) where you need to get exceptions for uploading new upstream versions or other radical changes    17:52
dholbach        at this time of the release some things might still be broken but the features should at least be half-way there        17:52
dholbach        after that we introduce more and more freeze dates: UI, kernel, documentation, translations, etc.       17:53
dholbach        one gets frozen every week so we get a very stable release that can be safely documented, translated and tested 17:53
dholbach        <slacker_nl> QUESTION: are there automated testtools for package testing, eg tests for regression testing? or should that be provided by upstream?      17:53
dholbach        slacker_nl: great question      17:53
dholbach        there's a number of upstream developers (which means software authors) that provide us with test suites and very often they are run during the build to directly find out if things got broken in the new release       17:54
dholbach        there's tools like pbuilder for safe test-building and there's tools like lintian that can check your packaging for you 17:54
dholbach        ok... let's take a quick 5 minute break and we can get our hands dirty afterwards       17:56
dholbach        for all of you that need a new cup of tea or a drink or need to nip to the loo  17:56
dholbach        see you in just a bit :-)       17:56
dholbach        alright... let's kick off part 2        18:00
dholbach        for all of you who just arrived: you can ask questions in #ubuntu-classroom-chat (please prefix with QUESTION:), logs will be available afterwards on https://wiki.ubuntu.com/UbuntuDeveloperWeek       18:01
dholbach        Ok... now let's get some source package and let's try to test build it  18:01
dholbach        please run      18:01
dholbach           apt-get source hello 18:01
dholbach        if you have "Sources" enabled in Software Sources this should work now  18:02
dholbach        what it does it the following   18:02
dholbach        it will get the source package for the 'hello' package  18:02
dholbach        there's the distinction between the source packages and the binary packages     18:03
dholbach        what my Mom installs, the .deb files are the binary packages which are a result of the build    18:03
dholbach        what we work on as Ubuntu developers is the source packages     18:03
dholbach        in the case of hello (on karmic) this means the following files:        18:03
dholbach           hello_2.4-1.diff.gz  hello_2.4-1.dsc  hello_2.4.orig.tar.gz  18:04
dholbach        hello_2.4.orig.tar.gz means: the original source code that was released by the software authors of 'hello' in the version 2.4   18:04
dholbach        the 'orig' is important - it means: this tar.gz file didn't receive any changes at all, it's just as it was downloaded from the hello homepage  18:05
dholbach        (just renamed)  18:05
dholbach        hello_2.4-1.diff.gz is the compressed set of changes that were applied by Debian (and Ubuntu) developers to make the source package build the Debian/Ubuntu way 18:06
dholbach        so what does this mean "the debian/ubuntu way"? 18:07
dholbach        some of you might have compile source code already, where you manually build software by running:       18:07
dholbach        ./configure    make     sudo make install       18:07
dholbach        the packaging process basically wraps around those build commands and enables us to apply the same build process to every kind of package       18:08
dholbach        so it doesn't matter if it's a python program, a set oh PHP modules, something written in C or something to do with Perl        18:08
dholbach        also you add some meta information like the package name, a description, etc.   18:08
dholbach        The session "Packaging from scratch" -- Laney on Friday will talk about that in more detail     18:09
dholbach        also "Learning from mistakes - REVU reviewing best practices" -- mok0  on Thursday  will have useful tips       18:09
dholbach        <[BIOS]Dnivra> QUESTION: Why is dpkg-dev needed? I get an error it's not installed. isn't it available in the ubuntu repository?        18:09
dholbach        sorry, please run       18:09
dholbach           sudo apt-get install dpkg-dev        18:09
dholbach        it's needed too, I thought it would be pulled in        18:10
dholbach        just run        18:10
dholbach             dpkg-source -x *.dsc       18:10
dholbach        afterwards and you'll be fine   18:10
dholbach        I'll get to the purpose of it in just a bit     18:10
dholbach        <[BIOS]Goo> QUESTION:Could you elucidate  "wraps around those build commands"   18:11
dholbach        [BIOS]Goo: ok, let's go into some more detail   18:11
dholbach        so a regular application written in C will often require you to run something like ./configure; make; make install; etc.        18:12
dholbach        a python application that uses distutils might need something like invocations of    python ./setup.py ....     18:12
dholbach        sometimes for a package to work afterwards (some simple scripts) it will be enough to just copy them where they belong  18:13
dholbach        the package build process can be divided into steps like configuration, compilation, installation, something that happens post-installation and so on   18:13
dholbach        think of it as a "meta build process"   18:13
dholbach        that process is specified in the debian policy and we make use of that  18:14
dholbach        the great thing about this standardisation is: our tools all treat source packages the same way, no matter what weird way they work internally  18:14
dholbach        moving on :)    18:14
dholbach        hello_2.4-1.dsc just contains meta data of the package like md5sums and so on   18:15
dholbach        so what apt-get source (or  more specifically dpkg-source -x *.dsc) did was:    18:16
dholbach        - unpack hello_2.4.orig.tar.gz  18:16
dholbach        - unpack and apply the patch with our changes hello_2.4-1.diff.gz       18:16
dholbach        so you should be able to see the hello-2.4 directory    18:16
dholbach        (or hello-2.3 if you're on an older version)    18:16
dholbach        this directory should contain a debian/ directory which basically contains all the packaging    18:17
dholbach        daniel@miyazaki:~$ ls hello-2.4/debian/ 18:17
dholbach        changelog  control  copyright  postinst  prerm  rules  watch    18:17
dholbach        daniel@miyazaki:~$      18:17
dholbach        I won't explain every last detail now, just very quickly        18:17
dholbach        - changelog: descriptions of all the packaging changes (one new entry per new version that was uploaded to the archive) 18:17
dholbach        - control: information about the source package (who maintains it, where's the homepage, which packages are necessary to build it, etc.) and the resulting binary package(s)    18:18
dholbach        - copyright: licensing and copyright information of the software        18:18
dholbach        - rules: how is the package build, how does the meta build process work 18:18
dholbach        we can safely ignore the others for now 18:18
dholbach        alright... now let's test-build the package     18:19
dholbach        if your pbuilder setup succeeded, you just run the following    18:19
dholbach            sudo pbuilder build hello_2.4-1.dsc 18:19
dholbach        if it works out, you should be able to have a look at /var/cache/pbuilder/result/hello_*.deb afterwards 18:20
dholbach        this should work        18:20
dholbach           less /var/cache/pbuilder/result/hello_*.deb  18:20
dholbach        this will show you the contents of the package, its size and dependencies, etc. 18:20
dholbach        if you have a look at the build log you will see what happened there:   18:21
dholbach        first the separate build environment was set up, then some additional packages installed        18:21
dholbach        then ./configure was run, then the actual compilation of the source code happened, then some files were installed and then they were all glued together in /var/cache/pbuilder/result/hello_*.deb, then the build environment torn down again   18:22
dholbach        the fine thing about pbuilder is that it will store all the packages that are necessary to build a package      18:22
dholbach        and you don't need to download them over and over again 18:23
dholbach        <alourie|vm> dholbach: QUESTION: what if packages need an update?       18:23
dholbach        alourie|vm: you run    sudo pbuilder update   (similar to apt-get update)       18:23
dholbach        <trothigar> QUESTION: presumably the build deps are downloaded as binaries. Does pbuilder share the same cache as apt?  18:24
dholbach        trothigar: you can set it up that way   18:24
dholbach        https://wiki.ubuntu.com/PbuilderHowto should have more information on the topic 18:24
dholbach        it came up in -chat a couple of times, so here goes:    18:25
dholbach          <RainCT> penguin42: Yeah. Using pbuilder-dist (from ubuntu-dev-tools) is a great way to achieve that  18:25
dholbach        pbuilder-dist is a fine tool to test-build packages for various ubuntu and debian releases      18:25
dholbach        talk to RainCT to find out more about it :)     18:25
dholbach        ok... so how does Ubuntu Development work? what do people do with those .dsc .diff.gz and .orig.tar.gz files    18:26
dholbach        basically for every change that is done to a package a new source package must be uploaded to the Launchpad build servers       18:26
dholbach        that's where the gpg key comes in, if you're not part of the team (I'll get to that in a sec), it will reject your changes      18:27
dholbach        the same applies for Launchpad Personal Package Archives (https://help.launchpad.net/Packaging/PPA)     18:27
dholbach        you can think of it as a primitive (sorry everybody) version control system     18:27
dholbach        Developer A makes a change and uploads version 2.4-2 of hello   18:28
dholbach        and I can get it via   apt-get source hello   later on and improve it some more if I like       18:28
dholbach        there are efforts going on to make more use of distributed revision control (using Bazaar on Launchpad) and Mr James Westby will talk about that later in the week      18:29
dholbach        Friday 4th September, 18:00 UTC - Fixing an Ubuntu bug using Bazaar -- james_w  18:29
dholbach        so how would you go about sending in changes now that you're not part of the team yet   18:30
dholbach        easy: come to tomorrow's session "Fixing small bugs in Ubuntu" and learn how to produce patches 18:30
dholbach        once you have the patch, you attach it to a bug report and subscribe the reviewers team 18:30
dholbach        they'll give you a review and some advice and upload the change for you once it's all good      18:31
dholbach        basically they'll download the source package, apply your changes, sign it with they gpg key and upload it for you      18:31
dholbach        <msp301> QUESTION: what would happen in the case that two users happen to update at the same time on Launchpad??        18:31
dholbach        msp301: those collisions happen every now and then, Launchpad will just use the one that was milliseconds before and throw away the other :)    18:31
dholbach        <alourie|vm> dholbach: QUESTION: how do we prepare patches?     18:32
dholbach        alourie|vm: tomorrow, 16:00 UTC, this place :-) 18:32
dholbach        find more detail about the reviewers team and how to get stuff uploaded at: https://wiki.ubuntu.com/SponsorshipProcess  18:32
dholbach        once the reviewers are happy with your general work and get tired of uploading and reviewing myriads of changes for you, they'll tell you that and you can send your application for upload rights :-)  18:33
dholbach        https://wiki.ubuntu.com/UbuntuDevelopers explains the process   18:33
dholbach        ok... that roughly explains how Ubuntu works    18:34
dholbach        there's the release schedule with freeze dates, there's people working with source packages, there's bug reports and people attaching patches to them   18:34
dholbach        there's packages getting built, downloaded and tested   18:34
dholbach        but that doesn't explain how developers interact        18:34
dholbach        there's mailing lists and IRC   18:34
dholbach        https://lists.ubuntu.com/mailman/listinfo/ubuntu-motu and #ubuntu-motu should be interesting for you    18:35
dholbach        because these channels contain the most awesome and frienly people that can help you out        18:35
dholbach        there's lots more mailing lists: https://lists.ubuntu.com/      18:35
dholbach        and there's lots more irc channels: https://help.ubuntu.com/community/InternetRelayChat 18:36
dholbach        but try to take one step at a time :-)  18:36
dholbach        it can be a bit overwhelming :) 18:36
dholbach        <bogor> QUESTION: Does building package in my pc will have it installed in my machine. If yes then how do i uninstall it if somethings goes wrong?      18:36
dholbach        bogor: no, you have to explicitly install the package, running   sudo dpkg -i bla.deb   18:36
dholbach        that's why you probably best check out https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases       18:36
dholbach        which explains how to have a separate, up-to-date development environment       18:37
dholbach        <slacker_nl> QUESTION: you've talked about development releases, what about backports, how does that process work, when does a package get backported?  18:37
dholbach        slacker_nl: good one    18:37
dholbach        slacker_nl: so we all work on karmic now.... it's going to be released on October 29th  18:37
dholbach        afterwards the karmic will be frozen    18:37
dholbach        no uploads to karmic anymore    18:38
dholbach        afterwards only uploads to karmic-security karmic-updates and karmic-backports are accepted     18:38
dholbach        Effectively testing for regressions -- sbeattie  on Thursday will have more information on that 18:38
dholbach        https://wiki.ubuntu.com/SRU also explains it in more detail     18:39
dholbach        <openweek0_> QUESTION: where do i join if i wanna participate in gnome desktop env development? 18:39
dholbach        openweek0_: check out https://wiki.ubuntu.com/Teams for more information on various teams within Ubuntu 18:39
dholbach        <msp301> QUESTION: is that the same with LTS releases ? retricted updates etc ??        18:40
dholbach        msp301: no, what I just mentioned above concerns all releases, LTS or not       18:40
dholbach        LTS is just supported for longer than the "regular" 18 months, it's 3 years of support on the desktop and 5 on the server       18:40
dholbach        <c_korn> QUESTION: can I safely run "sudo rm -rf /var/cache/pbuilder/" to purge pbuilder ?      18:40
dholbach        c_korn: yes     18:40
dholbach        ok, now that we know how developers interact, one thing is VERY important       18:41
dholbach        always document changes you are about to make as good as you can        18:41
dholbach        we have people living in various parts on earth, speaking different languages and having different skill sets   18:41
dholbach        as we maintain all packages together as one big team it's important that other developers don't have to second guess what you might have meant  18:42
dholbach        also in 6 months time you probably don't want to second guess your own patches or documentation :)      18:42
dholbach        ok... speaking of patches and developers: we're not alone in the open source world      18:43
dholbach        we inherit a great deal of good stuff from the Debian project and other projects        18:43
dholbach        if we make changes we want to make sure to contribute them back to Debian, so let's take a quick look back at the hello example 18:43
dholbach        2.4-1 is the version in karmic  18:44
dholbach        this means:     18:44
dholbach        - 2.4 is the release that was done by the authors of hello on their homepage    18:44
dholbach        - "-1" means that one revision of 2.4 was done in Debian and we inherited that  18:44
dholbach        debian/changelog has more information on what happened there    18:44
dholbach        if I was to do a change for Karmic, the new version string would be     18:45
dholbach        2.4-1ubuntu1    18:45
dholbach        meaning: still 2.4 upstream release, one (inherited) debian revision, one Ubuntu change 18:45
dholbach        this also means that in the new Ubuntu release (karmic+1) we can't just copy (we call it 'sync') the package from debian, as we might overwrite the changes that I did in 2.4-1ubuntu1  18:46
dholbach        if there was a 2.5-1 in Debian, we'd need to very closely check if we can just overwrite my changes or if I need to merge the manually into the 2.5-1 Debian version (and thus get 2.5-1ubuntu1)        18:47
dholbach        to be able to sync as much as possible and share the same codebase all over it's necessary to send patches upstream     18:47
dholbach        On Wednesday we'll have a session called " Bug lifecycle, Best practices, Workflow, Tags, Upstream, Big picture" by jcastro and pedro_ who will talk about that some more       18:47
dholbach        <aacool> QUESTION: what do I run to test hello after the pbuilder build completes?      18:48
dholbach        aacool: you'd run    sudo dpkg -i /var/cache/pbuilder/result/hello*.deb    to install the resulting package     18:48
dholbach        and then run    18:48
dholbach           hello        18:48
dholbach        in the command line :-) 18:48
dholbach        <penguin42> QUESTION: What happens with package numbering when ubuntu brings out a newer upstream version before debian does, then debian catches up?   18:48
dholbach        penguin42: nice one :)  18:48
dholbach        so let's say Debian is still on 2.4-1 and we discover there's a new release out by the hello upstream guys      18:49
dholbach        we'd call it 2.5-0ubuntu1       18:49
dholbach        to indicate: it's upstream 2.5, we didn't get a revision of it from Debian, but have the first revision of it in Ubuntu 18:49
dholbach        <[BIOS]Goo> QUESTION: Since Ubuntu is debian based, can i follow the same package building process for Debian as well?(using pbuild)    18:49
dholbach        [BIOS]Goo: essentially, yes     18:50
dholbach        https://wiki.ubuntu.com/UbuntuPackagingChanges explains what's different in the Ubuntu world    18:50
dholbach        <norax> QUESTION: What's the order? I mean hello.2.4-1 is before or after hello.2.10-1 ? If before, What goes after hello.2.10-1_ubuntu9? If after what happend if the upstream developer use a different notation?     18:50
dholbach        norax: first 2.4-1 then 2.10-1  18:50
dholbach        to be on the safe side, you can do this 18:50
dholbach        daniel@miyazaki:~$ dpkg --compare-versions 2.10-1 gt 2.4-1 && echo TRUE 18:51
dholbach        TRUE    18:51
dholbach        daniel@miyazaki:~$      18:51
dholbach        dpkg is always authoritative on package versions        18:51
dholbach        the command above checks if 2.10-1 is greater than 2.4-1 and print TRUE if it's true :) 18:51
dholbach        <soyrochus> QUESTION: Probably for last; how to clean up a system after using pbuilder. Not just apt-get remove, but more importantly removing all remants of local repositories, build remnants etc.   18:52
dholbach        soyrochus: just deinstall the packages that we installed, remove ~/.pbuilderrc and /var/cache/pbuilder  18:52
dholbach        that should get you there       18:52
dholbach        but more practically: use a virtual machine     18:52
dholbach        https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases      18:52
dholbach        . o O { I didn't think that would be the most usef link today :-) }     18:53
dholbach        <playya> QUESTION: is it possibleto generate the debian/* file out of git TAGS, log,... and configure.ac?       18:53
dholbach        playya: yes, some people use distributed revision control for 1) the packaging itself and 2) packaging upstream snapshots from bzr/git/svn/cvs/etc      18:53
dholbach        <slacker_nl> QUESTION: regarding giving back: what is prefered, create a debian package and wait for Ubuntu to sync with debian or to create a ubuntu package directly? does debian sync with ubuntu?   18:54
dholbach        slacker_nl: that depends on the release schedule        18:54
dholbach        slacker_nl: if we're a week away from release and the fix is critical we might ask somebody from upstream for advice, but we won't block on them if we know that we need that fix       18:54
dholbach        https://wiki.ubuntu.com/Upstream has more info on our collaboration with upstreams      18:54
dholbach        ok... as last tips I'd like to give you:        18:55
dholbach        https://wiki.ubuntu.com/MOTU/GettingStarted     18:55
dholbach        because it links to all the important stuff     18:55
dholbach        https://wiki.ubuntu.com/Packaging/Training      18:55
dholbach        because of the session we'll have on thursday: general questions and answers about Ubuntu development, this place       18:56
dholbach        also please join us in #ubuntu-motu on irc.freenode.net 18:56
dholbach        and on the ubuntu-motu mailing list     18:56
dholbach        I really hope to see all of you during the great sessions we have this week     18:56
dholbach        and hope to see you all as Ubuntu contributors really really soon       18:56
dholbach        make me proud! :-)      18:57
huats   thanks dholbach !       18:57
dholbach        thanks everybody - have a great Ubuntu Developer Week!  18:57
alourie|vm      dholbach: excellent lecture!    18:57
* dinxter claps 18:57
msp301  thanks :)       18:57
* alourie|vm cheers     18:57
zubin71 claps   18:57
michele_        Thank you for all the fish :)   18:57
dholbach        3 minutes break until rickspencer3 and didrocks talk about quickly!     18:57
* didrocks waves at dholbach    18:57
zubin71 thankx a lot    18:57
[BIOS]Goo       :) thanx        18:57
bear24rw        thanks  18:57
trothigar       thank you       18:57
[BIOS]Goo       zubin :P        18:57
shrinivasan1    thanks a lot    18:57
jango6  thx     18:57
alourie|vm      thanks a lot    18:57
^arky^  thanks dholbach 18:57
aalcazar        thanks  18:57
penguin42       Thanks dholbach 18:57
soyrochus       great session; thanks   18:57
pothos  it was also good in german      18:57
=== bennabi_ is now known as bennabi
raji    thankx  18:58
* porthose claps        18:58
zubin71 [BIOS]Goo : haha... :-P 18:58
* sum-it thanks dholbach        18:58
pothos  but a little bit different      18:58
fromme  cheers  18:58
bennabi thanks a lot    18:58
[BIOS]Goo       That was Amazin :) gonna contribute tonite itself :P    18:58
david_  ty      18:58
bogor   dholbach, that was a awesome wonderful lecture  18:58
lau_    thx!    18:58
kboi    thanks dholbach 18:58
c_korn  thanks dholbach 18:58
Etilworg        #ubuntu-classroom-talk  18:58
dtrich_ thanks you dholbach     18:58
* RainCT hugs dholbach :)       18:58
* alourie|vm joins      18:58
* nixternal hugs dholbach       18:59
shobhit cheers!!        18:59
credobyte       dholbach: respect! thnx for the lecture :)      18:59
chiossif_       thanks a lot dholbach ! 18:59
* dholbach hugs you all back    18:59
arulalan        thank you very much  dholbach ! 18:59
dholbach        ok... I'll quieten this channel down again :-)  18:59
dholbach        ok everybody... let's kick of session number 2 (or 3 depending how you count it)        18:59