/srv/irclogs.ubuntu.com/2010/07/12/#ubuntu-classroom.txt

=== ext2 is now known as ext3
=== MTeck-ricer is now known as MTecknology
abhi_navtesting05:28
=== yofel_ is now known as yofel
ubuntu4menicktest08:35
maja87hi09:27
qwebirc45021hou09:32
kim02~/join #ubuntu-classroom10:15
malcolmciWhat timezone is the schedule represented in?11:15
abhi_navUTC11:15
abhi_navmalcolmci, ^^11:15
malcolmciSo the first session is in 8 hours, roughly?11:16
abhi_navmalcolmci, hmm11:17
malcolmci*6 hours11:17
abhi_navmay be11:17
malcolmciabhi_nav: seems so. thankyou :)11:17
abhi_navmalcolmci, :)11:18
rwwhttp://www.worldtimeserver.com/current_time_in_UTC.aspx11:18
umangOr run `date -d "4:00pm UTC"`11:19
malcolmciumang: very handy. didn't know about date - cheers11:20
umang:)11:20
rwwI did know about date, but didn't know it could do /that/. My days of confusing timezone fingermath are over \o/11:49
mindaugas-bui still trying to figure out the time...11:58
abhi_navmindaugas-bu, run date -u it shows current UTC then compare it with your time11:58
rwwmindaugas-bu: Ubuntu Developer Week starts at 1600 UTC. It's currently around 1100 UTC11:59
mindaugas-buyea. that means it starts in 7hours...11:59
rww5, actually11:59
mindaugas-buoh yeah11:59
mindaugas-bujust woke up11:59
mindaugas-bubrain no work :)12:00
=== Pendulum_ is now known as Pendulum
=== tass is now known as TassyJ
=== Scio is now known as Guest10856
=== pjarnahomzz is now known as pjarnahom
=== Sc10 is now known as Sc10_
=== Sc10_ is now known as Sc10
=== pjarnahom is now known as pjarnahomzz
lukejduncangoodmorning (if it's morning for you) jaeklChristian13:36
=== Scio is now known as Guest77928
=== draco is now known as Guest63101
=== johnsullivan is now known as John47
=== pjarnahomzz is now known as pjarnahom
=== AleC is now known as Guest28544
GreenDanceHi14:56
GreenDancewho will be holding todays event?14:57
rwwGreenDance: the presenters are listed on the timetable at https://wiki.ubuntu.com/UbuntuDeveloperWeek14:58
dholbachGreenDance: https://wiki.ubuntu.com/UbuntuDeveloperWeek has the names of session leaders14:58
GreenDanceThank You14:58
GreenDanceCan't be long now till it start's :)14:58
rwwGreenDance: two hours :)14:59
GreenDancerww: this will be my first attendance to an event :)15:00
volohu15:01
mindo_ltuu not the only one out there15:01
GreenDancerww: does the channel get muted while the host talks?15:01
mindo_ltui finaly find some free minutes to install irc and join this channel15:01
rwwGreenDance: See https://wiki.ubuntu.com/UbuntuDeveloperWeek/Rules . Sometimes with these things it's +m, sometimes people just don't speak.15:02
GreenDance:)15:03
ean5533jeybee444: Here's your test 216:05
=== charlie is now known as Guest74941
=== daker_ is now known as daker
=== nigelbabu is now known as Guest34092
GreenDance5 minutes to go :)16:58
chilicuil:O!16:58
YoBoYbonjour :)16:59
tripgodhola16:59
sarhanhello16:59
=== userdays6 is now known as marceau
dholbachWELCOME TO UBUNTU DEVELOPER WEEK!17:00
gnuovoBuongiorno. Hello! Where is ubuntu-classroom-it ?17:00
dholbachgnuovo: just join the channel17:00
dholbachOk, first things first:17:00
gnuovoi can't find it17:00
dholbachplease all join #ubuntu-classroom-chat17:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting Started With Development - Instructor: dholbach
dholbachand please just speak in there17:00
dholbachthis room is for session discussion only17:00
dholbachif you have questions, please ask them in #ubuntu-classroom-chat or any of the language-specific chat rooms listed at https://wiki.ubuntu.com/UbuntuDeveloperWeek17:01
dholbachwe have lots of helpers here and other interested folks who are very happy to help you out when you run into trouble17:01
dholbachif you ask a question about anything specific to the session, please write something like this in the channel:17:01
dholbachQUESTION: What is Daniel's dog called?17:02
dholbachdon't forget the "QUESTION:" so it stands out and is easier to see :)17:02
dholbachalright, with the organisational bits sorted out, let the fun begin :-D17:02
dholbachMy name is Daniel Holbach, I'm an Ubuntu Developer, have been hanging around here since 2004 and work for Canonical for a few years now17:03
dholbachI love the Ubuntu Developer community, so if you join at some stage, you'll make me very very happy17:03
dholbacheverything of importance is on https://wiki.ubuntu.com/UbuntuDeveloperWeek17:03
dholbachthat includes session details, the timetable, how to join in, a glossary and lots of other stuff17:04
dholbachI hope you'll have as great a time as I do, so let's kick this week of with "Getting Started with Ubuntu Development"17:04
dholbachin the first part of the session I'd like to practically help you get a couple of tools installed and an environment set up in which you can work on your first few bugs, etc :)17:04
dholbachin the second part we'll actively have a look at a few bugs and fix them together17:05
dholbachin those sessions I'd love to resolve as many questions as possible17:05
dholbachso if I don't make sense, my instructions don't work, or I missed something, please let me know17:05
dholbachand please: if you like the event: tell your friends and blog about it17:05
dholbachalright17:05
dholbachlet's get started :)17:05
=== draco is now known as Guest71922
dholbachfirst of all: please do me a favour and bookmark https://wiki.ubuntu.com/MOTU/GettingStarted because it links to all the important pages you'll need in your life17:06
dholbachone of them I'd like to highlight first: https://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases17:06
dholbachif you work on Ubuntu, it's important that you run the latest development release17:06
dholbachyou don't need to run it as your main system, but in a virtual machine, or a spare partition or a spare computer, that's cool17:06
dholbachwhy?17:06
dholbachsimple: because this way you'll refer to all the current development libraries, modules and stuff and you can test packages better17:07
dholbachalso do we want to fix all of our bugs first in the development release, then in other releases (if at all applicable, but more on that later)17:07
dholbachso if you don't have a virtual machine or chroot or anything set up, that's fine for now, but please do it later on17:07
dholbachthe link I mentioned above has good instructions on this17:08
dholbachok, so first of all please enable "Source code" and "universe" in System → Software Sources → Ubuntu Software17:08
dholbach(if you already have, you're fine :-))17:08
dholbach<tillux> QUESTION: wouldn't it make sense to do that now? because you need to download a lot of things/packages etc17:09
dholbachtillux: no, it'd take too much time17:09
dholbachtillux: and it's fine - you can just copy the instructions later on17:09
dholbach<umutuygar> QUESTION: What programming language r u going to be using?17:09
dholbachumutuygar: we'll see :-) I think for now I'll stick to packaging basics where we fix a couple of bugs17:10
dholbach<BeardyGnome13> QUESTION: will this be GNOME-centric?17:10
dholbachBeardyGnome13: no, not at all17:10
dholbachalright, next please17:10
dholbachsudo apt-get install --no-install-recommends bzr-builddeb ubuntu-dev-tools fakeroot build-essential gnupg pbuilder debhelper17:10
dholbachthis will give you a bunch of tools that are going to be useful generally, not just in these examples17:10
dholbachsomethinginteres: bzr-builddeb pulls in bzr which we'll use to get the source code for one or two examples17:11
dholbachubuntu-dev-tools pulls in devscripts which both are incredibly helpful at making repetitive packaging tasks easy17:11
dholbachfakeroot is needed by debuild (in devscripts) to mimic root privileges when installing files into a package17:12
dholbachbuild-essential pulls in lots of useful very basic build tools like gcc, make, etc17:12
dholbachgnupg is used to sign files in our case (uploads in the future)17:12
dholbachpbuilder is a build tool that builds source in a sane, clean and minimal environment it sets up itself17:12
dholbachdebhelper contains scripts that automate lots of the build process in a package17:13
dholbachlet's first set up our gpg key17:13
dholbachas I said above we use it to sign files for upload17:13
dholbachbut more generally it is used to sign and encrypt mails, files or text generally17:14
dholbachwe use it to indicate that WE were the last to touch a file and not somebody else17:14
dholbachthat ensures that only people who we know about get to upload packages17:14
dholbachplease run17:14
dholbach  gpg --gen-key17:14
dholbach(if you have no gpg key yet)17:14
dholbachsticking to the defaults is totally fine, for example don't you need a comment17:15
dholbachif you need more info on gpg keys, head to https://help.ubuntu.com/community/GnuPrivacyGuardHowto which talks about everything in more detail17:15
dholbachenter your name, email address and just stick to the default values for now17:15
dholbachit could be that gpg is still sitting there and waiting for more random data to generate your key - that's expected and fine17:16
dholbachjust open another terminal while we carry on, it'll finish on its own17:16
dholbachas I said: if you have a gpg key already, skip this step17:16
dholbachin the meantime we'll set up pbuilder17:16
dholbachplease open an editor and edit the file ~/.pbuilderrc (create if you don't have it yet)17:17
dholbachplease add the following content to the file17:17
dholbachCOMPONENTS="main universe multiverse restricted"17:17
dholbachand save it17:17
dholbachonce you're done, please run17:18
dholbach  sudo pbuilder create17:18
dholbachthis will also take some time, so let's chat a bit about pbuilder17:18
dholbachwhat does it do?17:18
dholbachit builds packages in a clean and minimal environment17:18
dholbachit keeps your system "clean" (so you don't install millions of build dependencies on your own system)17:18
dholbachit makes sure the package builds in a minimal, unmodified environment17:19
dholbachso you ensure that the package does not just build because you made lots of changes on your system, but the build is reproducable17:19
dholbachyou can update package lists (later on) with: sudo pbuilder update17:19
dholbachand to build packages you run: sudo pbuilder build package_version.dsc17:20
dholbach<BeardyGnome13> QUESTION: will the transcript of the classroom be available later?17:20
dholbach<leak-BebeChooCho> QUESTION: Will there be full log available?17:20
dholbachyes17:20
dholbachit will be linked from https://wiki.ubuntu.com/UbuntuDeveloperWeek17:20
dholbachfor the impatient: http://irclogs.ubuntu.com17:20
dholbachok, so how pbuilder works is like this: it first gets the minimal packages for a base system, stores them in a tarball, whenever you build a package it'll untar the base tarball, then install whatever your current build requires, then build it, then tear it all down again17:21
dholbachluckily it caches the packages :)17:21
dholbach<somethinginteres> QUESTION: To confirm, the install of pbuilder etc should be done -right now- on our main box?17:22
dholbachsomethinginteres: it helps as you can perform the examples on your own machine and have it set up later on too17:22
dholbachok, what's next while gpg and pbuilder are doing their thing17:22
dholbachwe tell some other tools who we are17:23
dholbachif you use the bash shell, which is the default, please edit ~/.bashrc17:23
dholbachand at the end of it, please add something like17:23
dholbachDEBFULLNAME="Daniel Holbach"17:23
dholbachDEBEMAIL="daniel.holbach@ubuntu.com"17:23
dholbachand save it17:23
dholbachPLEASE USE YOUR OWN NAME, THANKS :-)17:23
dholbach<abhi_nav> QUESTION: I am doing everything in my main day to day usable machine. is it ok? I dont want anything to ruine my cute ubuntu. :)17:24
dholbachabhi_nav: yes, it'll be fine17:24
dholbachonce you're done editing ~/.bashrc, please run   source ~/. bashrc  (it's only needed once)17:24
dholbach<tpw_rules87> QUESTION: Should these match the values we put into GPG?17:24
dholbachtpw_rules87: yes17:24
dholbachok, with this out of the way, the packaging tools will know you by your name and you don't need to enter it, for example if you do changelog entries, etc.17:25
dholbachare there any more questions up until now?17:25
dholbach<augdawg> QUESTION: where is the .bashrc file located?17:26
dholbachaugdawg:  ~/.bashrc17:26
dholbachso /home/<your user name>/.bashrc17:26
dholbach<abhi_nav> QUESTION do i need to write my that email which i was used to create gpgp key some months ago? now I have another email17:27
=== Ara is now known as Guest81953
dholbachabhi_nav: yes, it helps to have the same in there, but you can also add another user id to your gpg key later on17:27
dholbachrefer to https://help.ubuntu.com/community/GnuPrivacyGuardHowto for that17:27
dholbach<malcolmci> QUESTION: is the preferred arch for dev'ing AMD64 or i386 ?17:27
dholbachmalcolmci: every supported architecture of ubuntu will work fine17:27
dholbach<devildante> QUESTION: Will this session revolve around packaging bugs, or bugs in general?17:28
dholbachdevildante: I picked a few packaging bugs, but maybe we'll do something else later on, let's see :)17:28
dholbach<augdawg> QUESTION: what does the ~ mean?17:28
dholbachmy user name is "daniel"17:28
dholbachso ~ for me will be expanded to /home/daniel17:28
dholbach<tillux> QUESTION: for those running on lucid: should pbuilder have been triggered with "--distribution maverick" ?17:28
dholbachtillux: for now that's fine - if you set up a maverick chroot/virtual-machine/partition/machine later on, you can just repeat the steps17:29
dholbachfor this sessions it's irrelevant17:29
dholbach<BeardyGnome13> QUESTION: is my gpg key machine-specific?17:29
dholbachBeardyGnome13: no, you can just copy it to another machine17:29
dholbach<somethinginteres> QUESTION: PBuilder is downloading for Lucid, should it be downloading for Mavrick or Lucid?17:29
dholbachsomethinginteres: see what I just said to tillux above17:29
dholbach<theneoindian> QUESTION: i hate to ask , but will pbuilder create eat up my b/w .. i'm on a limited b/w connection ...17:29
dholbachtheneoindian: you better stop it then and repeat later on on a different connection17:29
dholbachalright17:30
dholbachthanks for the great questions17:30
dholbachI don't know how quick your pbuilders and gpgs are, so I'll keep talking a bit about ubuntu development and how it all works, we'll make some good use of pbuilder and your shiny new gpg key later on :)17:30
dholbachfirst things first: ubuntu is very special in how it's produced and how we all work17:31
dholbachas you know it comes out every 6 months17:31
dholbachthat means we have a tight release schedule and everything we do and work on is defined by that schedule17:31
dholbachcheck out https://wiki.ubuntu.com/MaverickReleaseSchedule for the current release schedule for maverick17:32
dholbachthe quick version: green means: lots is allowed here, red means: almost nothing is allowed here :)17:32
dholbachlong version:17:33
dholbach - toolchain is uploaded for the new release (gcc, binutils, libc, etc.), so the most basic build tools are there17:33
dholbach - new changes that happened in the meantime are synced or merged (more on that later on)17:33
dholbach - ubuntu developer summit (uds) happens where features are defined and talked about17:34
dholbach - up until debian import freeze we import source changes from debian semi-automatically17:34
dholbach - up until feature freeze we get new stuff in, work on features, try to make it all work17:34
dholbach - if a feature is not half-way there yet by feature freeze, it will likely get deferred to the next release17:34
dholbach - from feature freeze on you can see that lots of freezes are added throughout the weeks and you'll need more and more freeze exceptions for big changes17:35
dholbachthe focus is clearly: testing, testing, testing and fixing, fixing, fixing17:35
dholbachthe more obvious fixes are (a huge 20 million line patch is not obvious) :)17:35
dholbachthe more obvious the better17:35
dholbachthe same goes for fixes that are introduced AFTER the release17:36
dholbachwe just want to fix stuff in ...-updates if it's REALLY URGENT stuff with really simple fixes17:36
dholbachso as you can imagine, this means: introduce big changes early in the release cycle, so we can shake out problems over a longer time17:37
dholbach<devildante> dholbach: On the release schedule, I see a column named "Work Item Iteration"17:37
dholbachah yes17:37
dholbachif you check out http://people.canonical.com/~pitti/workitems/maverick/all-ubuntu-10.10.html you will see a graph and loads of text17:38
dholbachthis is a list of work items defined by specifications written at the ubuntu developer summit17:38
dholbachwork items are specific pieces of work that somebody at UDS decided to work on during the cycle17:39
dholbachit's more a tool for the managers at Canonical to keep their people busy17:39
dholbachI mean… make sure we're on track ;-)17:39
dholbach<marceau> QUESTION: (I've asked this during the Userday as well but am wondering as to your input) Do you feel that the fast release cycle of Ubuntu might be hindering it's progress? It seems a lot of time is spent in freezing and testing rather than working out new features.17:39
dholbachmarceau: not at all - I think it's a good thing - it forces us to stay focused and make sure that stuff gets done17:39
dholbachmarceau: if we don't get a feature done this cycle, it'll be next cycle17:40
dholbachalso it's important for everybody else who works with the project, as it's very easily predictable17:40
dholbachalright, enough cycle discussions :)17:40
dholbachanother thing I'm keen to talk about is: how to get stuff in17:41
dholbachwhen I spoke about gpg you noticed that I said that only people who "we know" get to upload packages directly17:41
dholbachthis means that as a new contributor you will have to work with sponsors who basically review your work and upload it for you17:41
=== userdays7 is now known as ferdinand
=== ferdinand is now known as ferdinand10
dholbachonce you did that a couple of times and they recognise you and your good work, you can apply for ubuntu developer membership17:42
dholbachand you can ask the people you've worked with for comments on your application17:42
dholbachit's really not very complicated, you basically set up a wiki page with your contributions, ask for comments and submit for an irc meeting of the developer membership board and you're done17:43
dholbachno need to learn a secret handshake, send me money or anything else17:43
dholbachit's contributions and good work that counts17:43
dholbachit helps if you're a team player :)17:43
dholbach<augdawg> QUESTION: what does an ubuntu developer membership get you?17:43
dholbachaugdawg: https://wiki.ubuntu.com/UbuntuDevelopers will tell you :)17:44
dholbachthe most obvious thing is that you can upload changes yourself17:44
dholbach<prayii> QUESTION: But will sending you money help the process? *wink*17:44
dholbachprayii: unfortunately I'm not on the Developer Membership Board :)17:44
dholbach<tech2077> QUESTION: so when your a member do you get the ability to fix bugs smewhat more indepedently, trying to word it right17:44
dholbachtech2077: it's a question of trust: once you demonstrated that you do good work, you can get upload rights17:44
dholbachtech2077: same goes for Ubuntu membership17:44
dholbachpeople get an @ubuntu.com email address when they can be recognised for their good work in Ubuntu17:45
dholbach<marceau> QUESTION: what is the expected knowledge level of people taking part in this week's sessions?17:45
dholbachmarceau: I guess it will differ from session to session: in this session it's good enough to be curious and have played with a terminal before and have a knack for making things work again :)17:45
dholbach<somethinginteres> QUESTION: is it the case that being an Ubuntu dev means being a programming vet or are there plenty of opportunity for n00bs to learn and contribute something..?17:45
dholbachthere are lots of opportunities to learn, which is why we're doing this whole thing :)17:46
dholbach<umang> QUESTION: If I'd like to contribute to both Ubuntu and Debian, which should I use?17:46
dholbachumang: you can contribute to Debian by using Ubuntu and collaborating with Debian developers17:46
dholbachumang: it totally depends on you what you use and what you work on17:46
dholbachalright17:46
dholbachlet's take more questions later on again17:46
dholbachmy fingers are hurting already17:46
dholbachjust kidding17:46
dholbachI assume pbuilder is done setting up, if not, do this later on17:47
dholbachapt-get source hello17:47
dholbach(it will download the source of the hello package)17:47
dholbachnow please run17:47
dholbachsudo pbuilder build hello_*.dsc17:47
dholbachthis will kick off the build in the form I explained earlier17:47
dholbach<abhi_nav> QUESTION: what .dsc stands for?17:48
dholbachabhi_nav: great question17:48
dholbachwhat "apt-get source" downloads is:17:48
dholbach(in most cases) an .orig.tar.gz file, which contains the source code of the software in a tarball released by the software authors17:49
dholbachin some cases a .diff.gz file with changes that were applied to make the package build in the Ubuntu/Debian way17:49
dholbachand a .dsc file with metadata like checksums and the like17:49
dholbachit's really not that important right now17:49
dholbachonce the build is done, you can check out the contents of /var/cache/pbuilder/result17:49
dholbachit will contain the built hello .deb file :)17:50
ClassBotThere are are 10 minutes remaining in the current session.17:50
dholbachok, let's deal with gpg (for those that have not set it up yet)17:50
dholbachif you run17:51
dholbach  gpg --fingerprint your.name@email.com17:51
dholbachit will print out something like:17:51
dholbachpub   1024D/059DD5EB 2007-09-2917:51
dholbach      Key fingerprint = 3E5C 0B3C 8987 79B9 A504  D7A5 463A E59D 059D D5EB17:51
dholbachuid                  Daniel Holbach <dh@mailempfang.de>17:51
dholbach...17:51
dholbachin the example above, my KEY ID is 059DD5EB17:51
dholbachplease run17:51
dholbach  gpg --send-keys <KEY ID>17:51
dholbachit will upload your _public_ portion of the key to keyservers which will sync the key among them17:52
dholbachonce that's done, you can tell Launchpad, which we use for all development about your shiny new gpg key17:52
dholbachhttps://launchpad.net/people/+me/+editpgpkeys17:52
dholbach(you need a Launchpad account for this)17:53
dholbachhttps://help.launchpad.net/YourAccount/ImportingYourPGPKey should help you if you run into any trouble17:53
dholbach<omid_> QUESTION: gpg: no keyserver known (use option --keyserver)17:53
dholbachtry:     gpg --keyserver keyserver.ubuntu.com --send-keys <KEY ID>17:54
dholbachalright, let's take a 5 minute break in which you can set up launchpad account and tell launchpad about your key, or get a cold beverage, or just relax for a bit17:55
dholbachin the next part of the session, we'll go and work on a few bugs together :)17:55
ClassBotThere are are 5 minutes remaining in the current session.17:55
dholbachAlright, we're back for part 2!18:00
dholbachtwo things I'd like to get out again are:18:00
dholbach - https://wiki.ubuntu.com/MOTU/GettingStarted (bookmark it, please)18:01
dholbach - #ubuntu-motu and #ubuntu-packaging on irc.freenode.net are great channels with great people who can help you answer your questions - you'll find lots of friends there18:01
dholbachdo we have any more questions about the session before or are we ready to roll and fix a few bugs?18:01
dholbach<augdawg> QUESTION: fingerprint authent. on lanchpad wont work18:02
dholbachplease follow https://help.launchpad.net/YourAccount/ImportingYourPGPKey very closely18:02
dholbachand try again18:02
dholbachif it doesn't work, talk to the fine people in #launchpad18:02
dholbachthey can sort you out18:02
dholbach<devildante> QUESTION: Will we fix real bugs?18:02
dholbachdevildante: YES18:02
dholbachready to go?18:02
dholbachROCK ON, that's how we like it!18:03
dholbachok, I'd like to introduce you to a very real sort of bugs, FBTFS bugs18:03
dholbachand with that a new acronym, FTBFS means Fails To Build From Source18:03
dholbachif a package doesn't build, it can be because all kinds of crazy things18:04
dholbachsometimes the source code is actually broken, sometimes it's because we lack the right version of some development library, etc etc etc18:04
dholbachit's something you'll probably struggle with a couple of times as an aspiring developer :)18:05
dholbachso let's head to http://qa.ubuntuwire.org/ftbfs/ - it shows a list of packages that FTBFS (yes it's used as a verb) right now18:05
dholbachlet's first have a look at http://launchpadlibrarian.net/50406598/buildlog_ubuntu-maverick-i386.pykickstart_1.74-1_FAILEDTOBUILD.txt.gz18:05
dholbachit's the compressed log of the build on launchpad18:05
dholbachso what you just saw when you ran pbuilder, just on lots of machines in Launchpad :)18:06
dholbachfirst part is the installation of necessary packages, last part is the deinstallation of packages18:06
dholbachso close to the end of the log you'll find this18:07
dholbach   dh_usrlocal18:07
dholbachdh_usrlocal: debian/python-pykickstart/usr/local/bin/ksvalidator is not a directory18:07
dholbachdh_usrlocal: debian/python-pykickstart/usr/local/bin/ksflatten is not a directory18:07
dholbachdh_usrlocal: debian/python-pykickstart/usr/local/bin/ksverdiff is not a directory18:07
dholbachrmdir: failed to remove `debian/python-pykickstart/usr/local/bin': Directory not empty18:07
dholbachdh_usrlocal: rmdir debian/python-pykickstart/usr/local/bin returned exit code 118:07
dholbachso something with files being installed in usr/local18:07
dholbachwe, as packagers, don't do usr/local - it's against the rules :)18:07
dholbachusr/local is just for stuff the user installs manually18:08
dholbachyou can find more about what goes where in the FHS (file hierarchy standard) and the debian policy document18:08
dholbachok, remember how I said "be a team player" and "have a knack for making things work again" a couple of minutes before?18:08
dholbachit's important that when you work as a developer, you bear in mind the bigger picture18:09
dholbach"upstreams" are the software authors of packages included in ubuntu, they often release their "upstream source" on their own website, it often gets included in debian, where patches are added to make the packages build the debian (and ubuntu) way, and we often inherit the code just like that18:10
dholbachthe more upstream and debian and ubuntu are in sync the better18:10
dholbachsometimes we make different decisions, but those should be for very good reasons18:10
dholbachbecause every deviation means additional work when merging changes later on again18:10
dholbachso, when I look at a bug like that I very often check "was it fixed in Debian or upstream already"?18:11
dholbachso the package is called pykickstart18:11
dholbachlet's check out https://launchpad.net/ubuntu/+source/pykickstart18:11
dholbachas you can see, it was introduced in maverick and is at version 1.74-1 right now18:11
dholbachon the Debian side, we see similar information at http://packages.debian.org/src:pykickstart18:12
=== pjarnahom is now known as pjarnahomzz
dholbachyou can see that 'sid', the Debian development version, has 1.75-1 already18:12
dholbachclick on the 'sid' link to get to http://packages.debian.org/source/sid/pykickstart18:12
=== GreySim is now known as Guest88
=== harry__ is now known as mihakriket
dholbachon the right side it has a link to the debian changelog18:12
dholbachhttp://packages.debian.org/changelogs/pool/main/p/pykickstart/pykickstart_1.75-1/changelog18:13
=== Guest88 is now known as UnidentifiedSim
dholbachso this is a regular debian/ubuntu changelog entry that states what in this package upload was changed18:13
dholbachas you can see, the maintainer wrote something about a new upstream version and18:13
dholbach"   * Update debian/rules: pass --buildsystem=python_distutils to avoid ftbfs."18:13
dholbach"avoid ftbfs" is like music to my ears - to yours too?18:13
dholbachI'd say we get the Debian source and try to build it and see if that works18:14
dholbachif you go back to http://packages.debian.org/source/sid/pykickstart - you'll see a link to a .dsc file18:14
dholbachhttp://ftp.de.debian.org/debian/pool/main/p/pykickstart/pykickstart_1.75-1.dsc18:14
dholbachwhen we installed the devscripts package earlier, we got a tool called dget18:14
dholbachwe'll use that now to download the source from debian18:15
dholbachdget -xu http://ftp.de.debian.org/debian/pool/main/p/pykickstart/pykickstart_1.75-1.dsc18:15
dholbachto build it, you know already what to do:18:15
dholbach  sudo pbuilder build pykickstart_1.75-1.dsc18:15
dholbachthis will take a little bit now, so let's all try to be patient and see how it works out ;-)18:16
dholbachquestions up until now?18:16
dholbach<Noz3001> QUESTION: Why -"xu"?18:16
dholbachNoz3001: without -x dget will not unpack the source (you're right, we could have ignored that - usually it's very helpful to get the source unpacked immediately to dive right into it)18:17
dholbachNoz3001: without -u dget will complain about a missing gpg key, because it can't confirm the identity of the uploader (you probably won't have the debian maintainer's public key in your keyring)18:17
dholbach<umutuygar> QUESTION: umut@umut-laptop:~/code/ubuntu-classroom$ sudo pbuilder build pykickstart_1.75.dsc18:18
dholbachumutuygar: did you execute the dget command above in the same directory?18:18
dholbach<ElPasmo> QUESTION: How you get a sponsor?18:18
dholbachElPasmo: we'll get to that in a bit, https://wiki.ubuntu.com/SponsorhipProcess if you're impatient :)18:18
dholbach<chilicuil> QUESTION: can I run 2 or more pbuilder instances at the same time?18:18
dholbachchilicuil: yes, you can use pbuilder-dist (in the ubuntu-dev-tools package) for that18:19
dholbachchilicuil: also there's https://wiki.ubuntu.com/PbuilderHowto18:19
dholbach<penguin42> QUESTION: We're past the point of pulling in debian packages for Maverick aren't we? But if a package ftbfs and the debian one fixes it what happens?18:19
dholbachpenguin42: I'll get to that in a sec18:19
dholbach<Krysis> QUESTION: how to add gpg into keyring?18:19
dholbachKrysis: gpg --recv-keys <KEY ID>18:20
dholbach<umang> QUESTION: What's the easiest way to find a nice diff of the two source packages (1.74-1 from ubuntu and 1.75-1 from debian)?18:20
dholbachnice question18:20
dholbachyou'd   apt-get source pykickstart   to get the ubuntu version too18:20
dholbachthen run18:20
dholbachdebdiff pykickstart_1.74-1.dsc pykickstart_1.75-1.dsc18:21
dholbach(probably pipe it through less, filterdiff, etc afterwards)18:21
dholbachrww just corrected me, the link earlier should have been https://wiki.ubuntu.com/SponsorshipProcess18:21
=== M_Kay_ is now known as M_Kay
dholbachalright, pykickstart 1.75-1 from Debian succeeded to build on my end18:22
dholbachso what do we do18:22
dholbachlet me explain a bit how Ubuntu and Debian fit in to the big picture of the release schedule I described earlier18:22
dholbachup until Debian Import Freeze, we automatically sync source packages from Debian and build them in Launchpad, if:18:23
dholbach 1. the package in Ubuntu is not modified (usually obvious by reading the version number, 1.74-1 vs. 1.74-1ubuntu1)18:24
dholbach 2. if the package is in Debian main (so free software)18:24
dholbachso how do we live in this world?18:25
dholbachif we introduce a change in Ubuntu, say we go from 1.74-1 to 1.74-1ubuntu118:26
dholbachthen Debian introduces 1.75-118:26
dholbachwe need to decide if we can overwrite our changes (we sync the source)18:26
dholbachor if we need to merge the source manually18:27
dholbachit's very tempting to say "ha, no we can sync from Debian"18:27
dholbachbut it's INCREDIBLY IMPORTANT to READ THE DIFF18:27
dholbachjust reading the changelog is not good enough18:27
dholbachREAD THE DIFF18:27
dholbachand TEST18:27
dholbach _____ _____ ____ _____ _18:27
dholbach|_   _| ____/ ___|_   _| |18:27
dholbach  | | |  _| \___ \ | | | |18:27
dholbach  | | | |___ ___) || | |_|18:27
dholbach  |_| |_____|____/ |_| (_)18:27
dholbach                          18:27
dholbach:-)18:27
dholbach<malcolmci> dholbach: who decides if we should sync with upstream debian or keep ubuntu modification, for example ?18:28
dholbachmalcolmci: that's the best possible question18:29
dholbachthat's the responsibility you have as a developer18:29
dholbachyou need to make sure in the best way possible that the actual change can be implemented in the way you suggested18:29
dholbachif you're unsure, you can ask lots of other fine people in #ubuntu-devel or #ubuntu-motu or #ubuntu-packaging18:30
dholbachalso the sponsoring process (somebody reviews your code or suggestion first) helps with that in the beginning18:30
dholbachit's just important that you do your best in making sure and testing18:30
dholbach<malcolmci> dholbach: ah, so the package maintainer decides?18:30
dholbachmalcolmci: in Ubuntu we don't have dedicated package maintainers, so we maintain the packages as a big team18:31
dholbach<mickstephenson52> QUESTION: would the easiest way to test be toi just install the deb file from debian and see if it works?18:31
dholbachmickstephenson52: thanks for getting me back on track :)18:31
dholbachso, we have 1.74-1 in maverick18:31
dholbachand we have 1.75-1 in Debian sid18:31
dholbachwhich means that we did not introduce changes in Ubuntu, so we're sure that we don't have to merge things manually18:31
dholbachwe just verified that the package builds again in the new version18:32
dholbachand we're still before feature freeze in maverick, so requesting a sync (https://wiki.ubuntu.com/SyncRequestProcess) should be fine, once we're sufficiently sure it's all good18:32
dholbachinstalling the .deb and see if it work is a great way18:32
dholbach<AudioFranky> QUESTION: I would expect that for very essential packages, like glibc, there is more than a single person to decide whether to keep or update?18:32
dholbachAudioFranky: yes, those decisions are made at UDS in a bigger group and usually there's agreement between people in Ubuntu and Debian who work on the package18:33
dholbachwhen I said that "we don't have dedicated maintainers" I meant that we have no "big maintainer lock" (somebody OWNS the package), but indeed we have people with a special area of expertise18:34
dholbachand that's respected18:34
dholbachalright, the path ahead seems clear: test the package, make sure it's alright, then engage with the sync request process18:34
dholbachhere's some more food for though, you can try it out yourself:18:35
dholbachhttp://launchpadlibrarian.net/50981070/buildlog_ubuntu-maverick-i386.xdotool_1:2.20100602.2915-1_FAILEDTOBUILD.txt.gz18:35
dholbachhttp://launchpadlibrarian.net/50411959/buildlog_ubuntu-maverick-i386.weave_1.3-2_FAILEDTOBUILD.txt.gz18:35
dholbachbut as I said: be careful and talk to people on #ubuntu-motu or #ubuntu-packaging if you're unsure18:35
dholbachbeing unsure is a good thing and knowing when to ask a sign of taking responsibility18:35
dholbachand that's valued18:35
dholbachalright, now I have another interesting case for us:18:36
dholbachhttp://launchpadlibrarian.net/49981844/buildlog_ubuntu-maverick-i386.xpad_4.0-5_MANUALDEPWAIT.txt.gz18:36
dholbachthe xpad package fails to build too18:36
dholbachtowards the bottom of the log you can see this:18:36
dholbachlibmagickcore-extra: missing18:36
dholbachlibmagickcore-extra: does not exist18:36
dholbachso this means that one of the packages that is specified as a requirement to build the xpad package is not there18:37
dholbachlet's get the source code and let's try to fix it18:37
dholbachthis time we'll do it differently:18:38
dholbach  bzr branch lp:ubuntu/xpad18:38
dholbachthis will not get us the source package (remember the .dsc, .orig.tar.gz and .diff.gz file) but a bazaar branch (revision control system) with all revisions in Ubuntu and Debian18:39
dholbachthis will take a little bit, but is worth it18:39
dholbachin the case of source packages you just get one revision, in a format that works with all the debian/ubuntu build tools, but we're slowly moving towards a world where we work with upstreams and debian and distributed version control is just what's easier to use18:41
dholbachI'd like to show you how easy to use it is18:41
dholbachalright, once bzr is done, run18:41
dholbach  cd xpad18:41
dholbachand18:41
dholbach  less debian/control18:41
dholbachlet me explain a bit what this is about18:42
dholbachdebian/control contains information about the source package and the resulting .deb (binary) packages18:42
dholbachin this case it's relatively simple, let's go through the source stanza first18:43
dholbachSource: specifies the nam18:43
dholbache18:43
dholbachSection and Priority are used by the package management to have a bit of metadata18:43
dholbachMaintainer is the maintainer in Debian18:43
dholbachBuild-Depends is just what we're looking for18:43
dholbachthis is the minimal list of packages necessary to build the package18:43
dholbachStandards-Version is the version of the debian policy this complies with and homepage just more metadata18:44
dholbachthis is all additional info regarding the source18:44
dholbachthe resulting xpad package is defined in the next stanza18:45
dholbachPackage: is the package name18:45
dholbach"Architecture: any" means that the package needs to get built on every individual architecture available separately18:45
dholbachsomethinginteres: i386, amd64, powerpc, sparc, etc. etc.18:45
dholbachsorry somethinginteres - this was autocompleted, I meant "so"18:46
dholbachif you just put a bunch of python scripts into a package, or just some documentation that is architecture independent, you use "Architecture: all"18:46
dholbachDepends: is the list of dependencies of the resulting package18:47
dholbachthese are all auto-generated18:47
dholbachshlibs:Depends is the list of library packages that contain libraries the binaries in the deb packages are linked against18:47
dholbachmisc:Depends a few additional Depends that might be useful18:47
dholbachall of these complicated computations are done by scripts in the debhelper package18:48
dholbachDescription too is used by the package management tools18:48
dholbachso debian/control is a file that contains lots of the definition of the package itself18:48
dholbachyou can check out the other files in debian/ on your own later on, https://wiki.ubuntu.com/PackagingGuide will help you with that18:49
dholbach<bcurtiswx> QUESTION: will we ever mess with the bottom section?18:49
dholbachbcurtiswx: we could, for example if a user tells us that there's a dependency missing or there's a typo in the package description or something18:49
dholbachso to avoid confusion: this example will just work in maverick, it's a maverick build failure18:51
dholbachif you don't run maverick right now, that's no big deal, just trust me blindly then ;-)18:51
dholbachhttp://launchpadlibrarian.net/49981844/buildlog_ubuntu-maverick-i386.xpad_4.0-5_MANUALDEPWAIT.txt.gz mentioned that libmagickcore-extra was missing18:52
dholbachapt-cache search libmagickcore-extra (on maverick) will reveal that it's now called libmagickcore3-extra18:52
dholbach<BeardyGnome13> QUESTION: i guess it's best to run maverick on a separate machine / VM then?18:53
dholbachhttps://wiki.ubuntu.com/UbuntuDevelopment/UsingDevelopmentReleases has all that info18:53
dholbachok, so we just change libmagickcore-extra to libmagickcore3-extra in debian/control18:53
dholbachand save the file18:53
dholbachif you exit your editor and run    bzr diff    you'll see your change18:54
dholbachnow please run    update-maintainer    (script from ubuntu-dev-tools) to update the maintainer field which we were asked to do by our friends at debian to indicate that we made changes in the package)18:54
dholbach(sorry folks need to speed up a lil bit)18:55
dholbachnow please run   dch -i18:55
dholbachalso a devscripts tool which deals with all things related to debian/changelog18:55
dholbachit will automatically fill out some stuff for you18:56
dholbachyou just need to enter a descriptive message for your changes18:56
dholbachI'd go for something like18:56
dholbach  * debian/control: updated build-depends from libmagickcore-extra to libmagickcore3-extra to fix FTBFS.18:57
dholbach(and wrap at 80 chars)18:57
dholbachit's important to note what you changed in which files18:57
dholbachand the more explicit you are about your changes, the easier it will be for you and others later on in understanding what you did18:57
dholbachif you close a bug with your fix, please add   (LP: #123456)18:58
dholbachthis special syntax will automatically close the bug once it gets merged in18:58
dholbachnow please save the file18:58
dholbachand run18:58
dholbach   bzr bd -- -S -us -uc18:58
dholbachthis will build the source package from the branch18:58
dholbach(-S -us -uc are arguments for debuild which is used internally)18:59
dholbachthen you move out of the directory and pbuilder the generated source package18:59
dholbachto test if that works now18:59
dholbachthis will naturally take a bit18:59
dholbachonce you're happy with all the  C A R E F U L   tests you did18:59
dholbachyou can go back into the branch18:59
dholbachrun debcommit18:59
dholbachand then push the changes to launchpad and request a merge19:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Widgetcraft - Instructor: apachelogger
dholbachhttps://wiki.ubuntu.com/Bugs/HowToFix explains the last bits19:00
dholbachsorry for running out of time19:00
dholbachI hope you enjoyed the session19:00
dholbachplease check out https://wiki.ubuntu.com/MOTU/GettingStarted19:01
dholbachand join #ubuntu-motu and #ubuntu-packaging19:01
dholbachnext up is Mr apachelogger, who will talk about Widgetcraft19:01
dholbachhave a great day19:01
dholbachand ROCK ON!19:01
* apachelogger applauds and thanks dholbach for a wonderful session19:01
* dholbach hugs apachelogger19:01
* apachelogger hugs the whole channel :D19:01
apacheloggerbrillian news everyone!19:01
dholbachas you can see, hugs are a vital ingredient of making Ubuntu ROCK :)19:01
dholbachwith that I leave the stage now19:01
apacheloggerwelcome to an intro to widgetcraft. also known as the art of creating plasma widgets.19:02
apacheloggerthis talk is backed up by a set of slides that can be followed at http://docs.google.com/present/view?id=ajk6csn6c2vn_53fj6c47f619:02
apacheloggermy name is Harald Sitter, and I wish you a pleasant journey :)19:02
apacheloggerfirst off I would like to direct your attention to important sites that will help a lot with writing plasmoids.19:03
apacheloggerGeneral tutorials on JavaScript Plasma programming are avilailable at: http://techbase.kde.org/Development/Tutorials/Plasma#Plasma_Programming_with_JavaScript19:03
apacheloggerInformation on Plasma packages: http://techbase.kde.org/Projects/Plasma/Package19:03
apachelogger And a rather simplified JavaScript API: http://techbase.kde.org/Development/Tutorials/Plasma/JavaScript/API19:03
apacheloggerin general I probably should mention that the kde techbase is a wonderful resource for KDE programming topics of all kinds with a vast amount of tutorials19:04
apacheloggerso, lets get started.19:04
apacheloggerfirst let me quickly get some terms straight.19:04
apachelogger-> Plasma <-19:04
apacheloggeris the technology underlying the KDE workspace.19:04
apacheloggerit is available in multiple different versions. on a PC you will have plasma-desktop, on a netbook possibly plasma-netbook and in the future you will be able to run plasma-mobile on your mobile device (e.g. a smart phone)19:05
apachelogger\o/ yay for plasma on my mobile ;)19:05
apacheloggereven though those incarnations of plasma might look different, they all root in teh same base technology and follow the same principles19:06
apacheloggernext up is -> plasmoid <-19:06
apacheloggerI have already used that term. Plasmoids are sort of native Plasma Widgets.19:06
apacheloggerThere are also non-native widgets ;)19:06
apacheloggerFor example one can run Mac Widgets or Google Gadgets inside Plasma as well.19:06
apacheloggerIn this talk I will show you how to write Plasmoids in JavaScript using 2 (well, technically 3) example Plasmoids.19:07
apacheloggerand yes!!!! we will be able to pull this off in the limited time that we got.19:07
apacheloggerWe just need to believe in it :-D19:07
apachelogger[endofboringbits]19:07
apacheloggerTime to move on to the interesting parts ...19:07
apacheloggerlet me show you just how difficult it is to write a plasmoid.19:08
apacheloggeras with every programming introduction I will start with a "Hello" example.19:08
apacheloggerif you do not want to write the stuff yourself, you can find a finsihed example at http://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor/19:08
apacheloggeras one might judge from the name this hello plasmoid is apachelogger branded and featuring doctor who awesomeness ;)19:08
apacheloggerfirst we need to get the structure sorted out a bit - no fun without the politics :/19:09
apacheloggerI will however try to limit this to the bare minimum19:09
apacheloggerso19:09
apacheloggerAny plasmoid *should* at least contain two files.19:09
apacheloggerOne for the "politics" (giving the plasmoid a name and icon) and one for the actual code.19:09
apacheloggerspecficis are in detail explained in the KDE techbase19:10
apachelogger(if anyone really cares :P)19:10
apacheloggerfor now you can just trust me and execute the following in a directory of your choice19:10
apacheloggermkdir -p hello-doctor/contents/code/19:10
apacheloggertouch hello-doctor/metadata.desktop19:10
apacheloggertouch hello-doctor/contents/code/main.js19:10
apacheloggerthese 3 lines will create the most essential directories and the 2 files I was talking about19:10
apacheloggerNow for the adding of content.19:11
apachelogger(please excuse if I am rushing this a bit, but it is rather boring ;))19:11
apacheloggeropen hello-doctor/metadata.desktop in an editor of your choice (be it vi or nano ;)) and add the information seen at http://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor/metadata.desktop19:11
apacheloggermost of those files should be pretty self-explaining and are documented in the techbase19:12
apacheloggershould you have a question about one of those - please ask19:12
apacheloggerthe only thin worth mentioning is that the field X-KDE-PluginInfo-Name *must* be rather unique19:12
apacheloggerQUESTION: What does X-KDE-PluginInfo-EnabledByDefault=true do?19:13
apacheloggerno one knows that ;)19:13
apacheloggerall the information about that field is that you do not need to change it19:13
* apachelogger also did not bother to look its function up in the source code....19:13
apacheloggeronce you have made the metadata.desktop suite your needs, save it and let us move on to ... the code :D19:14
apacheloggerthe code goes to hello-doctor/contents/code/main.js (that is actually changable via the desktop file in case you haven't noticed)19:14
apacheloggernow behold!19:14
apacheloggerlayout = new LinearLayout(plasmoid);19:14
apacheloggerlabel = new Label(plasmoid);19:14
apacheloggerlayout.addItem(label);19:14
apacheloggerlabel.text = 'Hello Doctor!';19:14
apacheloggerYes, four lines of code :P19:15
apacheloggerI am not kidding you :P19:15
apacheloggerfirst we create a layout that belongs to your plasmoid and call it "layout", then we create a label that also belongs to our plasmoid and call it "label".19:15
apacheloggerwe add the label and to our layout and give it a text19:16
apacheloggerand, well, that is it19:16
apacheloggerand since it just got mentioned that this is much easier than C++19:16
apacheloggerindeed it is19:16
apacheloggeralso it is available by default in plasma, so it is as protable as C++19:17
apacheloggerin the end you should choose a javascript code over C++ for various reasons, if you do not need any of the C++ advantages :)19:17
apacheloggerthereofre I am also talking about javascript :)19:17
apacheloggeranyhow19:17
apacheloggerlets view the plasmoid19:17
apacheloggerplasmoidviewer ./hello-doctor19:17
apacheloggerusually this should give you our new plasmoid, if it does not  -> http://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor.png19:18
apacheloggerCongratulations, you just have made your first Plasmoid!19:18
apacheloggerplasmoidviewer is a very useful tool for in-development debugging19:18
apacheloggernow that we have a plasmoid, it would be very nice to have it packaged, so we can install it in plasma and share it with others19:19
apacheloggerfor general purpose widget management plasma comes with a tool called plasmapkg19:19
apacheloggerusing plasmapkg -i you can install plasmoids to use them in plasma19:20
apacheloggerpackaging them is no magic either19:20
apacheloggerjust create a zip ;)19:20
apacheloggercd hello-doctor19:20
apacheloggerzip -r ../hello-doctor.zip .19:20
apacheloggermv ../hello-doctor.zip ../hello-doctor.plasmoid19:20
apacheloggerthat will give you a nice plasmoid package to use with plasmapkg19:21
apacheloggerand share with your friends19:21
apacheloggershadeslayer: mind the period in ./hello-doctor/19:21
apacheloggerbelieve it or not, you now know almost everything19:22
apacheloggerwell, the important stuff anyway, lets digg a bit into development19:22
apacheloggerthat we will do with my incredibly awesome superior sweet and unicorny "trollface" plasmoid19:22
apacheloggeryou can either create the basic infrastructure using the commands I gave you for hello-doctor, or just recycle my template http://people.ubuntu.com/~apachelogger/udw/10.07/trollface-template/19:23
apacheloggerremember to make metadata.desktop suite your needs, if you want19:23
apacheloggerotherwise lets dive right into trollface/contents/code/main.js19:23
apacheloggerthe template I have provides no more than the code we used for hello-doctor19:24
apacheloggerbuilding up on that we will make superior awesomeness now19:24
apacheloggerlet me think19:24
apacheloggerhm19:24
apacheloggerhow about we add a button to that ;)19:24
apacheloggerone to push ;)19:24
apacheloggerterribly difficult cod eagain...19:25
apacheloggerbutton = new PushButton(plasmoid);19:25
apacheloggerlayout.addItem(button);19:25
apacheloggerbutton.text = 'Push me!!!';19:25
apacheloggervery similar to the label code but with a pushbuton now... just add that at the bottom of your main.js and you should get a button now19:25
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor-1.png19:25
apacheloggerlooks fancy, eh? ;)19:25
apacheloggeryeah, I know, not really, but we will get there19:26
apacheloggeroh hold on!19:26
apacheloggeroh dear, oh dear! That does not look right at all :/19:26
apacheloggerI do not know about you, but I really wanted the button under the label19:26
apacheloggernot next to it19:26
apacheloggerwell, this gives me reason to talk a bit about layouting19:26
apachelogger^ see what I did there19:26
apacheloggerevil as I am I made myself a topic to talk about :D19:27
apacheloggerso, our layout is obviously there to help with placement of our items19:27
apacheloggerfor that different layouts can use different rules19:27
apacheloggerour simple linearlayout supports to ways to layout items19:27
apacheloggerby vertical or horizontal orientation19:27
apacheloggersuffice to say, the default is horizontal, hence our button is right of the label19:28
apacheloggerto change that we add19:28
apacheloggerlayout.orientation = QtVertical;19:28
apacheloggernow everything should be as intent by the author19:28
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor-2.png19:28
apacheloggerbe careful though!19:29
apacheloggerwhen just adding items ot a layout (i.e. using the addItem() function) they will be listed in order of adding!19:29
apacheloggerone should keep that in mind for later ;)19:29
apacheloggercurrently our button does not do much though :(19:29
apacheloggera bit sad.19:29
apacheloggerlet's add some super feature.19:30
apacheloggerfor this we will introduce a new javascript function. this is done using the function keyword. like this:19:30
apacheloggerfunction showTroll()19:30
apachelogger{19:30
apachelogger    label.visible = false;19:30
apachelogger}19:30
apacheloggerQUESTION: Can we resize that button?19:30
apacheloggeryes, but a bit later19:30
apacheloggerQUESTION: im getting http://imagebin.ca/view/RuCn71.html , what have i done wrong?19:30
apacheloggerbroken plasma most likely, what you are seeing here is that for some reason the plasma theme is not rendering properly, which is mostly an indication for running usntable pre-release software :P19:31
apacheloggerso essenntially the items are there, they are just not drawn properly, goes a bit out of the scope of widgetcraft though :)19:31
apacheloggerback to my new function showTroll19:32
apacheloggerit does not do much19:32
apacheloggerbut what it does, man that is epic19:32
apacheloggerit makes the label invisible19:32
apacheloggerhow scary is that!!!19:32
apacheloggernow if you add showTroll(); to the bottom of your script the label will never be visible, not a lot of sense ... I just mention that to make you understand what a function is ;)19:33
apacheloggerwhat would make a lot more sens is if we could hook up our button with that function19:33
apacheloggerwell *surprise* we can ;)19:33
apacheloggerQt has a system called signal and slots, it basically allows us to connect certain events of objects (signals) to functions that will carry out to an effect (slot).19:34
apacheloggerSuppose my home is a plasmoid.19:34
apacheloggerNow someone rings the bell, this will trigger that I go to the door and open it.19:34
apacheloggerIn Qt terms this means: someone emits the singal bellRung, this triggers my slot openDoor, and that slot will have as resulting situation that I am standing at my open door19:35
apacheloggerI hope this clears things up that are going to happen next ... if not, poke devildante he knows all about signals and slots  ;)19:35
apacheloggerso19:35
apacheloggerlike my home has a bell that can be rung, our plasmoid has a button...19:35
apacheloggerand well, buttons can be clicked... ;)19:36
apacheloggernw we just connect that clicking to the function19:36
apacheloggerbutton.clicked.connect(showTroll);19:36
apacheloggeryou can add this anywhere below the creation of the butotn19:36
apacheloggerif you run the code now and click the button it will hide the label!19:36
apacheloggerso magic :)19:36
apacheloggerany questions thus far?19:37
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor-2-2.png19:37
apacheloggerthe careful observer will notice that there is still space occupied by our label19:37
apacheloggerthis is because we have just made it invisible19:38
apacheloggerit is still there19:38
apacheloggerin order to reuse the space we just remove it from the layout19:39
apacheloggerfunction showTroll()19:39
apachelogger{19:39
apachelogger    label.visible = false;19:39
apachelogger    layout.removeItem(label);19:39
apachelogger}19:39
apacheloggerusing this improved showTroll fucntion the button sould now not only hide the label but also reuse its space19:39
apacheloggernow19:39
apacheloggerwhile we are at it, let us also invert the logic19:40
apacheloggerwe probably want our label back at some point19:40
apacheloggerfunction hideTroll()19:40
apachelogger{19:40
apachelogger    layout.insertItem(0, label);19:40
apachelogger    label.visible = true;19:40
apachelogger}19:40
apacheloggerso now we have showTroll and hideTroll19:40
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor-3.png19:40
apacheloggerwhat we can do now, is hooking up our button with the hideTroll too19:41
apacheloggerso for that we need to think a bit19:41
apacheloggerfirst we connect to showTroll19:41
apacheloggerin showTroll we hence need to disconnect that again and connect to hideTroll19:41
apacheloggervice versa in hideTroll19:42
apacheloggerbutton.clicked.disconnect(showTroll);19:42
apacheloggerbutton.clicked.connect(hideTroll);19:42
apacheloggerfor showTroll19:42
apacheloggerand19:42
apacheloggerbutton.clicked.disconnect(hideTroll);19:42
apacheloggerbutton.clicked.connect(showTroll);19:42
apacheloggerfor hideTroll19:42
apacheloggerBrilliant!19:42
apacheloggerQUESTION: Why is the label a troll? :-)19:42
apacheloggerthe troll is not yet there, we will get there soon enough19:42
apacheloggerin fact19:43
apacheloggerlets do it now ;)19:43
apacheloggerlet me shed some light on why this is called trollface...19:43
apacheloggerjust showing and hidign a text label is a bit boring, and way too ungraphical tool!19:43
apacheloggerso let us add a picture into the mix19:43
apacheloggeroh I don't know, maybe http://people.ubuntu.com/~apachelogger/udw/10.07/trollface/contents/images/troll.png19:43
apachelogger;)19:43
apacheloggerOh why, lets call it "troll", shall we? (you see where I am getting at here ;)). The code should be pretty clear:19:43
apacheloggertroll = new Label(plasmoid);19:44
apacheloggertroll.image = plasmoid.file("images", "troll.png");19:44
apacheloggerlayout.addItem(troll);19:44
apacheloggerNow please run your plasmoid and see what uglyness we have produced....19:44
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor-4.png19:44
apacheloggerewwww!!!!19:44
apacheloggerThe Label is too big, the button is too big and the image is too small! Great job apachelogger!19:44
apacheloggerOf course this was intentionally so I can tell you about the beauty of QSizePolicies ;)19:44
apacheloggerBy default a layout will try to use as much space as is possible and divert this space equally between its items. So while label and button are too small, they are indeed the same size as the image and vice versa.19:45
apacheloggerThis is however not desired in our situation, so we tell the button and image to follow a different policy than "use whatever you get from the layout".19:45
apacheloggerFor that we will use special leet magic called QSizePolicy. For specifics please take a look at the Qt documentation. In our example we will only need 2 policies:19:45
apachelogger* maximum - try to occupy as much space as possible19:45
apachelogger* fixed - magically lock to appropriate default value19:45
apacheloggerWe can apply those to our button...19:45
apacheloggerbutton.sizePolicy = QSizePolicy(QSizePolicyMaximum, QSizePolicyFixed);19:46
apacheloggerWhat we are telling the button is that it shall use as much horizontal space as possible but use a decent unchangable default value for its vertical size.19:46
apacheloggerFor our troll we will use max:max because we want the whole image shown. Using max:max the troll will try to use as much horizontal and as much vertical space as it can get.19:46
apacheloggertroll.sizePolicy = QSizePolicy(QSizePolicyMaximum, QSizePolicyMaximum);19:46
apachelogger(In consequence the label will have to live on left overs, which is just fine for this example)19:47
apacheloggerTrying this you should get a decent picture now!19:47
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/hello-doctor-4-1.png19:47
apacheloggerGood news everyone!19:47
apacheloggerWe have all the basic components in place and can stick them together to get some more usefulness out of it ;-)19:47
apacheloggerHow about we do not show the troll by default, but only if the user presses the button?19:48
apacheloggerHow about we do show the label only if the troll is not shown?19:48
apacheloggerSounds like a plan, a plan that will require 4 lines of code (somehow with me a lot of things only require 4 lines of code, in case you noticed ;-)).19:48
apacheloggershadeslayer: you are missing the initial connection19:48
apachelogger....So, to showTroll we add:19:48
apacheloggerlayout.insertItem(0, troll);19:48
apacheloggertroll.visible = true;19:48
apacheloggerand to hideTroll:19:49
apacheloggertroll.visible = false;19:49
apacheloggerlayout.removeItem(troll);19:49
apacheloggerThey should look familiar to you by now and again are just inverted.19:49
apacheloggerIf you try this now, then you will notice that I was not completely, honest, 4 lines of code do not quite cut it.19:49
apacheloggerWe still need to remove one and add one (so in the end we are at +5 -1 = 4 :-P).19:49
apacheloggerAs we do not want the troll shown when the label is shown, we must change the initial state of our troll.19:49
apacheloggerInstead of adding it to the layout (which is now handled by showTroll) we will set its initial visiblity to false (which also gets changed in showTroll).19:50
apacheloggerlayout.addItem(troll);19:50
apacheloggerbecomes19:50
apacheloggertroll.visible = false;19:50
apacheloggerAnd from this point on we have a proper Trollface!19:50
apacheloggerHooray \o/19:50
apacheloggerThat leaves us with 10 minutes for fun stuff ^^19:50
ClassBotThere are are 10 minutes remaining in the current session.19:50
apacheloggersee ;)19:50
apacheloggerWell, this was all very nice, but really, still a bit boring.19:51
apacheloggerPlasma can do so much more.  In fact so much that I do not have time to properly show you :(19:51
apacheloggerBut let us take animations for example ;)19:51
apacheloggerHow about making our troll rotate. Good idea, isn't it? :D19:51
apacheloggerFirst lets get a rotate object we can work with:19:51
apacheloggerrotate = animation("Rotate");19:51
apacheloggeroutside a function please!19:52
apacheloggerI recommend adding this towards the end of your code.19:52
apacheloggerNow we have a rotate animation. But we still need to tweak it a bit to our needs.19:52
apacheloggerrotate.targetWidget = troll;19:52
apacheloggerNow just add the following somewhere in your showTroll function:19:52
apacheloggerrotate.start();19:52
apacheloggerThis will start the animiation. And that is all we need to do for starters. If you try your code you should get a neat rotating head upon click.19:52
apacheloggerIt will however only rotate 180 degrees, not terribly awesome. Lets tweak this a bit.19:53
apacheloggerLets set the rotation to 360 degrees:19:53
apacheloggerrotate.angle = 360;19:53
apacheloggerand maybe make it a bit slower, say 5000 ms:19:53
apacheloggerrotate.duration = 5000;19:53
apacheloggerYou might also have noticed that it will only rotate once, let us make this endless:19:53
apacheloggerrotate.loopCount = -1;19:53
apacheloggerVoila! A spinning head :D19:53
apacheloggerNow since I am a bit short on time, let me wrap this up, sorry for rushing a bit towards the end :)19:54
apacheloggerAnother cool widget I created yesterday is a Player Control Widget - Playdget. You can find it at19:54
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/playdget/19:54
apacheloggerif your trollface is not working properly you can also take a look at my implementation:19:55
apacheloggerhttp://people.ubuntu.com/~apachelogger/udw/10.07/trollface/19:55
ClassBotThere are are 5 minutes remaining in the current session.19:55
apacheloggerin general you will find snapshots of the various trollface steps in http://people.ubuntu.com/~apachelogger/udw/10.07/19:55
apacheloggerQUESTION: Can you program KDE or pure Qt applications using JavaScript?19:55
apacheloggerIn Qt 4.7 there will be a new fraemwork called QtQuick which indeed allows you to create entire apps in JavaScript19:56
apacheloggerin fact, as far as I know plasma-mobile uses this a lot19:56
apacheloggerQUESTION: can you write DataEngines in JavaScript?19:56
apacheloggerI am not entirely sure, in either case I am not sure you would want to to do this for performance reasons, might be worth asking in the plasma IRC channel :)19:57
apacheloggerAs I mentioned earlier on - Plasma is more of a platform than an actual application (in contrast to plasma-desktop and plasma-netbook). Plasma is also used in Amarok. And here is the shocking news...19:57
apacheloggerYou can run both trollface AND playdget inside Amarok. So with a bit of tweaking you can actually make your JavaScript Plasmoids useable inside Amarok and plasma-desktop and plasma-netbook and plasma-mobile. If that is not a reason to become Plasmoid developer, then I do not know what is :D19:57
apacheloggerFor videso on both plasmoids in action take a look at http://people.ubuntu.com/~apachelogger/udw/10.07/videos/19:58
apacheloggerI totally can recommend those running in Amarok ;)19:58
apachelogger<FreeNode:#ubuntu-classroom-chat:tech2077> Question: Can you do this on gmone if you have kdm installed, or you have to switch to kdm completely19:58
apacheloggerthis has nothing to do with KDM really19:58
apacheloggerbut if you mean KDE...19:58
apacheloggergenerally you should be able to run plasma-desktop in a GNOME session and replace the GNOME desktop+panel19:59
apacheloggeralso, for development you do not need to run plasma-desktop19:59
apacheloggerwell, time is up20:00
apacheloggerif you care to talk a bit more join us in #kde-devel or #kubuntu-devel :)20:00
apacheloggerThank you everyone! You have been brilliant!20:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Desktop Team Overview - Instructor: seb128
seb128hey everybody20:01
akgranerThank you apachelogger  - and welcom seb12820:01
akgranerseb128, if you are ready take it away!20:01
seb128hey akgraner ;-)20:01
seb128hey everybody else20:01
seb128so that session is the "Desktop Team overview" one20:01
seb128I'm Sebastien Bacher and I'm working on the Ubuntu desktop for 6 years now. I'm going to talk to you about the Ubuntu Desktop Team today20:01
seb128.20:01
seb128I'm not sure how technical the audience is today20:01
seb128I will start with an overview of the team20:02
seb128then speak about some of the work we do20:02
seb128then we can do questions and answers20:02
seb128.20:02
seb128So first who we are and we are doing?20:02
seb128So first who we are and we are doing, the Ubuntu Desktop Team is the team working on the desktop interfaces of the Ubuntu Desktop and the UNE edition20:02
seb128We basically:20:02
seb128- package the best softwares available and try to keep those uptodate20:03
seb128- triage desktop bugs reports20:03
seb128- try to fix as many issues as we can20:03
seb128- take decisions about what softwares are shipped by default20:03
seb128- try to improve the desktop experience as we can20:04
seb128.20:04
seb128Where to find the desktop team:20:04
seb128- #ubuntu-desktop on this IRC server20:04
seb128- ubuntu-desktop@lists.ubuntu.com, https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop/20:04
seb128- launchpad (desktop-bugs and ubuntu-desktop teams)20:04
seb128 20:04
seb128So let's speak first about the packages we work on and how we update those20:05
seb128you can get a rough idea of the default set of things we work on there20:05
seb128- http://people.canonical.com/~seb128/versions.html20:05
seb128it basically lists packages the team is interested in with the current upstream and ubuntu versions20:06
seb128as you can set there are different set of color there20:06
seb128green is what is uptodate20:06
seb128everything is outdated either compared to debian or to upstream20:06
seb128ups20:07
seb128"everythin else"20:07
seb128so let's speak a bit about how we update those20:07
seb128the work is usually discussed on #ubuntu-desktop20:07
seb128but if you want to claim you are working on a desktop update you can also use the "Open Bug" column on http://people.canonical.com/~seb128/versions.html20:08
seb128our packages are usually stored in bzr20:08
seb128we do store only the debian directory so far because having the source there is usually quite slower and we didn't find real benefit since with the current technologies we still have to maintain patches in the debian dir20:09
seb128so the usual way to update those is to checkout the source20:09
seb128is lp:~ubuntu-desktop/gconf-editor/ubuntu20:09
seb128is -> ie20:09
seb128you get a debian directory while doing that20:10
seb128it's the base to do an update20:10
seb128so you can get it doing "bzr checkout lp:~ubuntu-desktop/gconf-editor/ubuntu"20:10
seb128then you can update the change to the current version doing "dch -v upstream_version-revision"20:11
seb128where "upstream_version" is the version from the upstream source and "revision" the ubuntu revision (typically -0ubuntu1 for an update)20:12
seb128the current version of gconf-editor is 2.30.0-2ubuntu120:12
seb128so it means you would do "dch -v 2.30.1-0ubuntu1" for the next update20:12
seb128then run "bzr bd"20:13
seb128that will download the new tarball source for you and start a build20:13
=== jorge is now known as jcastro
seb128it's likely that some changes will not apply or that you will need to update build-depends20:14
seb128in which case you need to do the required changes in the debian directory20:14
seb128that should be enough to get you quickly started on trying to build something and updating versions20:14
seb128I don't want to start now on patch system and packaging details, you will have other sessions about that this week and there is wiki documentations20:15
seb128but let me know if you have extra questions later on20:15
seb128https://wiki.ubuntu.com/DesktopTeam/Bzr has details on the current team workflow20:15
seb128 20:15
seb128out of updates we do work on desktop bugs20:15
seb128https://bugs.edge.launchpad.net/~desktop-bugs/+packagebugs20:16
seb128this url has the lists of components the desktop-bugs is watching20:16
seb128as you can see it's quite a lot20:16
seb128if you want to help on some of those feel free to talk to us on #ubuntu-desktop or to ping pedro_ from the bugsquad20:16
seb128we welcome any help to triage those and especially to raise the issues that should be adressed in priority during the cycle20:17
seb128since the team working on solving those issues has limited manpower and can't work on everything it's important to prioritize issues20:17
seb128 20:17
seb128we also do take decisions about softwares selections20:17
seb128those discussions are usually made on our list, or IRC channel and decisions taken at UDS20:18
seb128the lists is https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop/20:18
seb128if you have any suggestions for the desktop or UNE feel free to come discuss with us20:18
seb128we do discuss other changes, design decisions, etc on those lists20:19
seb128so that was a sort of overview of what the team is doing right now20:19
seb128there is lot to cover in packaging and other areas but I don't think one hour writting there would be enough and would probably not be that useful20:20
seb128so let's do questions and answers now if something has any questions20:20
seb128I can continue describing some of the details of our work later one if we run out of questions20:21
seb128if you have questions use #ubuntu-classroom-chat20:21
seb128<tech2077> QUESTION: with Gnome-shell, when should be expect a stable version, 10.10 ro 11.0420:21
seb128that's an excellent questions20:21
seb128so GNOME3 is quite exciting20:21
seb128but it's lot of work at the same time20:21
seb128they do plan to have GNOME3 ready around the same time we will roll 10.1020:22
seb128but it's adding lot of changes:20:22
seb128gsettings (dconf)20:22
seb128gtk320:22
seb128gnome-shell20:22
seb128new gobject introspection20:22
seb128so lot of technologies changes, lots of softwares to update20:23
seb128we do believe their schedule is really challenging and while it's exciting we don't have the ressources to follow on everything this cycle20:23
seb128we do plan to work as well as we can but it's going to take 2 cycles20:24
seb128so we do plan to have the platform ready this cycle20:24
seb128ie gtk3 available for 10.1020:24
seb128the new introspection stack, dconf20:24
seb128but gtk3 will not be on the CD this cycle20:24
seb128it's going to be challenging to have 2 gtk stacks on the CD20:24
seb128gnome-shell will be in universe for 10.1020:25
seb128then next cycle we will try to move to GNOME320:25
seb128 20:25
seb128<Krysis> QUESTION: Will Unity replace the Gnome Shell vision?20:25
seb128no20:25
seb128unity has been made for small screens20:25
seb128where gnome-shell is for desktop environments20:25
seb128we do believe those have different needs20:25
seb128so unity is what UNE will be using20:26
seb128where the desktop will keep using GNOME20:26
seb128 20:26
seb128<Guest71922> QUESTION: Since Gnome-shell is being worked on to include Ubuntu's panel design, will we see Compiz support in gnome-shell at all? (I realize gnome-shell wont be default in 10.04)20:26
seb128 20:26
seb128right it won't since that version is out for a bit now ;-)20:26
seb128I doubt compiz will be used in gnome-shell though since they have mutter used as wm there20:27
seb128you should talk to the gnome-shell guys if you think they should support compiz though20:27
seb128 20:27
seb128<penguin42> QUESTION: Is there an effort to ensure that VMs/machines without fast 3D cards will still get good support in the days of gnome-shell etc?20:27
seb128well20:27
seb128gnome-shell said from the start they would not impose limits for their softwares just to support "old configurations"20:28
seb128so gnome-shell will not support those no20:28
seb128the current desktop will still be around and we will keep a fallback solution available at runtime for those configurations20:28
seb128it will likely keep being similar to the current desktop20:29
seb128I doubt much work will go into that though20:29
seb128 20:29
seb128<Krysis> QUESTION: Since alot of users enjoy Compiz to a certain extent, seeing it lifted from Ubuntu seems a bit drastic, if this happens do you think a new ubuntu distro will be made to include the older gnome?20:29
seb128who said it would be lifted?20:29
seb128it will still be available20:30
seb128not sure what you are concerned about but mutter do similar effects20:30
seb128so gnome-shell or unity will have nice effects as well20:30
seb128<Guest71922> Question: Will we see Compiz like compositing via mutter, at least some point in time?20:31
seb128similar question20:31
seb128not sure you will see as many effects or crazy things in those20:31
seb128but the default compiz configuration is quite limited in effects it uses20:31
seb128the new desktop will likely keep a limited "bling" as well20:31
seb128the desktop should be nice to use20:32
seb128not acting as a crazy demo box ;-)20:32
seb128but those who like compiz will still be able to install it20:32
seb128<Krysis> seb128: so it'll be compatible with gnome-shell? I meant that if gnome-shell becomes default, instead of re-installing the older gnome to work with compiz, will there be a distro that maintains that gnome isntead of moving to gnome-shell.20:33
seb128 20:33
seb128not sure it will be a distro, but nothing stop you to install compiz and use it, it's on package to install20:33
seb128on -> one20:33
seb128doesn't seems to warrant doing another distribution20:34
seb128it will rather be an effect level in the appearance capplet20:34
seb128 20:34
seb128<mickstephenson52> QUESTION: Since unity uses mutter does that mean that unity and compiz won't work together either20:34
seb128righjt20:34
seb128you can use compiz and unity20:35
seb128some people have been doing it20:35
seb128but you will lack some of the effects and integration the unity team work on20:35
seb128you can still use the unity bar and launcher though20:35
seb128but if you prefer doing desktop manager yourself using compiz nothing stops you20:35
seb128 20:36
seb128other questions?20:36
seb128<Guest71922> QUESTION: ok, giving you a break from Compiz, what can you tell us about the windicators, and the new decoraters? Suggestion if I may, I love the new theme but if I could adjust the window border/header to fit a darker theme that would be awesome20:36
seb128thanks ;-)20:36
seb128we do plan to keep working on gtk changes for csd20:37
seb128client side decoration20:37
seb128it means it will gtk drawing its decorations directly20:37
seb128rather than compiz20:37
seb128but that's quite some work to do and we will need to think about non gtk softwares20:38
seb128so while this work continue it will not likely go in 10.1020:38
seb128the changes are often discussed on the ayatana list though20:38
seb128so feel free to join them to discuss it with them20:38
seb128 20:38
seb128<Ram_Yash> <question>how do you select different software to added to desktop?20:38
seb128we try to listen to our users requests20:39
seb128there were some requests for a video editor for a while so we got pitivi in lucid20:39
seb128we try to see what nice softwares are out there and what users like20:39
seb128if you have any suggestion feel free to come discuss those with us20:39
seb128chromium has lot of users so we consider it for UNE this cycle20:40
seb128it's also faster and might fit better on the devices UNE target20:40
seb128we are consider shotwell as well for photo management since it's a very nice software20:40
seb128 20:41
seb128<joshas___> QUESTION: What happened to netbook-launcher-efl? Why isn't it used in UNE?20:41
seb128not sure if the question is "why is it not used by default in UNE"?20:41
seb128while it's nice efl is not a technologies used a lot in Ubuntu or maintained20:42
seb128it also has limitations20:42
seb128we do believe unity to be a better experience20:42
seb128it's based on quite some design work, modern technologies and actively being worked20:42
seb128users feedback has been welcoming it so far20:43
seb128so let's see how it goes20:43
seb128 20:43
seb128<Krysis> QUESTION: as far as functionality Pitivi is alot premature in comparison with software such as OpenShot, was Openshot a consideration?20:43
seb128I've to admit I don't know openshot20:44
seb128nobody came with a suggestion to use it previous cycle but pitivi has quite some user tractions20:44
seb128if you think we should consider openshot feel free to email the mailing list20:45
seb128or come discuss on the IRC channel20:45
seb128 20:45
seb128<Guest71922> QUESTION: How will the rootless xserver mean for performance, standard and with GPU card, or is that a different deartment.20:45
seb128sorry but I don't know about performances impact20:45
seb128you are welcome to ask on #ubuntu-x though20:45
seb128I would assume it should not have one to be consider as a valid alternative to use20:46
seb128 20:46
seb128<Ram_Yash> QUESTION: Are there any plans to support HDMI Videos and Desktop screen splitters?20:46
seb128not that I know about but another question that would be rather for #ubuntu-x20:46
seb128the ubuntu xorg team has limited manpower though20:46
seb128so I don't think there is any effort coming from ubuntu itself on that topic20:47
seb128 20:47
seb128<Guest71922> QUESTION: What's the deal concerning BTRFS and possibly BURG?20:47
seb128I don't know about burg20:47
seb128but the foundation team is considering btfs for 10.1020:47
seb128btrfs20:47
seb128not really a desktop question though20:47
seb128there is a blueprint about it if you are interested20:47
seb128 20:48
seb128<inquata> QUESTION: What are the plans for the Menu Bar? This is – usability-wise – one of the most crucial parts of the desktop. Currently, it seems clunky and crowded.20:48
seb128inquata, hum,  what menu bar?20:48
seb128if you mean the application etc menus?20:48
seb128it's neither in gnome-shell or unity20:48
seb128they both have different way to interact with softwares20:49
seb128there is no effort to work on improving the menus that I know about though20:49
seb128unity has a "place" view to browse application20:49
seb128ie a grid with filters you can use20:50
seb128 20:50
ClassBotThere are are 10 minutes remaining in the current session.20:50
seb128hum, ok ;-)20:50
seb128<inquata> seb128: Ok, who do I need to talk to if I’m interested in improving the Menu Bar for the standard desktop?20:51
seb128the ubuntu-desktop mailing list20:51
seb128 20:51
seb128<Ram_Yash> QUESTION: Why do minimize/maximize, screen size increase/dec, close button are changed for all the browser different normal window format? is that successful adoption?20:51
seb128I'm not sure to understand the question20:51
seb128you mean why the lucid theme changes the side and order of buttons?20:51
seb128design choice20:51
seb128users get used to it after some days it seems20:52
seb128it's sort of nice and allow extra changes that will come like windicators20:52
seb128 20:52
seb128<mickstephenson52> QUESTION: IMO one of the biggest papercuts the gnoem desktop in general has is that the clipboard doesnt function correctly with non gnome applications, if you install glipper you can fix this but atm it is broken by default. Will this problem ever be resolved?20:52
seb128 20:53
seb128excellent question20:53
seb128to be honest I don't know20:53
seb128that's not a topic we focussed on until now20:53
seb128I think there is a gsoc project about it20:53
seb128it = clipboard20:53
seb128but that's probably something we should try to fix20:53
seb128you should come with suggestions or requests for comments on the list20:54
seb128that would maybe motive some people to get that done20:54
seb128 20:54
seb128<Guest71922> QUESTION: I know the min/max/close is on the left for a reason now so I want be picky on that but I'm worried about future conflicts because when I change to another theme, they go back to the right.20:54
seb128let's see how it goes with those theme, they will maybe just not have windicators or improvements on20:55
seb128but there is no reason the side of theme should be an issue20:55
seb128it's a gconf key, you can change it for any theme20:55
ClassBotThere are are 5 minutes remaining in the current session.20:55
seb128so we could force it for other themes as well20:55
seb128 20:55
seb128<mickstephenson52> seb128: My suggestion would be for zeitgeist to index your clipboard histroy and for gnome to use that, and allow you to choose what is currently in your clipboard using an indicator20:55
seb128nice suggestion, somebody should raise it on the ayatana list for comments20:56
seb128 20:56
seb128<pratik_narain> <question>so are the windicators a theme specific feature or generic ubuntu desktop feature20:56
seb128they will not be theme specific no20:56
seb128 20:56
seb128ok, we have a few minutes for remaining questions20:57
seb128<Ram_Yash> QUESTION:ANy possiblities of adapting APPLE themes?20:57
seb128dunno about that one20:57
seb128there is no reason you could make themes similar to the apple ones20:57
seb128 20:58
seb128ok, no other question?20:58
seb128thanks everybody then!20:58
seb128hum20:58
seb128<Guest71922> Question: We can turn off internet to any given app with the on/offline windicator now right?20:58
seb128there is no windicator right now20:59
seb128but seems something they could be doing20:59
seb128ok20:59
seb128that's it20:59
seb128thanks everybody20:59
seb128it's time for the next session20:59
akgranerThanks seb128! Great Session!20:59
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Authoring Upstart Jobs - Instructor: slangasek
slangasekhey folks21:00
akgranerhey Steve if you are ready the floor is yours!21:01
slangasekin this session, I'd like to cover the basics of writing upstart jobs, cover a few examples, look at a few special cases of interest, and then open the floor to questions21:02
slangasekif you have questions as we go, please ask (the usual method on #ubuntu-classroom-chat)21:03
slangasekso as written at https://wiki.ubuntu.com/UbuntuDeveloperWeek/Sessions, it is strongly recommended that you read over the init(5) manpage first, to get an understanding of what the various commands are that you can use in an upstart job21:04
slangasekso I won't repeat here the contents of that manpage; that's a bit too much to cover in detail in a 1h session21:05
slangasekbut if you haven't read it yet, you may still learn something of interest here and can always go read the full details later!21:05
slangasekbut first, a rhetorical question: why would you want to write an upstart job?21:06
slangasekUbuntu uses upstart as its init daemon21:06
slangasekif you want to create a new service on Ubuntu - like a mail daemon, web server, or system audio daemon, for example - the recommended way to do this is by writing an upstart job21:07
slangasekeven running arbitrary commands at startup or shutdown, that have nothing to do with a service, can be implemented as upstart jobs21:07
slangasekupstart jobs supersede the traditional sysvinit rc system of starting and stopping jobs (those files under /etc/init.d/)21:07
slangasekboth are still supported - as explained at https://help.ubuntu.com/community/UpstartHowto - but for new services, it's definitely recommended to use native upstart jobs for several reasons21:08
slangasek- upstart is a process supervisor in addition to being an init daemon, so it always knows the state of the job and can handle start/stop directly and respawn services when they die21:09
slangasek(so no messy bolted-on pid file handling!)21:09
slangasek- upstart jobs can be declared to start and stop on a number of different conditions, not just on runlevel changes21:10
slangasek- upstart job syntax is much simpler than sysv init scripts - you *can* write complicated scripts inside of an upstart job, but for the common case, there's much less scripting involved!21:10
slangaseknow let's start with a simple example of an upstart job.  Since you might not have all of these packages installed on your system, I've copied them to the web for convenience: http://people.canonical.com/~vorlon/upstart/21:12
slangasekthe first once we'll look at is http://people.canonical.com/~vorlon/upstart/acpid.conf21:12
slangasekthis is a bog-standard upstart job, nothing too complicated at all21:12
slangasekit has a description, which is optional but used by upstart in some informational messages21:13
slangasektwo lines tell us when to start and when to stop the service21:13
=== jorge is now known as jcastro
slangasekhere, the start and stop conditions relate in a pretty straightforward manner to the sysvinit runlevels - start the service on any of runlevels 2, 3, 4, or 5; and stop it on any runlevel *not* in that list21:14
slangasek(which, if you know your runlevels, means to stop it on runlevels S, 0, 1, or 6: i.e., on shutdown, reboot, single user mode, and runlevel 1 which is a sort of "faux single user mode"21:15
slangasek)21:15
slangasekafter that we have the line 'expect fork', which tells us how the service starts up in order for upstart to be able to supervise the process correctly, know which process is the master process and when it's done starting up so it can trigger other jobs that depend on it, etc21:16
slangasekthis line is *very important* to get right21:17
slangasekif you get it wrong, you may not be able to fix it without rebooting your computer!21:17
slangasekmore on that later :)21:17
slangasekthe next line is 'respawn', which tells upstart that if the job stops, it should be restarted21:17
slangasekthere are a number of different options you can use to configure how often upstart will respawn the service21:18
slangasekall documented in the glorious manpage21:18
slangasekfinally, we have a single line describing what the job itself *does*21:18
slangasekexec acpid -c /etc/acpi/events -s /var/run/acpid.socket21:18
slangasekthe 'exec' tells upstart to run the following command directly21:19
slangasekyou could also write this as:21:19
slangasekscript21:19
slangasek   exec acpid -c /etc/acpi/events -s /var/run/acpid.socket21:19
slangasekend script21:19
slangasek... but there's not much point to doing that, the 'script' and 'end script' lines are redundant21:19
slangasekalso, note that this is *not* the same:21:20
slangasekscript21:20
slangasek   acpid -c /etc/acpi/events -s /var/run/acpid.socket21:20
slangasekend script21:20
slangasekit's not the same because when you close the job in 'script', upstart spawns a shell; the shell is a process, which spawns a subprocess when you call acpid by itself, and that confuses upstart because we told it that the process is done starting up as soon as there's a subprocess (expect fork)!21:21
slangaseklooks like there are a couple of good questions queued up, let's get to those before we go on21:22
slangasekplease remember to type 'QUESTION: ' in front of your question, not just 'QUESTION' so the bot can parse it - that'll help us go quicker :)21:23
ClassBotOmahn18 asked: Does upstart have a toggle switch that can be enabled to log all service transistions to /var/log/daemon or equivalent for debugging purposes?21:23
slangasekgood question - yes, you can make upstart more verbose by running 'sudo initctl log-priority info' or 'sudo initctl log-priority debug'21:24
slangasek'info' is normally enough for debugging any problems you might have with new jobs you've written - 'debug' is usually way too verbose for anything other than debugging upstart itself :)21:24
slangasekand if you need to debug upstart jobs that happen too early in the boot sequence before you're able to *type* 'sudo initctl [...]', you can actually just type '--verbose' or '--debug' on the kernel commandline - upstart will parse that and go into that mode on startup :)21:25
ClassBotRam_Yash asked: Whenever I upstart the music player it disappers first time without any processor . Is this is a bug or Am I missing something?21:26
slangasekRam_Yash: have you written an upstart job for this?  If so, please post it somewhere that we can look at it (e.g., pastebin.ubuntu.com) and we'll discuss it a little later21:27
slangasekif you mean "when you start up the music player", then that doesn't have anything to do with upstart jobs...21:27
ClassBotsimar_mohaar asked: Where to place these scripts so that they run automatically ...21:27
slangasekupstart finds its jobs in /etc/init21:27
slangasekadding a job file there with a name ending in .conf is enough to get upstart to see it and act on it21:28
slangasek(but it won't automatically start it for you, because start conditions are defined by events and upstart won't automatically rerun the events for you - so you would need to run 'sudo service $job start' to start it)21:28
slangaseksome more good questions coming in about upstart job authoring - let's go to a couple more examples and see if we can't answer those questions along the way21:30
slangasekhttp://people.canonical.com/~vorlon/upstart/upstart-udev-bridge.conf21:30
slangasekjust a couple of interesting differences here from the acpid job21:30
slangasekinstead of 'start on runlevel [...]', it's 'start on starting udev' and 'stop on stopped udev'21:31
slangasekthese events are internal events, documented in the init(5) manpage: whenever an upstart job starts or stops, events are sent that other jobs can trigger on21:31
slangasekso this way, we can say "upstart-udev-bridge should only run when udev is running"21:31
slangaseknow, 'runlevel' is also an event, but it's not documented in the manpage because it's not an event that's internal to upstart21:32
slangaseker21:32
slangaseksorry, that's incorrect - that event *is* internal to upstart, it's emitted whenever you change runlevels :)21:32
slangasekthe other thing that's different here is 'expect daemon' instead of 'expect fork'21:33
slangasek'expect daemon' means we expect the service to daemonize (in a nutshell: to fork twice) to let us know that it's ready to go21:33
slangasekif you *can* use 'expect daemon', that's generally recommended for upstart jobs related to services21:33
slangasekbut sometimes it's not possible because the behavior of the daemon when daemonizing isn't what upstart expects21:34
slangaseke.g., http://people.canonical.com/~vorlon/upstart/smbd.conf21:34
slangaseksmbd, from the samba package, daemonizes by default... but we have to tell it to run in the foreground here (exec smbd -F) and *not* use an 'expect fork' or 'expect daemon' line, because smbd manages to confuse upstart badly enough that it hangs the job and you have to restart to continue debugging ;021:35
slangasekso watch out for that :)21:35
slangasekanother new thing in here is a pre-start script21:35
slangasekupstart jobs can be told to run commands, or entire scripts, before and after starting, and before and after *stopping*, the main process21:35
slangasekyou can use any combination of these that you need to21:36
slangasekand should leave out the ones that you don't. :)21:36
slangasekthat brings us to another question....21:36
ClassBotOmahn18 asked: I've written an upstart job for NIS (bug 569757) and ideally it should trigger a restart of autofs (if installed) to pull down the NIS automount maps. Does upstart have any specific functionality to do this or should it just be included in the script section?21:36
slangasekyep - just put a command in your post-start script to trigger the reload21:37
slangasekif autofs is an upstart job itself, you can just run 'restart autofs'21:37
slangasekbut I would recommend thinking carefully about whether this is the right thing to do... should autofs be restarted, or just sent a signal to get it to reload its configuration?21:37
slangasekif the latter, you can get the pid of the job you want to restart by running 'status autofs'21:38
slangasekwell, actually... as long as the service responds to SIGHUP, you can run 'reload autofs'21:39
ClassBottech2077 asked: QUESTION: while looking at the files in /etc/init.d/, they are all system v init daemons, not upstart daemons, are there any ones in teh folder by standard install that are21:40
slangasekupstart jobs are all in /etc/init, not /etc/init.d.  We will probably eventually get rid of /etc/init.d on a default system, but we're still transitioning...21:40
ClassBotsimar_mohaar asked: Can i see which all upstart jobs are currently running ?21:40
slangasekgreat question!  yes, you can run 'sudo initctl list'21:41
slangasek(if you're not root, you can't see the list - you can only check the status of individual jobs with 'status')21:41
ClassBotsimar_mohaar asked: 'sudo service $job start' to start it  do i need to do it once or every time i start computer ??21:41
slangasekso earlier I mentioned that upstart won't automatically start a job for you when you create it21:42
slangasekbut, if *after* creating it, the start condition is met, yes - it will be started for you21:42
slangasekso as long as you set the start condition to something that happens on startup, you don't need to run 'sudo service $job start' again after reboot21:42
slangasekhere's an example of a start condition you can use on startup: http://people.canonical.com/~vorlon/upstart/rsyslog.conf21:43
slangasek'start on filesystem'21:43
slangaseknow this one is *not* an upstart built-in event21:43
slangasek(I'm sure this time :)21:43
slangasekit's an event that comes from mountall21:43
slangasekmountall gives us several events letting us know when the filesystem is mounted21:43
slangasek'local-filesystems', 'filesystem', 'virtual-filesystems', 'remote-filesystems'... separate events for each separate filesystem that gets mounted21:44
slangaseknow, generally the only one you want to use is 'filesystem'21:44
slangasekfor most jobs, you want to wait for *all* the filesystems in /etc/fstab to be mounted before you start your job21:45
slangasekstarting it any earlier is probably just going to cause contention and slow the system down21:45
slangaseknote that 'start on filesystem' means that your job will start *regardless* of what runlevel you're booting into21:45
slangasekso even in single user mode, rsyslog is still started21:45
slangasekand it only stops on shutdown or reboot21:45
slangasekso if your service doesn't really belong in single user mode, you should use 'start on runlevel [2345]' instead21:46
slangasekthe other mountall signal that's worth mentioning, that you may see in a lot of other jobs, is 'local-filesystems'21:46
slangasekin fact, we already saw one of these: smbd uses it21:46
slangasek'local-filesystems' is different from 'filesystem' in that it's emitted before your remote filesystems are up21:47
slangasekso you would use 'start on local-filesystems' for *only* those jobs that may be needed in order to get your remote filesystems mounted: networking, filesystem daemons, etc21:47
slangasekotherwise, the files your job needs to run may be *on* a remote filesystem, and it'll try to start it too early and fail!21:48
slangasekMoomoc asked: 'Is it possible to use start on file-system [23] e.g.?'21:48
slangasekwell, there's no event named 'file-system 2'21:48
slangasekthere is a 'mounted' and a 'mounting' event emitted for each mount point, when it's mounted21:49
slangasek*but*, that means the start condition depends on the partition layout of the system!21:49
slangasekso you don't want to do that for any jobs that go into Ubuntu itself21:49
ClassBotsimar_mohaar asked: What are upstart jobs commonly used for??21:49
slangasekupstart jobs are used for *everything* to do with starting up your system or shutting it down21:50
slangasek(with a few exceptions that haven't transitioned yet)21:50
ClassBotThere are are 10 minutes remaining in the current session.21:50
slangasekmounting filesystems is done by an upstart job21:50
slangasekstarting the X server21:50
slangasekstarting dbus, avahi, cups, ...21:50
slangasekyour clock settings21:50
slangasekyour firewall21:51
slangaseketc21:51
slangasekthere's a lot of stuff in /etc/init :)21:51
slangasekspeaking of the firewall...21:51
slangasekhttp://people.canonical.com/~vorlon/upstart/ufw.conf21:51
slangasekthat's how we start the ufw firewall on Ubuntu21:51
slangaseknotice an interesting thing about this job?21:51
slangasekthere's a pre-start exec and a post-stop exec, but there's no exec!21:52
slangasekeven the main process part of an upstart job is optional21:52
slangasekyou might be wondering why you would want to do that, though21:52
slangasekit's because we want to know whether the firewall is stopped or started, but there's no daemon we run that's associated with it - it's all in the kernel21:52
slangasekso instead of making it a 'task' (which upstart would show as stopped once it's finished), we make it a regular service that runs nothing!21:53
slangasekthis also prevents upstart from trying to start it repeatedly21:53
slangaseknotice that the start condition here is:21:53
slangasekstart on (starting network-interface21:53
slangasek          or starting network-manager21:53
slangasek          or starting networking)21:53
slangasekthat tells upstart to start it whenever it sees *any* of these events21:53
slangasekwhich, since this is a service, means it will start it on the *first* of these events that it sees21:54
slangasekand then stay "runninG"21:54
slangasekI have more examples, but no time to go over them... let's go to questions :)21:54
ClassBotpenguin42 asked: What should I ask someone to do to help debug a startup issue on a remote machine with upstart?21:54
slangasekpenguin42: have them turn on the verbosity of upstart with 'sudo initctl log-priority info' and get them to send you /var/log/syslog - and then get good at understanding that output, by practicing on your own system :)21:55
ClassBotThere are are 5 minutes remaining in the current session.21:55
ClassBottech2077 asked: Can any command be exicuted as a upstart, or are there limitations to this system21:55
slangasekwell, it's kind of a limitation that upstart jobs are "system-level" services21:56
slangasekso you wouldn't really want to use it to start per-user services21:56
slangasekbut otherwise, there aren't many limitations21:56
slangasekif you have questions and you haven't asked them yet, please get them to the bot now :-)21:56
slangasekI'll be available afterwards to answer questions, too21:56
ClassBotktenney asked: where is a list of all such external events available?21:56
slangasekgood question21:57
slangasekunfortunately, there is no comprehensive list of external events21:57
slangasekbecause you can make up event names whenever you want!21:57
slangasekbut many of them are documented in the 'emits' lines in other upstart jobs (grep -r emits /etc/init)21:57
slangaseksome of them also come from ifupdown helpers under /etc/network/if-up.d (grep -r initctl /etc/network)21:58
slangasekbut there's no master list, and yes, this is a problem :/21:58
ClassBotRam_Yash asked: Can use UPSTART job to run web application?21:58
slangasekif the web application runs as its own process, yes21:58
slangasekthough usually, web applications run inside the webserver; in that case, the upstart job would be the webserver itself21:59
ClassBotzul asked: what if you have a daemon that depends on loopback21:59
slangasekgreat illustrative question, though I think zul maybe already knows the answer :)21:59
slangasekrc-sysinit.conf is an example of this!22:00
ClassBotOmahn18 asked: Who would be the best person(s) to contact to assist in moving init.d scripts to upstart scripts?22:00
slangasekin general, the Ubuntu foundations team - and now the Ubuntu server team - have the most experience with this, and I'm sure are happy to help with your questions22:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - http://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi
slangasekthanks, everyone - I guess the sessions are over for the day, so I'm happy to take here any questions that we didn't get to22:01
slangaseksorry, the bot won't feed me any more questions now that the session is over, so I've kinda lost track :-)22:01
simar_mohaarhi22:04
=== excid3 is now known as excid3|biking
=== kasted_ is now known as kasted
=== excid3|biking is now known as excid3

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