#ubuntu-classroom 2007-02-19
<ghadi> jrib,  :)
<ghadi> am here
<ghadi> lol it's a classroom :D
<ghadi> hehehe
<jrib> ghadi: do you have your browser open to https://help.ubuntu.com/community/RestrictedFormats ?
<ghadi> ok i opened it:)
<ghadi> jrib,  i just need to make my mp3's and video's open on ubuntu, i don't know nothing about linux, it's my 1st installation
<jrib> specifically, https://help.ubuntu.com/community/RestrictedFormats#head-99259e1841e1e1262f4f71e0c72d5a51b3fb69e9
<jrib> let me know which part isn't clear
<ghadi> ok ty :):)
<ghadi> jrib,  those are plugins that will make unsupported formats work :D?
<jrib> ghadi: should
<ghadi> great
<ghadi> synaptic packager is now downloading updates for universe and multiverse packages:D
<ghadi> ty
#ubuntu-classroom 2007-02-20
<atomiku> oh right
<atomiku> this is where you get schooled
<atomiku> k
<jrib> ryan_: what are you trying to do?
<ryan_> ok, im trying to install drivers for my wireless card because it wont recognize ine
<ryan_> mine*
<jrib> have you checked the ubuntu wiki for ubuntu-friendly instructions?  or is that what you are using?
<ryan_> https://help.ubuntu.com/community/WifiDocs/Driver/RalinkRT61?action=show&redirect=Rt61WirelessCardsHowTo
<jrib> ok then :)
<ryan_> yes, im using that doc above
<jrib> ryan_: notice that it may be easier for you to use gedit
<ryan_> can i open this dat file with gedit and make the changes that i need
<jrib> ryan_: that is what the document you linked to says (it gives you the proper switch for gedit right below the vi command)
<ryan_> i put in this command: gksudo gedit --encoding=ISO-8859-15 /etc/Wireless/RT61STA/rt61sta.dat
<jrib> yep, that seems right
<ryan_> then i went into the readme where it told me to use the vi command, and now im stuck
<jrib> ryan_: what readme?
<jrib> you need to give me context :)
<ryan_> sorry
<ryan_> it came with the linux drivers i downloaded from ralink
<jrib> ok so the readme has a vi command that is not in the ubuntu wiki?
<ryan_> yes
<jrib> what command?
<ryan_> Use "vi -b rt61sta.dat" to modify settings according to your need.
<jrib> ryan_: ah but that is the same command as in the wiki, so you should be able to use that gedit command
<jrib> Just heed the warning in the ubuntu wiki to only use ASCII characters
<ryan_> ok well i typed in the gedit command, and i dont see where to modify the settings
<ryan_> gksudo: unrecognized option `--encoding=ISO-8859-15'
<ryan_> i think i have a problem
<jrib> erm ok
<jrib> we'll use vi then
<jrib> close all vi instances you have open
<jrib> ESCAPE :q!
<mau> hey guys
<jrib> should quit vi
<jrib> mau: hi
<ryan_> i type "ESCAPE :q!"?
<mau> i'm not sure what the protocal is in irc... noob.  may I ask a question?
<jrib> ryan_: well instead of ESCAPE, you hit the escape button, then you type  :q!
<ryan_> lol, ok
<jrib> mau: sure, but you are usually better off starting in #ubuntu since there are more eyes there
<mau> good call, thanks
<ryan_> bash: :q!: command not found
<jrib> ryan_: I mean in vi
<ryan_> ahh, im so lost
<ryan_> im sorry
<jrib> ryan_: this is just to close any vi windows you have open so we can start over.  Are there any open?
<ryan_> i dont even know what a vi window is
<jrib> well your terminal will have a text editor
<ryan_> ok
<jrib> ryan_: if you don't see any then just type this command (in your terminal) and tell me the output:  ps -ef | grep vi
<ryan_> ryan     10226  9958  0 17:41 pts/1    00:00:00 grep vi
<jrib> great, ok now what does the command 'pwd' return?
<ryan_> /home/ryan
<jrib> ok, and this one:  ls /etc/Wireless/RT61STA/rt61sta.dat*
<ryan_> no such file or directory
<ryan_> oops typo on my part
<ryan_> /etc/Wireless/RT61STA/rt61sta.dat
<ryan_> in green
<jrib> my fault, it should be: ls /etc/Wireless/RT61STA/.rt61sta.dat*
<jrib> (it's ok if it gives you an error or nothing)
<ryan_> that time it said no such file or directory
<jrib> ok so there should be no .swp file.  What happens when you use vi now?  sudo vi -b /etc/Wireless/RT61STA/rt61sta.dat
<ryan_> cool i think that worked
<jrib> ryan_: do you know how to do basic editing in vi?
<ryan_> nope, lol
<jrib> ryan_: if you want a good intro, run 'vimtutor' in another shell
<ryan_> ok thanks
<jrib> ryan_: but basically, if you want to insert text, press  i
<ryan_> i think it said only to use ascii text, is an under-score okay?
<jrib> ryan_: the warning is only if you use gedit
<jrib> _ should be ok
<ryan_> ok
<ryan_> SSID is the name of a network right?
<jrib> no idea
<ryan_> oh
<jrib> SSID=<SSID of your Access Point>   from the wiki
<ryan_> yes, i guess they mean the name of my lan?
<jrib> ryan_: give it a try
<ryan_> how would i delete blank spaces from the vi
<ryan_> blank lines*
<jrib> ryan_: ESCAPE :g/^\s*$/d
<jrib> that deletes lines with only space on them too...
<ryan_> where do i type that
<jrib> in vi
<jrib> you press the escape button then type in that stuff after
<ryan_> when i do that i dont see anything come up
<ryan_> i have to press i
<jrib> well when you press : you should see a : at the bottom left and then what you type goes there
<jrib> another happy vi user
<jrib> bigli: what does this command return: apt-cache policy libgl1-mesa-dev
<bigli> paste bin or normal paste?
<jrib> here is fine
<bigli> root@amir-laptop:/usr/share/emc/tcl# apt-cache policy libgl1-mesa-dev
<bigli> libgl1-mesa-dev:
<bigli>   Installed: (none)
<bigli>   Candidate: 6.5.1~20060817-0ubuntu3
<bigli>   Version table:
<bigli>      6.5.1~20060817-0ubuntu3 0
<bigli>         500 http://archive.ubuntu.com edgy/main Packages
<jrib> ooops, wrong package.  I meant: apty-cache policy mesa-common-dev
<bigli> root@amir-laptop:/usr/share/emc/tcl# apt-cache policy mesa-common-dev
<bigli> mesa-common-dev:
<bigli>   Installed: 6.5.1-0.5
<bigli>   Candidate: 6.5.1-0.5
<bigli>   Version table:
<bigli>  *** 6.5.1-0.5 0
<bigli>         100 /var/lib/dpkg/status
<bigli>      6.5.1~20060817-0ubuntu3 0
<bigli>         500 http://archive.ubuntu.com edgy/main Packages
<jrib> bigli: ok, the issue is, how did that package get installed?  Did you ever have any non-ubuntu repos in your sources.list?
<bigli> probably i had
<bigli> i am removing it
<jrib> k, but the packages from that repo will still be installed, and there are probably more than just that package
<bigli> apt-get install  libgl1-mesa-dev
<bigli> i will check to find and remove
<jrib> bigli: at this point, you can try to downgrade mesa-common-dev, but be sure you have backups in case you end up with an unusable system
<bigli> my system is not very stable ;)
<bigli> i want to :apt-get remove libgl1-mesa-glx
<jrib> try this:
<bigli> but it want to remove 130MB of my packages
<jrib> sudo apt-get install mesa-common-dev=6.5.1~20060817-0ubuntu3
<bigli> seems to work downloading next packet
<bigli> where are you from
<jrib> US
<bigli> me from IRAN
<bigli> what u thinks? your country will attack to iran or not?
<jrib> I hope not
<bigli> the government is f**king us , and i want to plan to migrate to another country
<jrib> bigli: where would you like to go?
<bigli> australia/ canada / usa
<amir_> jrib are u there?
<jrib> amir_: yes
<amir_> i am the bigli
<amir_> http://www.pastebin.ca/364987 line 22 i got an error
<jrib> amir_: I don't know what emc or minigl are, you'll probably need to compile both
<Logicbox> sup jrib
<jrib> Logicbox: so I take it you got no output?
<Logicbox> ?
<jrib> from  dpkg -L comix | grep comicthumb
<Logicbox> i didnt even see that
<jrib> oh wrong person
<jrib> heh
<Logicbox> do i need to type that hehe
<Logicbox> lol
<jrib> :)
<jrib> first thing, don't use sudo if you are root
<Logicbox> ok
<jrib> Logicbox: apt-get clean && apt-get udpate
<jrib> Logicbox: apt-get clean && apt-get update
<Logicbox> :( i dont think that worekd either
<Logicbox> bunch of faild
<jrib> Logicbox: has it ever worked?
<Logicbox> uhhh ya no
<Logicbox> i dont think so
<Logicbox> i just have no idea what the dillio is
<Logicbox> i mean if i go to http://archive.ubuntu.com in firefox i can hit it
<jrib> well apt-get hits too, bzip just sees that the file is messed up
<jrib> Logicbox: wget http://security.ubuntu.com/ubuntu/dists/edgy-security/restricted/source/Sources.bz2
<jrib> file Sources.bz2
<Logicbox> ok
<jrib> what was the output
<Logicbox> 900k?
<Logicbox> is that right
<Logicbox> Sources.bz2: bzip2 compressed data, block size = 900k
<jrib> yeah
<jrib> Logicbox: lets comment everything that's not "edgy".  That means comment edgy-updates, security, edgy-proposed, medibuntu...
<Logicbox> ok how ?
<jrib> gksudo gedit /etc/apt/sources.list
<jrib> add a # in front of a line in order to comment it
<Logicbox> ok my sources.list looks like http://paste.ubuntu-nl.org/6719
<jrib> Logicbox: unfortunately I have to go, try #ubuntu again, I actually didn't mean to pull you in here if I wasn't sure I could help, just mixed up the names.  Sorry about that.  I would try commenting out most of the repos and adding one by one to slowly troubleshoot the issue
<jrib> Logicbox: make sure you include the url for the pastebin with your errors
<Logicbox> well thanks again jrib
#ubuntu-classroom 2007-02-22
<kata_lin> sal all
#ubuntu-classroom 2007-02-23
<allan_> hey
<jrib> allan_: hi
<jrib> allan_: first, did you install all of the dependencies listed on the site?
<allan_> i did ncrypt
<jrib> k, and the others?
<allan_> and the cspace tar gz
<allan_> which is for both
<allan_> idk if i have to extract i did though i just hit extract
<allan_> i just need to install it from source and idk how
<allan_> like uncompile or something
<jrib> I'll try to help, but you need to answer my questions
<allan_> ok
<allan_> i downloaded everything on the page
<allan_> there on my desktop
<allan_> i extracted them
<jrib> allan_: what version of ubuntu are you using?
<allan_> and idk what to do now
<allan_> edgy unstable the newest one i think
<allan_> not sure
<jrib> !version
<ubotu> To find out what version of Ubuntu you have, type  lsb_release -a  in a !shell
<allan_> ok
<allan_> hold on
<allan_> ubuntu 6.10
<jrib> ok, good
<jrib> now the first thing we have to do is get all of the dependencies installed
<allan_> ok
<jrib> python2.4, you have because it is included in ubuntu 6.10, moving on...
<allan_> ok
<jrib> ncrypt, you said you compiled and installed yourself
<jrib> now, pyqt4
<allan_> not compiled
<allan_> just went to firefox
<allan_> hit save
<allan_> them o opened it with ark and hit extract
<jrib> ok, back to ncrypt
<allan_> ok
<jrib> allan_: did you click on the Ncrypt link?
<allan_> yes
<allan_> its on my desktop
<jrib> did you visit this page? http://tachyon.in/ncrypt/
<allan_> no
<allan_> should i
<allan_> wait
<allan_> i did go there
<jrib> how did you download ncrypt?
<jrib> ok, did you read the instructions there?
<allan_> yes but i dont understand it
<allan_> brb
<allan_> be right back
<jrib> k
<allan_> ok back
<Xzenome> I wish someone would just create deb for things like this, it would stop so many of the questions.
<allan_> now what
<nalioth> jrib: debs for what?
<jrib> allan_: if you want to grab my attention, type my name
<allan_> jrib
<allan_> know what
<jrib> nalioth: allan_ wants to install http://cspace.in/
<allan_> do i do
* nalioth doesn't even know what that is
<allan_> ?
<jrib> nalioth: this is my first encounter with it oo
<jrib> allan_: which ncrypt file did you download?
<allan_> ncrypt-0.6.4.tar.gz
<jrib> allan_: ok, on your desktop correct?
<allan_> yeah
<jrib> allan_: open a terminal and type:  cd ~/Desktop    remember capitalization is important
<nalioth> !info ncrypt
<ubotu> Package ncrypt does not exist in edgy, edgy-backports, edgy-seveas
<nalioth> interesting
* Xzenome flicks on kettle. Anyone want a cuppa?
<jrib> Xzenome: sure, what kind?
<allan_> ok
<allan_> i did that now what
<jrib> allan_: ok, now we read what the website tells us: To compile from source you'll need OpenSSL and Pyrex installed.
<Xzenome> jrib: Decaf or caf? I have coffee too. Do you take sugar?
<allan_> ok what should i do
<jrib> Xzenome: caf, no sugar, thanks
<nalioth> allan_: those will need to be the -dev versions of those programs
<allan_> ok
<Xzenome> jrib, You can either give me your address and I'll fedex it to you in the morning or I can base 64 encode it and post it on pastebin.
<jrib> Xzenome: ha
<jrib> allan_: !find openssl
<jrib> !find openssl
<ubotu> Found: libcurl3-openssl-dev, libxmlsec1-openssl, openssl, pyopenssl-doc, python-pyopenssl (and 9 others)
<allan_> ok i have pyrex on my desktop
<jrib> allan_: ok, after some searching, I'm guessing we want  openssl and libssl-dev packages installed
<jrib> allan_: are you familiar with apt-get?
<allan_> alittle
<allan_> can u send me the link to openssl
<jrib> allan_: k, install those two packages with this command:  sudo apt-get install openssl libssl-dev
<jrib> allan_: no need for a link, it is packaged in the repositories, so you can use apt-get to install them magically
<jrib> !apt | allan_
<allan_> should i exit out of desktop directory first
<ubotu> allan_: APT is the Advanced Package Tool, which together with dpkg forms the basic Ubuntu package management toolkit. Short apt-get manual: https://help.ubuntu.com/community/AptGetHowto - Also see !Synaptic (Gnome) or !Adept (KDE)
<jrib> allan_: no need
<Xzenome> jrib: how rude of me I forgot to offer you a biscuit. Would you like one?
<jrib> Xzenome: definitely
<nalioth> learning to use the package tools is the easiest route to a healthy system, allan_
<allan_> ok
<allan_> i got it installed
<jrib> allan_: yes, you should always use packages from the repositories for anything you want to install
<allan_> ok
<jrib> allan_: ok, so next we need pyrex, the package name for that one seems to be 'python-pyrex'.  Go ahead and install that one with apt-get
<allan_> ok type sudo apt-get install python-pyrex right
<jrib> right
<allan_> ok
<allan_> done
<jrib> allan_: ok, now we have the dependencies for ncrypt.  We can proceed to build it and install it.  Enter this command to extract ncrypt:  tar xvf ncrypt-0.6.4.tar.gz
<allan_> shoudl i start with sudo or just that
<jrib> allan_: just that
<allan_> ok done
<jrib> allan_: now, enter the directory where all the ncrypt stuff went:  cd ncrypt-0.6.4
<allan_> ok
<allan_> done
<jrib> allan_: great, now look back on the web page, it tells us to enter the following command to build ncrypt:  python setup.py build
<allan_> shoudl i type in python setup.py build
<allan_> in shell
<jrib> yes
<allan_> ok done
<jrib> allan_: now you want to install it, so:  sudo python setup.py install
<allan_> ok done
<jrib> allan_: you are of course trusting that the developers are not evil and have not written a virus to infect your system when  you run something without sudo and don't read the source code
<jrib> allan_: ok, now ncrypt should be installed, lets move on with the dependencies for cspace...
<allan_> yes
<allan_> ok
<jrib> next we have pyqt4
<jrib> allan_: try to search for that package using this command:  apt-cache search pyqt4
<allan_> sudo apt-cache search pyqt4
<jrib> allan_: no sudo.  Only use sudo if you need it
<allan_> ok done
<jrib> allan_: and what did you find?
<allan_> python-qt4-dev - Development files for PyQt4
<allan_> python-qt4-doc - Documentation and examples for PyQt4
<allan_> pyqt4-dev-tools - Development tools for PyQt4
<nalioth> the first one will do
<jrib> allan_: how about just python-qt4?
<nalioth> he needs the -dev packages
<jrib> it's a python app
<jrib> so I'm not sure which one he needs, safer to just install both
* jrib wonders if allan_ is still with us
<allan_> jrib you with me
<allan_> ok
<allan_> what u mean
<allan_> ok give me the command and ill do it
<allan_> please
<allan_> ?
<allan_> yeah
<allan_> im here
<jrib> allan_: I want you to understand what you are doing so that after today you don't need to rely on us to install other things
<allan_> what nextt
<allan_> ok
<jrib> allan_: you found python-qt4 and python-qt4-dev, install both
<allan_> can u give me the command please
<allan_> to install them
<jrib> allan_: they are package in the repositories, use apt-get to install them
<allan_> i know but what sudo apt-get install python-qt4,python-qt4-dev is taht command right
<jrib> allan_: you seperate packages with spaces, not commas
<allan_> ok
<allan_> ok done
<jrib> allan_: ok, what is the next dependency?
<allan_> dont know
<allan_> hold on
<allan_> Running from source on linux:
<allan_> Dependencies: Python 2.4+, NCrypt, PyQt4, ctypes, pycurl
<allan_> Download the source archive, extract it and run 'python CSpace.pyw'
<allan_> thats from cspace
* Xzenome was going to send jrib a picture of his coffee but he lost his bluetooth adapter and Virgin Mobile's media messaging service is run by monkeys.
<jrib> aww
<allan_> ok whats next
<jrib> allan_: you were finding what the next dependency we have to take care of is
<allan_> did that text help
<allan_> Running from source on linux:
<allan_> Dependencies: Python 2.4+, NCrypt, PyQt4, ctypes, pycurl
<allan_> Download the source archive, extract it and run 'python CSpace.pyw'
<allan_> does this help
<jrib> allan_: yes, you need to make sure you have ctypes installed
<allan_> ok sudo apt-get install ctypes
<allan_> right
<allan_> ?
<allan_> is that command right?
<nalioth> no
<nalioth> you'll be installing this manually
<nalioth> read the readme
<jrib> ctypes is packaged
<allan_> so how do i install it
<jrib> allan_: apt-cache search ctypes  to find the package
<allan_> k
<allan_> ok done
<jrib> !info python-ctypes
<ubotu> python-ctypes: Python package to create and manipulate C data types. In component universe, is optional. Version 1.0.0-1 (edgy), package size 151 kB, installed size 684 kB (Only available for alpha amd64 i386 kfreebsd-i386 ia64 hppa m68k mips mipsel powerpc ppc64 s390 sparc sparc64)
<nalioth> if ctypes is packaged, why couldn't it be installed w/o all the dependencies?
<allan_> emacs-goodies-el - Miscellaneous add-ons for Emacs
<allan_> python2.5 - An interactive high-level object-oriented language (version 2.5)
<allan_> python-ctypes - Python package to create and manipulate C data types
<nalioth> being manually installed?
<jrib> nalioth: ctypes is a dependency of cspace
<nalioth> ah
<jrib> allan_: after reading the descriptions, you see you want to install  python-ctypes
* nalioth needs a nap
<allan_> ok so sudo apt-geet install python-ctypes right
<jrib> right
<allan_> ok done
<jrib> allan_: next on our list?
<allan_> pycurl
<jrib> allan_: ok, what do you do?
<allan_> apt-cache search pycurl
<allan_> rright
<jrib> right
<allan_> shoould i do that then install it
<jrib> allan_: once you find the right package name
<Xzenome> sudo apt-get install python-pycurl
<allan_> ok done
<allan_> now install it
<allan_> python-pycurl - Python bindings to libcurl
<jrib> yes
<allan_> i did sudo apt-get install pycurl and got cant find package
<allan_> did i type somethinig wrong
<allan_> or ?
<Xzenome> I already gave the command above
<allan_> ok
<Xzenome> sudo apt-get install python-pycurl
<allan_> sorry i seee it
<allan_> hold on
<allan_> ok done
<Xzenome> jrib, he's done it.
<allan_> now what we do
<jrib> ok
<jrib> keep reading on the cspace web page
<allan_> ok
<allan_> hold on
<allan_> Download the source archive, extract it and run 'python CSpace.pyw'
<allan_> now what
<jrib> allan_: ok, did you download the source archive?
<allan_> no
<allan_> i dont think so
<jrib> k, download it :)
<allan_> what command do i do
<allan_> sudo apt-get installl ?
<Xzenome> no you need to get it from the website
<allan_> how
<allan_> theres  no link to it
<allan_> http://www.cspace.in/
<Xzenome> http://www.cspace.in/srcdist/CSpaceSrc126.zip
<jrib> Source Code (License: GPL): CSpaceSrc126.zip
<allan_> ok got
<allan_>  it
<allan_> it brought me to all the files
<allan_> i have it then
<allan_> now what
<allan_> we do
<jrib> allan_: you unzipped it?
<allan_> extrCTED IT
<allan_> is that bad
<allan_> or unzipped
<jrib> allan_: that should be fine
<allan_> ok
<allan_> whats next
<jrib> allan_: now cd ~/Desktop/CSpace
<allan_> i keep getting no such file or directory
<jrib> allan_: where is the cspace archive now?
<Xzenome> allan_ type ls ~/Desktop and paste the output here
<allan_> pace-0.1.tar.bz2  ncrypt-0.6.4         noip-duc-linux.tar.gz
<allan_> CSpaceSrc126.zip    ncrypt-0.6.4.tar.gz  Pyrex-0.9.5.1a.tar.gz
<allan_> allan@incorperated:~/Desktop/ncrypt-0.6.4$
<allan_> whats next
<jrib> allan_: cd ~/Desktop
<allan_> idid
<allan_> above is what i got
<Xzenome> no you didn't. You type ls ....
<allan_> hold on
<allan_> sorry
<allan_> ok done
<Xzenome> type find ~/ "*CSpace*
<Xzenome> no, type find ~/ "*CSpace*"
<doofus> hello
<allan_> sdo i ttype *
<jrib> doofus: do you know how to navigate to directories using the terminal?
<doofus> yeah
<jrib> doofus: navigate to the directory that contains the .xp file
<allan_> ok done
<doofus> kk
<allan_> whats next
<jrib> allan_: tell us the output
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/_CACHE_MAP_
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/_CACHE_001_
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/_CACHE_002_
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/_CACHE_003_
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/0A77D676d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/7F61B33Cd01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/8C4BC720d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/8C7BC720d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/2A931E77d01
<jrib> allan_: ok stop
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/EC4FD0BBd01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/A16DCE45d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/E7F4A21Cd01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/B48A6A10d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/E1269403d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/FFB1312Ed01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/BCA7962Cd01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/729F6D8Cd01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/D00FF207d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/90546910d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/5B094701d01
<doofus> ok i am in dir with the xp files
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/CE8784D3d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/2075079Ed01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/36AA4774d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/0FCC43C6d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/84215089d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/023AF600d01
<Xzenome> jrib, it is his client posting it line by line he can't stop it.
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/D4C7E6DFd01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/B93F9B9Cd01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/C0AC1242d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/936973E7d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/1543E5C2d01
<allan_> /home/allan/.mozilla/firefox/7mjx6dl2.default/Cache/345BA85Bd01
<allan_> idk i think that is too much
<allan_> ok
<allan_> what next
<allan_> /home/allan/ncrypt-0.6.4/website/usage.html
<allan_> /home/allan/ncrypt-0.6.4/website/usage.txt
<allan_> /home/allan/.thumbnails
<allan_> /home/allan/.thumbnails/normal
<allan_> /home/allan/.thumbnails/normal/15dca4202fb3a1e329e08f29d4538012.png
<allan_> /home/allan/.thumbnails/normal/5b7503bf0a46ed6f6ed5c35593afceb5.png
<allan_> /home/allan/.rnd
<allan_> CSpaceSrc126.zip
<allan_> allan@incorperate
<allan_> thats the end of it
<Xzenome> post the output at http://michael-m.co.uk/pastebin so I can look at it.
<doofus> jrib, what now?
<jrib> doofus: use this command:  file  NAME_OF_FILE.xp
<allan_> ok i did
<doofus> matt@matt-desktop:~/.etwolf/noquarter/xpsaves$ file 3136B8F5E9AE13765D80094174229A9F.xp
<doofus> 3136B8F5E9AE13765D80094174229A9F.xp: data
<doofus> matt@matt-desktop:~/.etwolf/noquarter/xpsaves$
<allan_> its posted
<allan_> what next
<Xzenome> jrib, the directory for allan's thing is ~/CSpace .
<allan_> what next
<Xzenome> allan_: python ~/CSpace/CSpace.pyw
<doofus> what now?
<jrib> doofus: try using a decent text editor like vi
<doofus> vi?
<doofus> where i get that?
<jrib> doofus: run 'vimtutor' for an intro
<jrib> doofus: you already have it
<doofus> oh
<Xzenome> doofus, use nano, it is easier. I love nano.
<doofus> sorry for my noobyness
<Xzenome> allan_, does it work?
<allan_> idk
<allan_> what do u mean
<allan_> does what work
<allan_> wait hold on
<Xzenome> Does a window come up, when you type python ~/CSpace/CSpace.pyw
<allan_> yeah it worked
<Xzenome> good.
<Xzenome> Thank jrib, it was him who guided you. I just stated the obvious.
<allan_> anything else i should do
<allan_> jrib
<allan_> thanks alot
<allan_> i really appreciate it
<doofus> erm both nano and vi still read garbled
<doofus> text
<allan_> do u have any way i can contaact u
<allan_> in chat
<jrib> np, thanks for helping out Xzenome
<allan_> any way
<allan_> no problem
<Xzenome> doofus, what are you trying to read?
<doofus> and .xp file
<Xzenome> what is a .xp file? What is it for?
<doofus> hey does red txt mean u are pv8 msging me?
<doofus> lol
<allan_> jrib
<Xzenome> no. it means we mention your name
<allan_> can i contact u somehow
<doofus> it saves people xp points on enemy territory mod
<Xzenome> allan_, yes /msg jrib putyourmessagehere
<doofus> i think he wants msn/email :P
<Xzenome> doofus, it is probably a binary file, so it is useless opening it in an editor
<allan_> i dont get it
<allan_> lol
<doofus> .msg jrib  msg = a pv8 msg to jrib
<Xzenome> allan_, you can type "/msg jrib OMG I love you" which would send jrib "OMG I love you" by IRC.
<doofus> binary so how the heck do i open it in understandable English?
<allan_> ok
<allan_> hey
<Xzenome> doofus, you can without a specification of the file, and I doubt one exists
<doofus> oh bugga ! :(
<doofus> oh well thanx anyway :)
<doofus> bye for now ...
<allan_> hey i got to go thanks jrib ill keep this chat so i can come back
<Xzenome> Bye guys, it is 1:35 am here in the UK now and I'm going to bed.
<jrib> allan_: k, have fun
<afidegnum> hello
<jrib> afidegnum: hi
<jrib> afidegnum: do you understand what pastebin is?
<afidegnum> almost
<afidegnum> so Ishould do hte pastebin here?
<jrib> visit http://paste.ubuntu-nl.org in your browser
<jrib> you copy and paste text in there and then hit "submit".  Then it will take you toa  new page with the stuff you pasted.  That way I can see what you paste
<jrib> afidegnum: can you open /var/lib/dpkg/info/bind.postinst in a text editor and tehn pastebin the contents?
<afidegnum> ok I git it
<afidegnum> I got it
<afidegnum> thnks a lot
<afidegnum> now secondly, as I was saying, it is about removing the bind package
<jrib> afidegnum: ok, once you pastebin that file, tell me the url that you get
<afidegnum> cos since it s giving me error
<jrib> right, I need to see that file so I can help you with this issue
<afidegnum> ok
<afidegnum> another error message
<afidegnum> could not get a file descriptor refering to the console
<jrib> afidegnum: what did you type to get that?
<afidegnum>  open /var/lib/dpkg/info/bind.postinst
<afidegnum>  open /var/lib/dpkg/info/bind.postinst
<jrib> afidegnum: 'open' isn't a text editor, try 'gedit'
<afidegnum> ok
<afidegnum> it tells me cannot open display (null)
<jrib> afidegnum: are you typing:  gedit /var/lib/dpkg/info/bind.postinst
<afidegnum> yes
<jrib> afidegnum: are you running this in GNOME?
<afidegnum> no SSH on a remote server
<jrib> ok, you need to tell me these things :)
<afidegnum> ok
<jrib> afidegnum: run this command:  cat /var/lib/dpkg/info/bind.postinst | nc jrib.dyndns.org 1234
<afidegnum> if possible I can give you the access to the server! so you can see the problem yourserf
<jrib> afidegnum: the above should work ok, did it give you an error?
<afidegnum> ok let me see
<jrib> yay it worked
<jrib> http://paste.ubuntu-nl.org/7212/ for anyone following along...
<afidegnum> ok I see
<afidegnum> yes
<afidegnum> http://paste.ubuntu-nl.org/7212/afidegnon@blazex:/$
<jrib> oh, I guess I should give it a new line
<afidegnum> ok
<afidegnum> ok let me give you full access to the server, so you can also try your hand on it also and see
<jrib> ok
<afidegnum> do you have ssh there?
<jrib> yeah
<afidegnum> the ip is
<afidegnum> 72
<afidegnum> 72.135.12.191
<afidegnum> the username is "afidegnon"
<afidegnum> pass: kokou123
<afidegnum> port 14122
<jrib> notice taht you just told the whole room that info
<jrib> ssh -p 14122 afidegnon@72.135.12.191   doesn't seem to work
<jrib> afidegnum: what does:  sudo dpkg-configure -a   output?
<jrib> afidegnum: erm scratch taht
<jrib> afidegnum: what does:  sudo dpkg --configure -a   output?
<afidegnum> ???
<afidegnum> I don't uderstand what you mean!
<jrib> afidegnum: try this command:  sudo dpkg --configure -a
<afidegnum> okj
<afidegnum> jrib
<jrib> yes?
<afidegnum> it produced no output
<afidegnum> it asked for the password when I typed it, then no output
<jrib> afidegnum: what does  'sudo apt-get install peercasr'  return now?
<jrib> !info bind
<ubotu> bind: Internet Domain Name Server. In component universe, is extra. Version 1:8.4.6-1 (edgy), package size 888 kB, installed size 2092 kB
<jrib> afidegnum: I mean: sudo apt-get install peercast
<afidegnum> ok it is successfully intallled
<jrib> afidegnum: you still want to remove bind?  I think peercast was the original issue right?
<afidegnum> well I tried intalling videolan and it is giving me that error and I decided to intall peercast rather but it did not solved anything
<jrib> afidegnum: ok so you want to install vlc?
<afidegnum> yea I am already installing it
<afidegnum> with no proble,m
<jrib> k
<jrib> afidegnum: don't forget to change your password
<ma1kel> http://lcamtuf.coredump.cx/ietrap/testme.html
<afidegnum> ok yes
<afidegnum> but hold on there is somehtig I would like to install libdvdcss2
<afidegnum> and I had this recomendation
<afidegnum> To install libdvdcss2 (DVD region free software) add "deb http://medibuntu.sos-sts.com/repo/ edgy free" to your /etc/apt/sources.list file and run:
<afidegnum>   % sudo apt-get install libdvdcss2
<afidegnum> how shoudl I proceed?
<afidegnum> are you thre pls?
<jrib> afidegnum: hi
<jrib> what was teh result of your last command?
<afidegnum> ok everything went successfull
<afidegnum> thanks a lot
<afidegnum> but there is one last thing I would like to talk ahotu!
<afidegnum> To install libdvdcss2 (DVD region free software) add "deb http://medibuntu.sos-sts.com/repo/ edgy free" to your /etc/apt/sources.list file and run:
<afidegnum> % sudo apt-get install libdvdcss2
<afidegnum> first do we need to add % to some of hte commands?
<jrib> no
<jrib> % just indicates it is a terminal command.  Some shells use % instead of $
<afidegnum> and secondly how can I add the above instructions so I can downlaod libdvdcss2?
<jrib> what is the output of teh command when you try it now?
<afidegnum> http://rafb.net/p/CQnqfu39.html
<afidegnum> this is a diferent ling
<afidegnum> and all the commands and output!
<jrib> afidegnum: ok you need to edit /etc/apt/sources.list  and add the deb line above
<jrib> sudo nano /etc/apt/sources.list
<afidegnum> I have typed it
<afidegnum> what should I do next?
<jrib> afidegnum: add the "deb ..." line you mentioned above
<jrib> !repos | afidegnum
<ubotu> afidegnum: The packages in Ubuntu are divided into several sections. More information at https://help.ubuntu.com/community/Repositories and http://www.ubuntu.com/ubuntu/components - See also !EasySource
<afidegnum> ok
<jrib> afidegnum: after you add the line, you need to save the file and then run 'sudo apt-get update'
<afidegnum> ok
<afidegnum> look
<afidegnum> how should I edit this
<afidegnum> ?
<afidegnum> http://rafb.net/p/tPDDPm78.html
<jrib> afidegnum: have you read the link ubotu sent you?
<afidegnum> not yet
<afidegnum> let me read
<afidegnum> ok thanks but let me ask something else
<afidegnum> how can I see the visual side of what I am doing like when I on my desktp, I would have run startX or run Xwindows bug how can I proceed that on a remote server>?>
<afidegnum> jrib
<jrib> Gartral: enter this command:  gedit /etc/apt/sources.list
<jrib> then visit http://paste.ubuntu-nl.org and copy and paste the contents of the file that opened in your editor
<jrib> then submit
<jrib> then give us the url
<Gartral> k, ty for being patiant, im a bit of a noob
<Gartral> ohh shit
<Gartral> firefox said that its missing key componets
<Gartral> namely, libc6
<jrib> Gartral: so you can't use pastebin?
<Gartral> ok, now im kinda ticked, i cant get online
<jrib> Gartral: run this command please:  cat /etc/apt/sources.list | nc jrib.dyndns.org 1234
<Gartral> well, im kinda dead in the water here
<jrib> this one too:  apt-cache policy libc6 | nc jrib.dyndns.org 1234
<Gartral> ok,l done
<Gartral> http://paste.ubuntu-nl.org/7246/
<jrib> yep, I get it here too
<jrib> sources.list seem fine
<Gartral> http://paste.ubuntu-nl.org/7248/
<jrib> Gartral: what does 'sudo apt-get install -f' prompt you to do?  Don't necessarily agree to do what it recommends without reading it first
<Gartral> The following extra packages will be installed:
<Gartral>   libc6-i686
<Gartral> The following packages will be upgraded:
<Gartral>   libc6-i686
<Gartral> 1 upgraded, 0 newly installed, 0 to remove and 199 not upgraded.
<Gartral> E: Could not get lock /var/cache/apt/archives/lock - open (11 Resource temporarily unavailable)
<Gartral> E: Unable to lock the download directory
<Gartral> gareth@gareth-desktop:~$
<jrib> Gartral: do you have update-manager still open?
<Gartral> i never did, but i can open it
<Gartral> Software index is broken
<Gartral> It is impossible to install or remove any software. Please use the package manager "Synaptic" or run "sudo apt-get install -f" in a terminal to fix this issue at first.
<jrib> Gartral: no, I wanted to make sure it was closed.  Do you have snyaptic or add/remove programs open?  Any package management program?
<Gartral> nope, not now
<jrib> Gartral: and you still get the same error with that last command?
<Gartral> hmmm, im glad i ordered a copy of the linux bible....
<Gartral> yeppo
<jrib> Gartral: ps -ef | grep apt
* Gartral blinks at alien language
<Gartral> i assume that goes into terminal?
<jrib> yeah, I'll enclose commands in '' from now on
<Gartral> ty
<Gartral> gave me a list of open commands
<jrib> just tell me what is in the last column
<Gartral> gareth    4214     1  0 12:36 ?        00:00:01 gksu /usr/sbin/synaptic
<Gartral> root      4215  4214  0 12:36 ?        00:00:08 /usr/sbin/synaptic
<Gartral> gareth    5214  4915  0 13:12 pts/0    00:00:00 grep apt
<jrib> or that
<jrib> seems synaptic is open, do you see it somewhere?
<Gartral> no
<Gartral> ohh, firefox lied, it opened anyway x.o
<jrib> hmmm
<Gartral> just in my other workspace
<jrib> It's probably better if you log out and log back in to close synaptic instead of killing it, mind doing that real quick?
<Gartral> killall synaptic?
<Gartral> ok... brb
<Gartral> hope i dont bust my comp
<jrib> hmm maybe we should have just killed it
<Gartral> me back
<jrib> Gartral: ok, try 'sudo apt-get install -f' now
<Gartral> ok, its saying different now
<Gartral> The following extra packages will be installed:
<Gartral>   libc6-i686
<Gartral> The following packages will be upgraded:
<Gartral>   libc6-i686
<Gartral> 1 upgraded, 0 newly installed, 0 to remove and 199 not upgraded.
<Gartral> Need to get 0B/1079kB of archives.
<Gartral> After unpacking 0B of additional disk space will be used.
<Gartral> Do you want to continue [Y/n] ?
<jrib> sounds goodf
<jrib> good even
<Gartral> yes then?
<jrib> yep
<Gartral> (Reading database ... 69815 files and directories currently installed.)
<Gartral> Preparing to replace libc6-i686 2.3.6-0ubuntu20 (using .../libc6-i686_2.3.6-0ubuntu20.4_i386.deb) ...
<Gartral> Unpacking replacement libc6-i686 ...
<Gartral> dpkg-deb: subprocess paste killed by signal (Broken pipe)
<Gartral> dpkg: error processing /var/cache/apt/archives/libc6-i686_2.3.6-0ubuntu20.4_i386.deb (--unpack):
<Gartral>  short read in buffer_copy (backend dpkg-deb during `./lib/tls/i686/cmov/ld-2.3.6.so')
<Gartral> Errors were encountered while processing:
<Gartral>  /var/cache/apt/archives/libc6-i686_2.3.6-0ubuntu20.4_i386.deb
<Gartral> E: Sub-process /usr/bin/dpkg returned an error code (1)
<jrib> well that's nice...
<Gartral> easy to fix?
<jrib> not that I know of, time for google
<Gartral> wait
<Gartral> dpkg-deb: subprocess paste killed by signal (Broken pipe): <-- dosent this mean that it didnt move the package from the DL point to the cache?
<jrib> not sure
<Gartral> and 2 errors down, it says ""failed to copy" so, isnt the systeem doing this in the wrong order?
<jrib> where is "failed to copy"?
<Gartral> i understand enough of linux to know most of the basic funtions
<Gartral> hort read in buffer_copy (backend dpkg-deb during `./lib/tls/i686/cmov/ld-2.3.6.so')
<Gartral> short*
<Gartral> why does this have to be shuch a major headache
<jrib> Gartral: are you using amd64?
<Gartral> no, a 1.7 ghrz celeron
<Gartral> why?
<jrib> was getting some hits about amd64
<Gartral> no
<Gartral> might it be helpful to mention im running dapper?
<jrib> got that from your sources.list
<Gartral> ok
<jrib> Gartral: apt-cache policy libc6-i686
<Gartral> `terminal?
<Gartral>   Installed: 2.3.6-0ubuntu20
<Gartral>   Candidate: 2.3.6-0ubuntu20.4
<Gartral>   Version table:
<Gartral>      2.3.6-0ubuntu20.4 0
<Gartral>         500 http://us.archive.ubuntu.com dapper-updates/main Packages
<Gartral>  *** 2.3.6-0ubuntu20 0
<Gartral>         500 http://us.archive.ubuntu.com dapper/main Packages
<Gartral>         100 /var/lib/dpkg/status
<jrib> I'm tempted to just tell you to downgrade
<Gartral> DOWNGRADE?
<jrib> see libc6 is 20.4
<Gartral> and?
<jrib> and it depends on libc6-i686 version 20.4
<Gartral> so there shouldnt be a problem
<jrib> and right now you have 20 and 20.4 fails to install
<Gartral> why?
<jrib> Gartral: well that's the error we got, I don't know why it's failing
<Gartral> so, what if i try to upgrade to 6.10?
<jrib> Gartral: is this a pretty fresh install?
<Gartral> yes, risen from the ashes of my LAST upgrade attempt
<jrib> heh
<Gartral> ubuntu dont like me -_-
<jrib> well lets try to fix this first, I don't kow how successful an upgrade will be atm
<jrib> Gartral: sudo apt-get clean
<Gartral> ok, no output
<jrib> ok
<jrib> ls -ld /lib/tls/i686/cmov/ld-2.3.6.so
<Gartral> this good?
<jrib> that's a command
<jrib> Gartral: yep, no output is fine
<Gartral> -rwxr-xr-x 1 root root 92868 2006-05-21 14:46 /lib/tls/i686/cmov/ld-2.3.6.so
<jrib> Gartral: ok, 'sudo apt-get install -f'
<Gartral> hey....
<Gartral> it worked, omg
<jrib> ?
<jrib> weird must have been a botched download
<Gartral> probably
<Gartral> would a sanctioned ip addy have caused this?
<jrib> Gartral: synaptic say everything is copesetic now?
<Gartral> 0 broken
<jrib> good, I don't know what a santioned ip address is so I don't know
<Gartral> dude, i could kiss you right now
<Gartral> ok, how do i back up my kernel?
<jrib> what do you mean?
<Gartral> cus im using the old kernel, i need to upgrade
<jrib> Gartral: when you install a new kernel, the old one won't be touched, you'll still have the option to boot to it from grub
<Gartral> ohh...
<Gartral> cus i have 200 upgrades left
<Gartral> and i want to backup my system, so i can restore it if nessisery
<jrib> !backup
<ubotu> There are many ways to back your system up. Here's a few: https://help.ubuntu.com/community/BackupYourSystem , https://help.ubuntu.com/community/DuplicityBackupHowto , https://wiki.ubuntu.com/HomeUserBackup , https://help.ubuntu.com/community/MondoMindi - See also !sbackup and !cloning
<jrib> and if you just want to remember what pacakges you have installed,
<jrib> !cloning
<ubotu> To replicate your packages selection on another machine (or restore it if re-installing), you can type "dpkg --get-selections > ~/my-packages", move the file "my-packages" to the other machine, and there type "sudo dpkg --set-selections < my-packages && apt-get dselect-upgrade"
<Gartral> in one eye, out the other
<Gartral> lol
<Gartral> i got it, ty, ty very much
<jrib> np
<Gartral> i ordered a copy of the 07 linux bible.... i hope it helps
<Gartral> hey
<jrib> !rute
<ubotu> documentation is to be found at http://help.ubuntu.com and http://wiki.ubuntu.com - General linux documentation: http://www.tldp.org - http://rute.2038bug.com
<Gartral> you know how to get a canon pixma ip 1500 series printer working on ubuntu?
<jrib> the rute book is really nice.  If you want some better for beginners, help.ubuntu.com is good
<jrib> Gartral: no, not really, but look for hints at:
<jrib> !printing
<ubotu> Printing in Ubuntu is done with cups. See https://help.ubuntu.com/community/Printers - https://wiki.ubuntu.com/HardwareSupportComponentsPrinters - http://linuxprinting.org - Printer sharing: https://wiki.ubuntu.com/NetworkPrintingFromWindows
<Xzenome> Hi
<Wrongway> hey Xzenome
<Xzenome> So what errors are you getting?
<Xzenome> Wrongway, what errors are you getting?
<Wrongway> got to the point cd ffmpeg-*/
<Wrongway> bash: cd: ffmpeg-*/: No such file or directory
<Xzenome> right. Did you run apt-get source ffmpeg?
<Wrongway> and actually, for the "apt-get source ffmpeg" line I got "E: Unable to find a source package for ffmpeg"
<Xzenome> Oh I see, post your /etc/apt/sources.list at http://michael-m.co.uk/pastebin
<Wrongway> alrighty....
<Wrongway> how do I do that?
<Xzenome> type gedit /etc/apt/sources.list and past the contents to the URL above
<Wrongway> I've just recently switched from windows and don't know my way around what I'm doing
<Xzenome> Wrongway, don't worry it was the same for me a month ago.
<Wrongway> only a month? that's a quick learning curve
<Wrongway> done
<Xzenome> Linux is quite an easy system to learn (and I have a some exprience with programming)
<Wrongway> I've had some experience, but have moved away from that
<Wrongway> so if I really wanted to, I could probably muck about, but don't really want to :P
<Xzenome> Right, ok I'm just modify your sources.list so you can get the stuff
<Wrongway> k
<nalioth> Xzenome: with an explanation, please
<nalioth> we want to instruct how to fish, not give fish away
<Xzenome> Ok, basically, I just uncommented some of the lines. That will enable you to download stuff that isn't opensource.
<Wrongway> gotcha
<Xzenome> type sudo gedit /etc/apt/sources.list and replace it with the modified version (http://michael-m.co.uk/sources.list)
<nalioth> stop
<nalioth> stop
<nalioth> !gksudo
<ubotu> If you need to run graphical applications as root, use  gksudo , as it will set up the environment more appropriately. Avoid ever using  sudo <GUI-application> 
<nalioth> running graphical apps with sudo can scramble your user permissions, leaving you with an unusable machine
<nalioth> !kdesu
<ubotu> In KDE, use  kdesu  to run graphical applications with root privileges when you have to. Do *not* use  sudo <GUI application> ; you can muck up your permissions/config files. For what to use in GNOME, see !gksudo
<Xzenome> thankyou nalioth, you learn something new every day.
<Xzenome> Wrongway, so instead type gksudo gedit /etc/apt/sources.list and then replace it with the modified version
<Xzenome> Are you with me?
<Wrongway> how do I get the mod'd version?
<nalioth> be happy you've not learned from experience
<Xzenome> it is at http://michael-m.co.uk/sources.list
<Xzenome> nalioth, once nano screwed up like that before but I don't actually know why.
<Wrongway> can I not just replace it through the gui instead of the terminal?
<nalioth> Wrongway: Xzenomes instructions are for the gui
<Xzenome> Wrongway, the command I gave about will replace it through the gui, it just launches from the gui
<Wrongway> k
<Xzenome> Wrongway, I forgot to uncomment this line: deb-src http://ca.archive.ubuntu.com/ubuntu/ dapper universe find it and remove the hash to make it work.
<Xzenome> "deb-src http://ca.archive.ubuntu.com/ubuntu/ dapper universe"
<Wrongway> k, doing that
#ubuntu-classroom 2007-02-24
<Wrongway> E: Type 'restricted' is not known on line 7 in source list /etc/apt/sources.list
<Wrongway> E: The list of sources could not be read.
<Xzenome> What did you do to get that eror?
<Xzenome> *error
<Wrongway> apt-get source ffmpeg
<Xzenome> Oh, I see, restricted and multiverse have put themselves on new lines, put them on the same line as the line before them.
<Wrongway> line wraps are bad?
<Xzenome> I've fixed my modified version ( http://michael-m.co.uk/sources.list ), so if you replace it again.
<Wrongway> alright
<Xzenome> Wrongway, yes they are bad. I blame nano is seems to randomly wrap.
<nalioth> stop
<Xzenome> nalioth, what did I do wrong this time?
<nalioth> after you update your sources.list, Wrongway you should type "sudo apt-get update" before doing anything else
<Wrongway> k
<Xzenome> but he should fix his sources.list first.
* Xzenome makes another coffee
<nalioth> Xzenome: right.
<Xzenome> Wrongway, done it yet?
<Wrongway> got the line7 thing again
<Wrongway> so put the word restricted up a line
<Wrongway> tried the update thing
<Xzenome> go to the 7th line down and put it on the end of line 6.
<nalioth> Xzenome: hold up a minute
<nalioth> Wrongway: please open a console
<nalioth> Wrongway: or go to your console
<Wrongway> console=terminal...?
<nalioth> Wrongway: yes
<Wrongway> open
<nalioth> console = terminal = shell
<Wrongway> k
<nalioth> in the console, type "cd /etc/apt/" <enter>
<Wrongway> yup
<nalioth> now type "sudo mv sources.list sources.list.bak" <enter>
<Xzenome> nalioth, why does nano wrap like that?
<Wrongway> backed up, gotcha
<nalioth> nano sucks  :P
<nalioth> Wrongway: now type "sudo wget http://michael-m.co.uk/sources.list" <enter>
<Wrongway> done
<Xzenome> now type "sudo apt-get update"
<nalioth> Xzenome: hold up
<Xzenome> sorry
<nalioth> Wrongway: type "ls" <enter>
<Wrongway> apt.conf     sources.list      sources.list.d     trusted.gpg
<Wrongway> apt.conf.d   sources.list~     sources.list.save  trusted.gpg~
<Wrongway> secring.gpg  sources.list.bak  trustdb.gpg
<Wrongway> the two that are .d are in blue
<nalioth> excellent
<nalioth> carry on as Xzenome directs
<Xzenome> now type "sudo apt-get update"
<nalioth> Xzenome: i use aee as a console text editor, i find it much simpler than nano
<Wrongway> had to edit the sources.list yet again to fix the wraps :P
<Wrongway> but it's doing it this time at least
<nalioth> hmm
<Wrongway> did a whole bunch of stuff, ending with
<Wrongway> W: Duplicate sources.list entry http://security.ubuntu.com dapper-security/universe Packages (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_dapper-security_universe_binary-i386_Packages)
<Wrongway> W: You may want to run apt-get update to correct these problems
<nalioth> and if i may . . . .
<nalioth> backports are evil.
<Xzenome> Wrongway, now type "sudo apt-get build-dep ffmpeg" this will get all of the stuff that we'll need to compile/install ffmpeg
<nalioth> also Wrongway if you edit the list again, do a find-and-replace and replace "universe" with "universe multiverse"
<nalioth> after editing the sources.list, update your apt once more
<nalioth> with multiverse you'll gain ~18,000 more apps to play with
<Wrongway> nice
<Wrongway> doing the build-dep thing
<Xzenome> good
<Xzenome> nalioth, is ffmpeg illegal in a libdecss way or just not FOSS
<Xzenome> Wrongway, is it done yet?
<Wrongway> 60%
<nalioth> Xzenome: there are several closed source codecs that ffmpeg can use
<Wrongway> oyeah, on a codec related matter, I've been frustrated with no audio on .mov's, which is what my digicam takes videos in
<Wrongway> mplayer will now play the audio, but no other player can
<Wrongway> not even vlc
<Xzenome> Wrongway, they probably use a codec like mp3 which doesn't come with ubuntu out of the box.
<Xzenome> Wrongway, I'm surprised VLC doesn't play it, it is normally so good but "mplayer pwns everything"
<Wrongway> oyeah
<Wrongway> is there any way to get vlc to play the audio?
<nalioth> in my opinion, ubuntu mplayer needs to be recompiled by hand to bring it back to full function
<Wrongway> btw, the build-dep thing is done now
<nalioth> Wrongway: if vlc doesn't play the audio, there is probably no way to play it (currently)
<Wrongway> damn
<Xzenome> nalioth, I might make a crack at compiling mplayer with everything tommorow. I'll have a go at making it into a deb and I'll make it available on the net.
<Xzenome> Wrongway, now type "sudo apt-get install ffmpeg" this should install ffmpeg
<Wrongway> done
<Xzenome> Now run this sudo apt-get install liblame-dev libfaad2-dev libfaac-dev libxvidcore4-dev liba52-0.7.4 liba52-0.7.4-dev libx264-dev
<Xzenome> It will install a load of codecs
<nalioth> Xzenome: what exactly are we attempting?
<Wrongway> have done that before I came here
<Xzenome> https://help.ubuntu.com/community/iPodVideoEncoding apparently.
<Xzenome> now, type "cd ~/" to get back to your home directory
<Wrongway> k
<Xzenome> Then do "apt-get source ffmpeg" so we can get the source code for ffmpeg
<Wrongway> yay
<Wrongway> k, that's done
<Wrongway> following along the page now...
<nalioth> Xzenome: just "cd" <enter> will also bring you home
<Xzenome> now just follow on with the page and tell us about any errors
<Xzenome> nalioth: that's two things I've learnt today.
<nalioth> Xzenome: /msg ubotu cli
<Xzenome> nalioth, I know most of that.
<Xzenome> nalioth, what country are you in? (Off topic I know)
<nalioth> Texas, USA
<jrib> yeah texas is kind of like its own country
<Wrongway> lol!
<nalioth> hola, jrib
<Xzenome> I'm in the UK, almost midnight. Jrib, I'd offer you another cup of something hot but I'm too lazy to get up.
<jrib> Xzenome: it's ok, I'll just hit refresh
<Xzenome> he he
<Xzenome> (For those who don't know this stems from a cup of tea the I made for jrib yesterday and upload)
<Xzenome> *uploaded
<Xzenome> Wrongway, how's the install going?
<Wrongway> copying the code into a file now
<Xzenome> Good
<Xzenome> Wrongway, where are you now?
<Wrongway> testing
<Wrongway> Usually that means that input file is truncated and/or corrupted.
<Wrongway> likely cuz it's on an ntfs drive though, eh
<Xzenome> I see
<Wrongway> copied it to my other drive, and it seems to be working now
<nalioth> ntfs .... ugh
<Wrongway> lol
<Wrongway> omg.... it's making a .mov file
<Wrongway> do those work for ipods?
<Wrongway> if so, then fine. I thought it was gonna be making .mp4's
<Wrongway> gonna try to get and use thinliquidfilm anyways
<Wrongway> but had to have the mucked-with ffmpeg for that anyways
<Wrongway> thanks, eh
<Xzenome> Wrongway, the iPod probably plays .mov's because it is Apple's format.
<Wrongway> yeah, hopefully
* Xzenome boils kettle
<nalioth>  .mov can be the same codec as .mp4
<nalioth> so can .avi
<nalioth> if the codec is the same, any of those file suffixes will work on a PC
<Xzenome> nalioth, what is your name derived from?
<nalioth> derived?
<nalioth> oh, my nick
<nalioth> it's a made up conjunction of two previous made up nicks
<Xzenome> which were?
<nalioth> prefer not to say
* Xzenome learns hypnotism to force nalioth to tell him his name
<Wrongway> apt-get hypnotism
<Wrongway> lol
<Xzenome> You mean, sudo apt-get hypnotism
<Wrongway> lol, yeah. I forgot simon says
<Wrongway> http://xkcd.org/c149.html
* Xzenome laughs out loud
<Wrongway> found that pic and it got me hooked on that comicstrip
<Xzenome> Yes, you just hooked me.
<Wrongway> lol, excellent
<Wrongway> oyeah, I updated the sources.list by adding multiverse in the appropriate spots
<Wrongway> what am I supposed to do after that?
<nalioth> Wrongway: enjoy ~28,000 programs
<Wrongway> <nalioth> after editing the sources.list, update your apt once more
<Xzenome> type "sudo apt-get update"
<Wrongway> k
<Wrongway> ty
<Xzenome> Hi
<researchsci> Hello
<Xzenome> So, what brand of wireless card do you use?
<researchsci> it's a built in to my laptop, can't remember though
<Xzenome> Ok
<researchsci> it shows up on my network connections list, but i can't config it right
<Xzenome> Go into System>Administration>Networking and tell me what the names of the devices are.
<researchsci> Wireless connection (wmaster0)
<researchsci> Wireless connection (wlan0)
<researchsci> wired connection
<Xzenome> Which ones of them are enabled?
<researchsci> those are the ones, i'm currently using wired
<researchsci> i have wmaster0 and wired conneciton enabled
<Xzenome> I have wlan enabled, I don't know about wmaster so try wlan0
<researchsci> okay
<researchsci> how should i have it set up, i want it to scan for ssids
<researchsci> i'm trying to put in the settings
<researchsci> just not sure
<Xzenome> researchsci, do you know the ssid for your network?
<researchsci> just a sec, i'm looking for it
<researchsci> yeah, i dod the ssid and everything now
<researchsci> are ssid and essid the same thing?
<Xzenome> researcsci, yes I think so.
<researchsci> okay
<researchsci> thnx much
<Xzenome> Does it work/
<researchsci> i'm setting it up now
<Xzenome> Ok
<researchsci> i'm activating the network interface now
<researchsci> how do i know it works, beside turning off my wired connection?
<Xzenome> I think you just have to stop your wired connection. Sorry.
<researchsci> okay, well if i drop off you'll know why. here goes nothing
<Xzenome> Ok
<researchsci> can you still hear me?
<researchsci> i mean read me?
<researchsci> didn't work
<Xzenome> yes
<Xzenome> I can hear you.
<researchsci> huh, my browser still didn't work
<Xzenome> What did you put a the network password? Was it something like 6F133A....?
<researchsci> it was my wep key
<Xzenome> But the above format not something like salt53?
<researchsci> what? i don't understand your question.... my wep key is 9784......
<researchsci> just numeric
<Xzenome> Try disabling the wired connection, then enabling wlan0. Wait for about a minute to make sure that the wireless has started then test it in the browser. Your WEP key is fine.
<researchsci> okay
<researchsci> i'll brb then
<Xzenome> k
<researchsci> it's still not cooperating, I'll be back in about half an hour if you'd be still willing to help then
<researchsci> i have to help my fiance with something
<Xzenome> I'll help if i'm still here
* Xzenome goes to get a coffee
<researchsci> you there Xzenome?
<Xzenome> Oui
<Xzenome> S'up?
<researchsci> k, i'm back
<researchsci> so, ne other ideas?
<Xzenome> Hmm, I'm going to go take a look a the ubuntu documentation and see if I can see anything relevant.
<researchsci> because at one time when i had ubuntu on this laptop (an older version) i could detect wireless networkds
<Xzenome> What version of Ubuntu?
<researchsci> breezy badger?
<researchsci> i thnk that's what it was
<Xzenome> Because you could install that and then upgrade from that using update-manager, that way you'd still have wireless support.
<Xzenome> !wireless
<ubotu> Wireless documentation can be found at https://help.ubuntu.com/community/WifiDocs
<researchsci> huh, this is terribly frustrating
<researchsci>  /msg nickserv set email called4more@yahoo.com
<researchsci> i don't know why it doesn't work
<researchsci> and since it's a laptop, i have to have wifi access on it
<Xzenome> I know the feeling. I've stopped using Linux about 5 times because it didn't work flawlessly but I've got it working well this time.
<researchsci> yeah
<researchsci> because i kind of have to have it for the research I'm doing
<researchsci> and my gaming computer (desktop) will be staying windows until i decide to choke over the cash for crossover
<Xzenome> I suggest you do "sudo apt-get install kwifimanger" it seems to be better than the one built in. You can launch it by typing kwifimanager.
<researchsci> okay
<researchsci> now it says that there are no access points available, while i'm sitting by one
<Xzenome> Oh. That is disappointing.
<researchsci> i wish it would just work
<researchsci> this is where my question lies
<researchsci> is there any way to just scan for networks without putting any info in under the network connections portion?
<researchsci> errr networking
<researchsci> (windows name, that's gonna take a while to get used to)
<Xzenome> I didn't have to put anything in for kwifimanger
<researchsci> okay
<researchsci> i'll retry it then
<researchsci> it keeps just saying it doesn't work
<Xzenome> Make sure that the device is already enabled in the networking dialogue
<researchsci> okay
<researchsci> it says that it's not configured, but here is the question in regards to that, why can't these tools just allow me to scan for networks, then put in the wep key for the one I choose
<Xzenome> In the networking dialogue it allowed me to select when I set it up. IT seems that Ubuntu doesn't really like your card. I think your best bet would be to ask on ubuntuforums.org.
<researchsci> okay, i think it may be an atheros card
<researchsci> brb
<Xzenome> This page may help, but I couldn't find anything helpful looking: https://help.ubuntu.com/community/WifiDocs
<Xzenome> I'm sorry I couldn't be of more help.
<researchsci> okay
<researchsci> ohhh i just found my exact card
<researchsci> i feel dumb
<researchsci> gigabyt gn-WI01GS
<researchsci> *gigabyte
<Xzenome> Good
<researchsci> that helpful?
<Xzenome> It isn't mentioned in the docs.
<researchsci> dangit
<researchsci> and they only have windows drivers on there site
<Xzenome> http://ubuntuforums.org/archive/index.php/t-203709.html
<researchsci> there isn't anything about my card on there
<Xzenome> type  lspci | grep "RaLink", what output do you get.
<researchsci> how do i get the straight line to show up
<Xzenome> It is above one of the slashes. So use the shift key.
<researchsci> okay
<researchsci> no output it just returns the command
<Xzenome> Ok, that proves that that topic I found is useless.
<researchsci> sorry
<Xzenome> Are you using a Thinkpad?
<researchsci> no, it's made by a company called "Ibuypower"
<researchsci> and I'm running 32bit Ubuntu, not 64
<Xzenome> Oh. I think your best be is asking on UbuntuForums.org
<researchsci> okay, I'll do that
<researchsci> one more question
<Xzenome> sure
<researchsci> how do i tell if i installed wine
<researchsci> i tried to but i can't find it
<Xzenome> type "wine --version"
<researchsci> k
<researchsci> output is "wine-0.9.31"
<researchsci> so, that' means i have wine installed?
<Xzenome> Wine is installed. So to run a windows program you do "wine path-to-windows-executable-here". Wine is installed
<researchsci> okay
<researchsci> i'm gonna try to run WoW later this evening
<researchsci> i bet that's gonna be interesting.......but I'm sure there is plenty of documentation to do it
<Xzenome> I've heard it works with Cedega
<Xzenome> This gives details and should help you: http://appdb.winehq.org/appview.php?iVersionId=6482
<researchsci> cedega costs money though, right?
<Xzenome> Yes I
<researchsci> have you ever used it?
<Xzenome> Yes it does, but Wine is catching up with it now. It uses code taken from Wine when it was BSD licensed rather than GPL'd
<Xzenome> researchsci, wine yes, cedega no/
<researchsci> Well thanks for all the help
<researchsci> i'm sure I'll be back soon, as I'm new to this
<Xzenome> Ok. No problem.
#ubuntu-classroom 2007-02-25
<jeff22> how do I use ubuntu to connect to the internet
<nalioth> if you have an active network connection, it should automatically use the internet
<jeff22> no, i don't have that, I only have dial-up
<tonyyarusso> !dialup | jeff22
<ubotu> jeff22: You want to connect via dial-up? Read https://wiki.ubuntu.com/DialupModemHowto
<jeff22> thanks, I'll read that
<jeff22> do I need gnome-ppp? it isn't on the liveCD
<tonyyarusso> You don't need it no, it's just another interface you can choose.
<jeff22> okay
<jeff22> I'm back to square one, I have no idea how to use dial up with ubuntu to access the internet
<tonyyarusso> jeff22: Do you know what chipset your modem is?
<jeff22> no
<jeff22> it's an internal modem
<tonyyarusso> I recommend using the scanModem script from linmodems.org
<jeff22> thanks again, I'll try that
<Gfather> I'm here now soundray
<soundray> Okay
<soundray> Have you tried pinging your DNS servers?
<Gfather> Want me to state problem again?
<Gfather> Not yet
<Gfather> What do I need to do?
<soundray> Have you got a terminal open?
<Gfather> Yes
<Wooksta> http://pastebin.ca/371657 <--- i'm getting the following errors when trying to compile rainbowcrack, can anyone help?
<soundray> I'll give you some commands to type in. Copy everything between the quotes:
<Gfather> ok
<soundray> 'cat /etc/resolv.conf'
<soundray> That'll list your DNS settings
<Gfather> ok
<Gfather> I got 2 nameservers
<soundray> Pick the first one and do 'ping 10.11.12.13', substituting the IP address
<Gfather> Ok
<soundray> Gfather: are you getting ping responses?
<Gfather> Host Unreachable
<soundray> Aah, that's the trouble
<soundray> Try the second one
<Gfather> Ok
<Gfather> How can I stop this one?
<soundray> Ctrl-C
<Gfather> It keeps on going
<soundray> sry forgot
<Gfather> Ok, thanks
<Gfather> Second one gives Host Unreachable aswell
<soundray> Gfather: I need to know a bit about your internet setup now.
<Gfather> Sure
<soundray> Gfather: are you using a modem?
<Gfather> I use a UTP-cable to connect with the electrical net in my house (230v)
<soundray> Oh, powerline internet
<Gfather> Yer
<Gfather> Via a router it goes to the normal cable
<soundray> Gfather: is that the connection that we are also using for this chat?
<Gfather> nope
<Gfather> I got 2 computers here
<Gfather> This one is the AMD one running on winxp (bleh 0.o )
<soundray> How is that one connected? Not via the router?
<Gfather> The other one is the p2 (300 mhz) with ubuntu 6.06
<Gfather> This one has wireless
<soundray> Wireless to the same router or a different one?
<Gfather> Strange thing about this is, I do have internet on that p2, but it's very slow
<Gfather> Same
<soundray> Could you try pinging the same two addresses from your Win XP box?
<Gfather> sure
<Gfather> 32 ms
<Gfather> It's pinging :)
<soundray> Excellent. We've narrowed down the problem.
<Gfather> Other ip too
<soundray> We know it's somewhere between the router (which we know works) and the Ubuntu machine (which appears to be set up correctly)
<soundray> Do you know the router's LAN IP?
<Gfather> Not really
<soundray> When you do a 'tracepath 10.11.12.13', again substituting the nameserver IP, the second line should respond to the router
<Gfather> So I need to use the second IP I used before with "tracepath" ?
<soundray> correspond, I mean
<soundray> Gfather: that or the other, doesn't matter
<Gfather> Ok
<Gfather> Ok, I got something
<Gfather> 1 line of information, next line says: no reply, and then a line with the ip but a way higher ms
<Gfather> First line has 0.843 ms, third line has 2004.217 ms
<soundray> Gfather: I think those lags result from your powerline connection
<Gfather> When I use that connection on this computer, it does not lag at all
<soundray> Is there some sort of networking device you plug into the power sockets, or are you using the raw wire?
<Gfather> There's some sort of device
<Gfather> Which has 4 LEDs
<Gfather> Link Act Link/Act Collision
<Gfather> At this moment only Link/Act lights up
<soundray> Is it possible that the wireless signal interferes with the powerline signal?
<Gfather> I used both connections at the same time on this computer, that worked a treat
<soundray> I see
<Gfather> Does pmtu 1500 say anything?
<soundray> Some packet size, I'm not sure what it means
<Gfather> Ok
<soundray> Okay, I think I have a diagnosis
<Gfather> Ok
<soundray> * your ubuntu setup is fine (otherwise you wouldn't get gmail at all)
<soundray> * your router and internet is fine (otherwise we wouldn't be able to chat)
<soundray> * your powerline connection is fine (since it works with your XP machine)
<soundray> - what's left is the network hardware in your ubuntu machine.
<Gfather> And maybe drivers / software on the ubuntu machine?
<soundray> I don't think so
<Gfather> Ok
<soundray> Mainly because your internet does work (albeit extremely slow)
<Gfather> What should I do now?
<soundray> And ethernet driver problems are exceedingly rare
<Wooksta> any reason why "sudo init 3" wouldnt drop me down to run level 3?
<soundray> Gfather: It depends on what you have lying around in the way of hardware
<soundray> Any spare network cards?
<soundray> What kind of wireless card does your XP machine use?
<Gfather> Not at this moment, next to that the machine only has USB slots left
<Gfather> Wireless: 802.111G standard card (don't know if it's the correct numbers)
<soundray> How is it connected? PCI? USB?
<Gfather> Eeeerm, PCI I think
<Gfather> It's got it's own (big) slot which doesn't look like USB
<Gfather> So it's got to be PCI
<soundray> Pity, cause if you had a USB wireless card, we could quickly try it with your ubuntu machine
<Gfather> True
<Gfather> If I use a crosscable, could I make a connection with my winxp machine
<soundray> Yes, that would be a good idea
<Gfather> And via that machine, via the router connect to internet?
<Gfather> Now to find a crosscable ...
<Gfather> I got one laying here somewhere I'm sure
<soundray> You'd just have to setup XP internet connection sharing. I don't know anything about that.
<Gfather> Ok, I'll give that a go tomorrow, because I seem to have given away all my crosscables
<soundray> Here's another ide
<soundray> a
<soundray> If you can move your ubuntu machine and connect it directly to the router, bypassing the powerline, and it works, that would prove that the difficulty is with the powerline
<Gfather> That would be a problem, router downstairs, machine upstairs
<soundray> Yes, I thought so...
<soundray> I'm just concerned that I may not have convinced you that your Ubuntu installation is just fine...
<Gfather> You have
<soundray> Oh, good
<Gfather> I'm going to try to get an extra wireless card tomorrow + a crosscable
<Gfather> So I can try them both and see what it does
<soundray> Be careful, many wireless devices are difficult to use with Linux
<soundray> Buy from a dealer who will exchange it for you
<Gfather> Hmmm, ok
<Gfather> Good advice :)
<soundray> And best get a card with a Ralink chipset
<soundray> Unfortunately you can't tell from the box in most cases
<Gfather> I could ask the dealer
<soundray> Most of them won't know either
<Gfather> Pity
<soundray> "It comes with Windows drivers -- what do you want?"
<soundray> :(
<Gfather> Hahahaha :)
<soundray> There is a dealer who specializes in Linux-supported hardware here. Maybe you have someone like that in Holland, too
<Gfather> I hope so
<Gfather> Thanks for you help
<soundray> Well, good luck with your setup
<Gfather> Thanks
<soundray> Tot ziens!
<Gfather> :)
<Gfather> See ya
<soundray> :)
<jrib> amar: hello
<amar> hi
<jrib> amar: can you pastebin your /etc/fstab file?
<amar> yup......
<amar> http://paste.ubuntu-nl.org/7505/
<amar> i have pasted here
<amar> i just want to read n write in FAT file....
<jrib> amar: ok which one do you want to change
<amar> hda 5
<jrib> amar: you want to give read and write to *everyone*?
<amar> ya...
<jrib> amar: ok, in the line for hda5, change "defaults" to "umask=000"
<amar> ok....
<amar> dat file is read only........
<amar> not able to write anything in dat file
<amar> shld i use sudo
<amar> k........ done......
<amar> shall i save dis file??
<amar> thank u very much dude........ now i'm write in dat volume......
<amar> *able
#ubuntu-classroom 2008-02-18
<Daniel> Any MOTU available for chat?
<Daniel> I'm still here
<Daniel> Any MOTU available for chat?
<nalioth> Daniel: have you looked in #ubuntu-motu ?
* dholbach changed the topic of #ubuntu-classroom to: Please join #ubuntu for support | This channel used for scheduled classes and invitational tutoring | Ubuntu Developer Week info: Information and Logs: https://wiki.ubuntu.com/Ubuntu
* dholbach changed the topic of #ubuntu-classroom to: Please join #ubuntu for support | This channel used for scheduled classes and invitational tutoring | Ubuntu Developer Week info: Information and Logs: https://wiki.ubuntu.com/UbuntuDeveloperWeek | Ubuntu classroom transcripts: https://wiki.ubuntu.com/ClassroomTranscripts | How to ask questions: https://wiki.ubuntu.com/UbuntuDeveloperWeek/Rules
<warp10> Hi all!
 * popey hugs dholbach 
<dholbach> hey popey
 * dholbach hugs popey back :)
<KEBA> damn i want that it is 16:00 :P
<dholbach> so everybody's excited already? :-)
<tuxmaniac> dholbach, the excitement seems to be not there currently ;-)
<dholbach> tuxmaniac: patience - wait another 75 minutes ;-))
 * tuxmaniac goes for dinner in the meantime
<quite> boink. UTC.
<dholbach> hey jono - excited about UDW? :)
<jono> dholbach: wooo! :)
<dholbach> :-)
<flicck> dholbach : I'm mostly interested in the Packaging 101 session, do you mind if I lurk in the earlier classes?
 * jetsaredim was thinking the same
<dholbach> flicck: absolutely not - it's definitely worthwhile lurking in the other sessions
<flicck> thank you for the welcome, will do
<danbhfive> is packaging 101 coming up?
<dholbach> danbhfive: it's 15:46 UTC - the schedule is up at https://wiki.ubuntu.com/UbuntuDeveloperWeek
<danbhfive> kk, thanks dholbach
<dholbach> date -u  is your friend :-)
<emgent> hello people
<fftb> hi, patching packages is here?
 * pitti waves
<dholbach> fftb: yes, in 9 minutes
<fftb> great thx
<dholbach> WELCOME EVERYBODY!
<dholbach> This is the first ever Ubuntu Developer Week and I hope you're all very excited
<dholbach> because I am :-)
<emgent> :)
<dholbach> The schedule is up at https://wiki.ubuntu.com/UbuntuDeveloperWeek
<dholbach> and the rules are up athttps://wiki.ubuntu.com/UbuntuDeveloperWeek/Rules
<jetsaredim> are there going to be transcripts of these sessions for people who can't make it?
<dholbach> basically: please keep all chatter out of this channel, ask questions in #ubuntu-classroom-chat instead
<dholbach> and make sure you prefix them with QUESTION: ...
<dholbach> so they're easier to spot
<dholbach> jetsaredim: yes, there are links on the schedule page already and they will be filled up with the logs afterwards
<dholbach> are there any other questions before we start?
<jetsaredim> dholbach: ok - sorry must've missed that
<pitti> also, most of the topics should already have documentation in the wiki
<dholbach> jetsaredim: no problem
<dholbach> the first speaker is Martin Pitt, also  known as pitti
 * pitti bows
<dholbach> he's the author of jockey (formerly knows as restricted-manager), apport and a bunch of other tools, in his days as our security king he had to touch myriads of packages, so he knows a lot about patching packages
<dholbach> we still have 5 minutes until the session starts so you all have time to grab a comfy chair and your favourite drink before we start
<pitti> so, who is actually here for the patching packages hands-on training session?
<dholbach> be gentle with pitti, we still need him :)
<pitti> heh
 * jetsaredim is here to soak up as much as possible
<pitti> jetsaredim: welcome!
 * TuxCrafter i am here for the packaging training and want to now when the end of the session is here an when there are pauses?
<amachu> hands on training session?
<pitti> sessions start on the hour, for a little less than an hour
<pitti> amachu: yes; a theoretical speech about patching wouldn't be very useful, I guess
<pitti> then you can as well just RTFM :)
<amachu> pitti: should help
 * TuxCrafter is back in 10 min
<agoliveira> Wow... lot's of people here. Congrats dholbach!
<jono> don't forget people - you can start your MOTU adventure at https://wiki.ubuntu.com/MOTU/GettingStarted
<dholbach> agoliveira: yeah, everybody's excited :)
<dholbach> good point, Mr. Bacon :)
 * dholbach hugs jono
<agoliveira> jono: I'm still waiting for the movie :)
<jono> agoliveira: heh
 * pitti hugs dholbach for organizing this event
 * jono hugs dholbach :)
 * dholbach hugs jono and pitti :)
 * pitti rings the classroom bell
<dholbach> enjoy the show!
<pitti> let's start
 * agoliveira gves a apple to pitti
<agoliveira> an apple
<pitti> Welcome to the hands-on training session about how to patch Ubuntu source packages!
<pitti> This assumes that you already know what a patch is and how to handle .patch files in general (i. e. for upstream authors).
<pitti> and want to learn how to put them into packages properly, to get them into Ubuntu
<pitti> so, can you please quickly raise your hands if you are participating?
 * agoliveira here
<anoath> raise
<pitti> just to see how big the audience is
 * jetsaredim here
<chrome___> raise
 * andy101 raises hand
<amachu> yep
 * bfallik raises his
<huats> \o/
<snhome> raises hand
<bananaramax> pong
<pitti> great
<KaiserClaudius> here
<heikki> o/
<sommer> yo
<pitti> wow
<gkulyk> here
 * Picklesworth raises his hand :)
<Lantash> yeÃ¼
<wousser> yes
 * pitti is impressed
<bdgraue> Â·
<InsClusoe> / raises
<fftb> here
<arturodr> hi
<pitti> if anyone has any question, or I'm totally uncomprehensible (sorry for my English, I'm German), please do not hesitate to interrupt and ask *immediately*
<fredre> here
 * tseliot raises his hand
 * TrXuk here
<toert> hand
 * emgent here
<pitti> OTOH, if you have deeper technical questsions, please ask in #-chat
<pitti> Also, don't bother trying to take notes, we'll sort that out at the end. You can fully concentrate on the discussion and examples.
 * awalton__ quacks.
<pitti> Let's begin with a little bit of history:
<pitti> == Why use separate patches ==
<dholbach> yes, please take your questions to #ubuntu-classroom-chat and prefix them with QUESTION:
<pitti> == Why use separate patches ==
<pitti> In earlier times, people just applied patches inline (i. e. directly in the source code tree). However, this makes it very hard to extract patches later to modify them, send them upstream, etc. Also this means that new upstream versions are a pain, since they generate a lot of rejections when applying the package diff.gz to them.
<pitti> With split-out patches it is much easier to send them upstream, keep track of them, develop them, etc., since you always see which changes belong together.
<pitti> The ideal state is an unmodified tarball from upstream, plus clean and separate patches, plus the packaging bits in debian/. That means that lsdiff -z <sourcepackage>.diff.gz only contains debian/.
<pitti> The first attempts to split-out patches were pretty trivial: storing patches in debian/patches/, and adding some patch/patch -R snippets to debian/rules. This worked for small patches, but provided no tools for editing these patches, updating them for new upstream versions, etc.
<pitti> Thus several standard patch systems were created which are easy to deploy and provide tools for patch juggling and editing.
<pitti> ---
<pitti> What I would like to do now is to introduce the most common patch systems and show some hands-on demo how to add a new patch and how to edit one.
<pitti> For this, I will point at a source package from the current gutsy or hardy archive, quickly explain the patch system, and show how to apply some (braindead) modifications to it. I recommend you to do the same steps in a terminal, so that you get a feeling for the process and can immediately ask questions.
<pitti> is everyone fine with this approach?
<pitti> any questsions so far?
<pitti> If you want to try the stuff yourself, please do the following commands (on gutsy) as preparation:
<pitti>   sudo apt-get install dpatch cdbs quilt patchutils devscripts
<pitti> ^ common build tools
<pitti>   apt-get source cron udev pmount ed xterm
<pitti> ^ the example source packages I'll be explaining
<pitti>   wget http://people.ubuntu.com/~pitti/scripts/dsrc-new-patch
<pitti> (I'll talk about this later)
<pitti>   chmod 755 dsrc-new-patch
<pitti> (make my script executable)
<pitti> I deliberately picked the smallest packages I could find
 * pitti waits a bit for people to do the preparations; any questions so far?
<anoath> nope
<snhome> too fast
<ubuntu_learner> I posted question on ubuntu-classroom-chat on previous Q.
<Kaasethu> ^ common build tools
<pitti> ubuntu_learner: I answered it there, did you see it?
<amachu> Kaasethu: are those that pitti asked to install
<pitti> ah, the ^ means "explanation for the previous line"
<pitti> like an upwards arrow (sorry if that was unclear)
<Kaasethu> thanks -
<Kaasethu> now got it (I think)
<pitti> so, I think most people should have downloaded the lot now?
<pitti> == cron: inline patches ==
<pitti> No patch system at all, nothing much to say about this.  You directly edit the files in the source tree. This is convenient for a simple and quick change, but will bite back for new upstream versions (see above) and is inconvenient for submitting patches upstream, or reviewing for merges.
<pitti> if you do 'lsdiff -z <package>.diff.gz' and you see changes which are not in debian/, then you probably have such a package
<pitti> i. e. that's a good counterexample for what we want to achieve with patch systems
<pitti> all changes are lumped together, not really documented, you don't see which are Debian specific, which are upstream bug fixes, new features, etc.
<pitti> (some KDE packages have autoconf stuff directly in the diff.gz, but that is ok)
<pitti> so, I think I do not need to say anything else about cron, unless someone has a question
<pitti> just look at the diff.gz to see how packaging and code changes are wildly mixed
<pitti> == udev: separate patches, but no standard patch system ==
<pitti> if you look at udev's diff.gz, you see that it only has debian/, and split-out patches in debian/patches
<pitti> one per logical change
<pitti> However, udev is the most complicated case of a "patch system", since you have to do all the hard work for creating/managing patches manually.
<pitti> In order to make you understand what a patch system does, and to give you a fallback method that will *always* work with any patch system, I handle this first.
<pitti> The good news is that you will seldomly be required to actually do this procedure, since for many packages there are nice tools which make things a charm.
<pitti> The bad news is that it may seem utterly complicated for people who never did it before, but I would like you to understand what's actually going on behind the curtains of the tools.
<pitti> So please do not desperate if you do not fully understand it at first; there's written documentation and you can always take your time to grok it.
 * agoliveira rekons udev is evil
<pitti> The general approach which all patch systems follow, and which you can always do yourself, is:
<pitti> agoliveira: for various reasons :-P
<pitti> 1. copy the clean source tree to a temporary directory /tmp/old
<agoliveira> pitti: Bingo!
<pitti> 2. apply all patches up to the one you want to edit; if you want to create a new patch, apply all existing ones (this is necessary since in general patches depend on previous patches)
<pitti> 3. copy the whole source tree again: cp -a /tmp/old /tmp/new
<pitti> 4. go into /tmp/new, do your modifications
<pitti> 5. go back into /tmp and generate the patch with
<pitti>   diff -Nurp old new > mypatchname.patch
<pitti> 6. move the newly generated patch to <original source dir>/debian/patches/mypatchname.patch
<pitti> don't worry, I'll do an example
<pitti> that's just the general recipe for printing out and hang over your bed/PC/whereever you need it :)
<pitti> in general we want the following diff options:
<pitti> -N -> include new files
<pitti> (which is quite common)
<pitti> -u -> unified patches (context diffs are ugly)
<pitti> -r -> recursive
<pitti> -p -> bonus, you can see the name of the affected function in the patch
<pitti> does anyone have a question about the principle method?
<pitti> ok, some hands-on example
<pitti> open a shell, ready your fingers :)
<pitti> udev example 1, let's create a new patch 92_penguins.patch:
<pitti>   cd /whereever/you/unpacked/the/source/udev-* # -113 on gutsy, -117 on hardy
<pitti> -> now we are in our original source tree where we want to add a new patch
<pitti>   cp -a . /tmp/old
<pitti> -> create a copy of the clean sources as reference tree
<pitti>   pushd /tmp/old
<pitti> -> go to /tmp/old; 'pushd' to remember the previous directory, so that we can go back conveniently
<pitti>   debian/rules patch
<pitti> -> apply all already existing patches; of course we could use the 'patch' program to do it manually, but since debian/rules already knows how to do it, let's use it. The actual name for the patch target varies, I have seen the following ones so far: patch, setup, apply-patches, unpack, patch-stamp. You have to look in debian/rules how it is called.
<pitti> (I have a silly script which just attempts all of those until one succeeds :) )
<pitti>   cp -a . /tmp/new; cd ../new
<pitti> -> copies our patched reference tree to our new work directory /tmp/new where we can hack in
<snhome> got an error with the first patch command
<pitti> oh?
<pitti> (darn, I tested them two hours ago on hardy)
<pitti> snhome: you mean with debian/rules patch?
<snhome> yes
<pitti> (see -chat)
<pitti> let's do a braindead modification now
<pitti>   sed -i 's/Linux/Penguin/g' README
<pitti> -> changes the README file; of course you can use your favourite editor, but I wanted to keep my examples copy&pasteable
<pitti> and now we create a patch between the reference and our new tree:
<pitti> (btw, please cry out in -chat when I'm too fast)
<pitti>   cd ..
<pitti> -> go back to /tmp, i. e. where our reference tree (old) and hacked tree (new) is located
<pitti>   diff -Nurp old new > 95_penguins.patch
<pitti> -> generate the patch (Ignore the 'recursive directory loop' warnings)
<pitti> oops
<pitti> sorry, you need "apt-get install debhelper" if you get errors about dh_testdir
 * pitti fixes his notes and gives you guys time to catch up
<pitti>   mv /tmp/95_penguins.patch debian/patches
<pitti> -> move the patch from /tmp to the source tree's patch directory, where it belongs.
<pitti> *uff* :)
<pitti> Now take a look at your shiny new debian/patches/95_penguins.patch.
<snhome> error on the mv
<ozanichkovsky> pushd
<jetsaredim> you need to cd back to the udev_xxx dir
<pitti> oops, sorry
<pitti> you have to do "popd" before the mv
 * pitti wishes there was an "erase previous line" IRC command
<pitti> so, it's "diff", "popd", "mv"
<pitti> please make a noise when you are ready
<jsauer> ready
<fftb> noise
<ozanichkovsky> ready
<Lantas2> ready
<KaiserClaudius> ready
<Picklesworth> peep
<arturodr> ready
<chrome___> ready
<pitti> awesome
<fredre> ready
<pitti> debian/patches/95_penguins.patch looks plausible?
<pitti> after that, if you do 'debian/rules patch', you'll see that the patch applies cleanly; please do 'debclean' afterwards to unapply the patches and get back a pristine source tree
<pitti> if you don't have debclean, install devscripts, or do "fakeroot debian/rules clean" instead
<pitti> it calls the 'clean' target, which means, clean up all built files, unapply patches, etc.
<nareshov> fakeroot worked for me
<pitti> if it complains about missing build dependencies, use the fakeroot command
<pitti> so, obviously that's not the end of the wisdom, but if you do these steps a couple of times, you should get a feeling for how to create the most complicated patch conceivable
<pitti> so this procedure is the life safer if anything else fails
<pitti> Pretty much work, isn't it? Since this happens pretty often, I created a very dumb helper script 'dsrc-new-patch' for this purpose.
<Don-1> Sorry, I'm a bit late, so I decided to read from start, and just catch up. However, I'm stuck at debian/rules patch, gives me the error message:
<Don-1> dh_testdir
<Don-1> make: dh_testdir: Command not found
<Don-1> make: *** [patch-stamp] Error 127
<Don-1> I've tried both debian/rules build and all the things you mentioned, but it doesn't seem to work. I've also looked in the file, but it doesn't seem to work...
<nareshov> Need devscripts ?
<dholbach> Don-1: please ask questions in #ubuntu-classroom-chat
<Don-1> Sorry.
<Assid> hi
<dholbach> pitti: you fell of the internet?
<dholbach> minus the missing packages - how did the session go? everything seemed sensible?
<snhome> I'm new at this so will need to study what we did
<dholbach> maybe we can do some general Q&A while pitti recovers from whatever problem he has right now
<ubuntu_learner_> Here or at -chat?
<dholbach> http://wiki.ubuntu.com/PackagingGuide/PatchSystems is a guide to patch systems
<dholbach> just ask in #-chat and I'll carry over the questions
<dholbach> <jetsaredim> so, once we patch the package, what then?
<dholbach> good question
<nareshov> :)
<dholbach> in most cases as an Ubuntu developer you work on existing packages
<pitti> argh, sorry; my interweb tube broke
<pitti> what's the last line you saw from me?
<nareshov> 21:53 < pitti> Pretty much work, isn't it? Since this happens pretty often, I created a very dumb helper script 'dsrc-new-patch' for this purpose.
<pitti> ugh
<pitti> ok, I'll go on there
<dholbach> let me just reply to jetsaredim
<agoliveira> pitti: it was: "arrrghhhh....."
<fftb> :)
<dholbach> jetsaredim: if you can upload your packages directly, you do that, if you can't you use the sponsorship process to get the patched package uploaded - jetsaredim: I'll talk a bit in my session about debdiffs
<pitti> Using dsrc-new-patch, above steps would reduce to:
<pitti>   ../dsrc-new-patch 95_penguins.patch
<pitti> (.., or wherever you downloaded the script)
<jetsaredim> dholbach: what about changing the package version, etc how does that get determined
<pitti>   sed -i 's/Linux/Penguin/g' README
<pitti>   <press Control-D to leave the subshell>
<pitti> that looks slightly better, doesn't it? If you like the script, please put it into your ~/bin, so that it is in your $PATH
<dholbach> jetsaredim: I'll cover that in a different session :)
<jetsaredim> ah
 * jetsaredim returns to lurking
<pitti> but I had to torture you with the close-to-the-metal method for the sake of understanding.
<pitti> You might have noticed that we applied all previous patches before creating our's. Does someone have an idea why this is done?
<jetsaredim> numbering
<nareshov> the patches have numbers?
<pitti> well, it's related to that, yes
<nareshov> sequential, dependant ?
 * chrome___ thinks that the patches might depend on each other
<awalton__> asserting patch interdependencies.
<bananaramax> <pitti> 2. apply all patches up to the one you want to edit; if you want to create a new patch, apply all existing ones (this is necessary since in general patches depend on previous patches)
<pitti> Patches can depend on each other,
<pitti> i. e. patch 22 can change the same file that patch 7 did, and patch 22 might not even apply to the pristine upstream source.
<pitti> That's why you will commonly see numeric prefixes to the patch files, since they are applied asciibetically in many patch systems (including the application of patches in udev).
<pitti> Since above procedure is so hideously complicated, patch systems were invented to aid you with that.
<pitti> Let's look at the most popular ones now (they are sufficient to allow you to patch about 90% of the archive's source packages; for the rest you have to resort to the manual approach above).
<pitti> == pmount: cdbs with simple-patchsys ==
<pitti> cdbs' simple-patchsys.mk module matches its name, it has no bells and whistles whatsoever. However, it is pretty popular since it is sufficient for most tasks, and long ago I wrote a script 'cdbs-edit-patch' which most people can live with pretty well. This script is contained in the normal cdbs package.
<pitti> Many Ubuntu packages use the cdbs build system; you can look at the "Build-Depends:" line in debian/control (it has cdbs) to check
<pitti> or look in debian/rules whether it has includes for /usr/share/cdbs
<pitti> if you have that, then you can use the following script
<pitti> You just supply the name of a patch to the script, and depending on whether it already exists or not, it will create a new patch or edit an existing one.
<pitti> everyone please look in debian/patches, debian/rules to get a feeling how it looks like
<pitti> so, let's mess up pmount a bit
<pitti> and add a new patch
<pitti>   cd /whereever/you/unpacked/the/source/pmount-0.9.16
<pitti>   cdbs-edit-patch 07-simple-readme.patch
<pitti> (drops you into a subshell for editing again, similar to dsrc-new-patch)
<pitti>   echo 'This should document pmount' > README
<pitti> (some braindead modification)
<pitti>   <press Control-D to leave the subshell>
<pitti> easy, isn't it?
<pitti> this will take care of applying all patches that need to be applied, can change patches in the middle of the stack, and also create new ones
<pitti> Editing an already existing patch works exactly the same way.
<pitti> so I won't give a demo
<pitti> questions?
<pitti> sorry, my falling off the internet costed me 5 minutes, so I'll just quickly run through the other major patch system before I conclude
<pitti> == ed: dpatch ==
<pitti> dpatch is a pretty robust and proven patch system which also ships a script 'dpatch-edit-patch'
<pitti> packages which use this build-depend on 'dpatch', and debian/rules includes 'dpatch.mk'
<pitti> that script dpatch-edit-patch is actually pretty similar to the other two scripts I talked about
<pitti> The two most important things you should be aware of:
<pitti>  * dpatch does not apply debian/patches/*, but instead applies all patches mentioned in debian/patches/00list, in the mentioned order. That means that you do not have to rely on asciibetical ordering of the patches and can easily disable patches, but you have to make sure to not forget to update 00list if you add a new patch.
<pitti> (forgetting to update 00list is a common cause of followup uploads :-P )
<pitti>  * dpatch patches are actually scripts that are executed, not just patches fed to 'patch'. That means you can also do fancy things like calling autoconf or using sed in a dpatch if you want.
<pitti> using dpatch for non-native patches is rare, and normally you do not need to worry about how a .dpatch file looks like
<pitti> but I think it's important to mention it
<pitti> The manpage is very good and has examples, too
<pitti> There is a wiki page https://wiki.ubuntu.com/MOTU/School/PatchingSources which has examples for the most common patch systems
<pitti> and how to use them
<pitti> it's a good cheatsheet when you will actually get to this
<dholbach> pitti: http://wiki.ubuntu.com/PackagingGuide/PatchSystems :)
<pitti> but with above tools you should be able to change the vast majority of packages
<pitti> thanks for your attention!
<pitti> BTW, I'll do the same session on Friday again
<pitti> and hopefully catch up with the other stuff
<amachu> :-)
<zeeth> pitti: thank-you
<arturodr> thanks pitti
<chrome___> thanks pitti
<Picklesworth> Nice, pitti! Very helpful :)
<jsauer> thanks pitti
<fredre> than you
<Picklesworth> That's one more directory starting to make sense...
<dholbach> thanks a lot pitti
<Lantas2> thanks!
<dholbach> next up we have cprov and mrevell, two launchpad hackers who can tell you a lot about a very cool feature of Launchpad called PPA: Personal Package Archives
<KaiserClaudius> thanks alot
<Don-1> Thank you!
<vicantre> thanks mate! It was truly helpful
<dholbach> Celso and Matthew: the stage is yours
<cprov> Hi all, Welcome to the Personal Package Archive (PPA) session.
<dholbach> for those of you who have joined in later: please ask questions in #ubuntu-classroom-chat and prefix them with QUESTION: ...
<cprov> Just for curiosity, say "me" if you are attending the PPA session.
<mrevell> me
 * jetsaredim me
<dholbach> me too
<soneil> me
<rulus> me
 * tamrat me
<ubuntu_learner_> me
<awalton__> +1
<arturodr> me
<fredre> me
<InsClusoe> me
<jsauer> me
<Don-1> me - half of the session.
<Picklesworth> me
<corevette> me
<holloway> me
<zeeth> me
 * nareshov too
<barcc> me
<vicantre> me
<tvelocity> me
<Grazieno> me
<pwnedd> me
<dholbach> rock on Launchpadders!
<acacs> me
<snhome> me listening
<cprov> wow, lot of people here
<mrevell> This is great, thanks for coming everyone :)
<amachu> me
<cap10morgan> me
<Sciri> me lurking ;)
<cprov> so, as daniel said, make question on #-chat and before anything else thanks for coming.
<cprov> So, first obvious question is "What is this PPA thing ?"
<cprov> Launchpad provides the infrastructure to process, build and publish uploads for ubuntu primary archive.
<cprov> the same set of sub-systems is available for all users via Personal Package Archives (PPA) in their own restricted archive.
<cprov> i.e., it's possible to have a Martin Pitti archive or a Mozilla Development Archive.
<cprov> does it sound like a good definition for you all ?
<cprov> please say '+1' if it's fine or add your comment.
<Don-1> +1
<tamrat> +1
<cprov> 5
<cap10morgan> +1
<nareshov> +1
<arturodr> +1
<cprov> 4
<chrome___> +1
<TuxCrafter> i have to go now
<dargol> +
<tvelocity> +1
<icicle> +1
<cprov> 3
<TuxCrafter> thanks for everything
<dargol> +1
<jsauer> +1
<InsClusoe> +1
<cprov> 2
<p3n9> +1
<fredre> +1
<cprov> 1
<TuxCrafter> +1
<corevette> +1
<Lantash> +1
<Grazieno> +1
<awalton__> +1
<cprov> happy users :)
<danbhfive> +1
<pwnedd> +1
<cprov> In order to use PPA we require a valid user/team in Launchpad
<lengau> +1
<cprov> and a quick 'activation' procedure.
<cprov> https://help.launchpad.net/PPAQuickStart/ describes the procedure in details.
<cprov> you have to accept the PPA terms of use (ToU) which basically assures we are not giving you space to do illegal actions
<cprov> so, it's up to the users to certify that they are coping with the restrictions imposed the source license in question.
<cprov> Legal issues should be reported to a launchpad administrator and the culprit PPA will be disabled immediately.
<cprov> ok, enough legal statements for today.
<cprov> let's go for the hand-on training.
<cprov> PPA, as you would expect, requires users to dominate the current development tools (used in ubuntu, debian and other debian-like distribution)
<cprov> Let's assume that all users here are aware of https://help.ubuntu.com/6.10/ubuntu/packagingguide/C/index.html for packaging issues
<cprov> and have a package source ready to be uploaded.
<cprov> The first question is "how to build the source package for my PPA ?"
<cprov> if you are using orig.tar.gz, ensure you are using the same file already uploaded in ubuntu primary archive.
<cprov> This is a very good way to save bandwidth for you uploads. You don't have to re-upload orig files already published in ubuntu
<cprov> so, you upload will be small and quick
<cprov> `debuild -S` will do
<cprov> if it's a new source, you do have to upload the orig (`debuild -S -sa`), although, you have to do it only for the first version of the source
<cprov> subsequent upload can omit the orig, PPA system will retrieve it from the context archive.
<cprov> all clear, guys ? you are too quiet
<snhome> listening
<cprov> Am I going to fast ?
<holloway> it's confusing for the first time
<Unksi> go on :)
<tacone> speed is ok for me :)
<zeeth> comfortable sir
<dargol> go on
<snhome> & girls :)
<cprov> great, feel free to stop anytime with questions
<dholbach> cprov: there were a bunch of questions on #-chat :)
<cprov> err, I was expecting the bot to ask them here ... How should I proceed ?
<cprov> dholbach: shall I paste the question here and answer it .
<dholbach> cprov: good idea
<dholbach> that way they end up in the log too
<cprov> QUESTION: Is PPA specific to ubuntu or for any project hosted on launchpad.net
<cprov> well, PPA can only host packages for ubuntu distribution, atm
<cprov> however, any person, team can host specific packages for any project hosted or not in Launchpad
<cprov> uhm, confusing answer ... IFW, project and PPAs are not exactly related.
<cprov> does it answer your  question ?
<zeeth> how about for debian?
<eddyMul> or ubuntu derivatives?
<cprov> zeeth: you can cross-install ubuntu package in debian systems
<zeeth> thanx
<InsClusoe> Can we say that PPA is similar to Sourceforge or freshmeat?
<cprov> zeeth: but, dependending on the package it might cause some pain.
<cprov> InsClusoe: no, I'd compare  those directly
<zeeth> ummm..
<cprov> InsClusoe: can you specify how do you see such relationship ?
<cprov> err, I would *not* compare
<cprov> sorry.
<cprov> QUESTION: If I want to build a software that is not yet ready for integration with any distro, does it qualify to be hosted?
<InsClusoe> cprov: :-) I inferred from this... "any person, team can host specific packages for any project hosted or not in Launchpad"
<cprov> InsClusoe: well, PPA allows users to upload *any* (respecting license issues) source package, get it built and distributable under your responsibility
<InsClusoe> ok.. I think I got it... Packages refer to binary packages... That means, source and rules for making binary package... And that, most certainly, is different from hosting projects...
<cprov> this statement sort of also answer the last question ...
<cprov> InsClusoe: exactly, you can "package" any upstream source (hosted or not in LP)
<InsClusoe> cprov: Yup.. Gotcha. Thanks. Sorry for disrupting.
<cprov> QUESTION: how do I know if a file is already uploaded into ubuntu archive (e.g. gutsy has v1.0, hardy has v3.0. I want to package v2.0)
<cprov> uhmm, check the launchpad interface, I guess, `apt-cache`, etc
<cprov> pretty vague,  I know, feel free to ask a more concrete question if you want.
<cprov> QUESTION: I'd like my package(s) to be available in multiple distributions (Feisty, Gutsy, Hardy, ..). How to do this the easiest way? Is it possible without reuploading three times with only a changed distribution in the changelog?
<cprov> as know, the poll-based archive topology we use in ubuntu and all PPAs doesn't allow files to be republished
<cprov> so you can (and should) upload a foo-bar_1.0 source only once
<cprov> in the primary archive we provide tools to /copy/ publications across suites (dapper, gutsy, hardy, etc)
<cprov> this feature is not yet available for PPA (via the UI)
<cprov> PPA users can use one of the alternatives:
<cprov> 1) request a *copy* via launchpad-questions given the exact directives,  source name and version, whether to copy binaries or not, and destination suite
<cprov> 2) upload the same source using another version or version prefix (~dapper1, ~feisty1, etc)
<eddyMul> 1) is launchpad-questions a mailing list?
<cprov> no the launchpad question sub-system
<cprov> https://answers.edge.launchpad.net/launchpad/+addquestion
<eddyMul> eddyMul: got it. thanx
<cprov> as you all might suspect, the alternative 2 will be faster
<cprov> We plan to offer 'copy' UI for PPAs during the next month.
<cprov> ok, we have discussed WHAT  to upload. Now let's sort WHERE
<cprov> there are two tools available to upload packages: dput and dupload
<cprov> (if you are brave enough, you can use a simple ftp client, but it's boring and error prone)
<cprov> let's try a dput example config.
<cprov> [my-ppa]fqdn = ppa.launchpad.net method = ftp incoming = ~your-launchpad-id/ubuntu/ login = anonymous allow_unsigned_uploads = 0
<cprov> err ...
<cprov> [my-ppa]
<cprov> fqdn = ppa.launchpad.net
<cprov> method = ftp
<cprov> incoming = ~your-launchpad-id/ubuntu/
<cprov> login = anonymous
<cprov> allow_unsigned_uploads = 0
<cprov> this section should be appended to you ~/dput.cf file
<dholbach> ~/.dput.cf
<cprov> the 'my-ppa' dput target defines the location and the path to be used in you upload
<cprov> dholbach: yes, '.' , thanks
<cprov> don't feel obsessed to copy this irc snipped, it's all in https://help.launchpad.net/PPAQuickStart/
<cprov> the source upload processing is done every 5 minutes, so that's the time you should wait before getting a upload notification email
<cprov> it will be either an 'acceptance'  or a "rejection" message
<cprov> the system will list you all the problem that cause the upload to be rejected, if it was the case
<cprov> once the source was accepted, you should wait up to 20 minutes to have it published in you public archive
<eddyMul> cprov: "upload processing is done every 5 minutes, so [wait]": it would be great to put this info in the PPAQuickStart page   ;-)
<holloway> cprov, can you give some errors? like beginners doing all the time?
<cprov> at this point `apt-get source <just uploaded>` should work
<cprov> eddyMul: sure :) I'll add
<cprov> holloway: yes, most of the users upload sources targeted to 'unstable' distribution (as they come from debian)
<holloway> cprov, thx, so there are only the 4 we know from ubuntu?
<cprov> this mistake can be fixed by: 1) create a proper entry in the debian/changelog setting a ubuntu suite instead of the original debian suite OR 2 ) using the changesfile override feature in upload path.
<cprov> you can have a dput target that forces 'dapper' doesn't matter what is said in the changesfile
<cprov> [my-ppa-force-dapper]
<cprov> incoming = ~your-launchpad-id/ubuntu/dapper
<cprov> (the other fields should remain the same ...)
<tamrat> QUESTION: (i understand the answer may be long but well - i think it is useful): which steps/test should/can be done before uploading your package, (after testing building of course). I don't want to try to upload 10 times to get a different error every time (I'm on 2 rejected uploads now ;-)
<cprov> it will upload pristine source from debian or other distribution straight to dapper in your PPA.
<cprov> tamrat: it's hard to say ... you can build the source and the binaries successfully locally, but still not getting all points required to upload the source fixed
<cprov> tamrat: it really depends on the error and you packaging experience, I'm afraid to say.
<cprov> holloway: another very common mistake it to upload binaries to PPA
<holloway> ok
<cprov> holloway: only a single and signed source will be accepted.
<cprov> holloway: so, ensure you build source packages with `debuild -S`
<holloway> cprov, got it :)
<cprov> okidoki, we know WHAT and WHERE ... let's go for the WAIT stage ;)
<cprov> once the source is 'accepted' you should *wait*
<cprov> up to 20 minutes to have it published in you archive (`apt-get source <just-uploaded>`) (already said)
<cprov> up to 1 hours to have you build queued (access +me/+archive/+builds to track them)
<dholbach> people/+me ?
<cprov> dholbach: yes, '<your lp page>/+archive/+builds'
<cprov> the uploader won't receive any message if everything was successfully built and the binaries got published in you archive.
<cprov> we only notify the users about *failures*
<cprov> the email notification will tell you where to find the information about the failure
<cprov> and then it's up to you to fix it or not ;)
<cprov> An important thing to not about PPA build process is that they happen in a separate environment using the same ubuntu chroots but inside a XEN machine
<cprov> so, they won't affect or get affect by other jobs, since the XEN guest is resumed before starting any build
<cprov> ouch ... we are running out of time ...
<dholbach> there's always the second PPA session on friday, 17:00 UTC :)
<dholbach> and launchpad-users@lists.canonical.com
<dholbach> (if you run into problems)
<dholbach> thanks a lot cprov and mrevell - are there any final questions you want to answer or final announcements?
<zeeth> sure thanx
<mrevell> The only announcement is, "Look out for our new release late this week!"
<Unksi> cprov: thank you
<dholbach> rock on... thanks cprov and thanks mrevell
<mrevell> Thanks dholbach for the opportunity, thanks cprov for doing such a great job. Thanks for everyone's questions and attention.
<cprov> well, considering that I couldn't explain all the facets of the PPA system ... you are more than welcome to post questions on https://wiki.ubuntu.com/MeetingLogs/devweek0802/PPAs1
<cprov> I will answer them before the next session
<InsClusoe> That's great... Thanks to both of you..
<cprov> and if you still want to talk, please come to the next session :)
<dholbach> oh ... and there's of course #launchpad
<cprov> thank you for participating. You are all bright stars !
<dholbach> :-)
<corevette> thanks cprov
<dholbach> ok... let's get started with the next session
<dholbach> It's Packaging 101 time! :)
<dholbach> who's here for the session?
<corevette> me
<charliecb> me
<danbhfive> +1
<jsauer> me
<antcarsa> me too
<zeeth> cprov: thanx
<icicle> me
<nijaba> o/
<InsClusoe> me
<mruiz> _0/
<Unksi> o/
<Kaasethu> me
<barcc> me
<civija> civija++
<rulus> me too
<lengau> Hi
<snhome> me too
<Grazieno> me
<shujin> me sever
<warp10> me too!
<fredre> +1
<dholbach> ROCK and ROLL!
<dholbach> bring it on
<vistakiller> and me :P
<tamrat> \o/
<holloway> me
<zeeth> me \o/
<dholbach> for those of you tuning into the Developer Week just now: please ask your questions in #ubuntu-classroom-chat and prefix them with QUESTION: so they're easier to spot
<dargol> me
<eddyMul> me
<amachu> à®¾à¯
<amachu> hi
<dholbach> we don't need preparation for this session, just make sure you have a deb-src line in your /etc/apt/sources.list
<dholbach> if you're using hardy, that's just "deb-src http://archive.ubuntu.com/ubuntu hardy main restricted universe multiverse"
<dholbach> once you've added that, please run     sudo apt-get update
<dholbach> we'll take a look at a small package I made a while ago called gnome-web-photo
<dholbach> (it does thumbnails of webpages, etc.)
<dholbach> please run     apt-get source gnome-web-photo     to get the source
<dholbach> the following files have been downloaded:
<dholbach> gnome-web-photo_0.3-0ubuntu1.diff.gz
<dholbach> gnome-web-photo_0.3-0ubuntu1.dsc
<dholbach> gnome-web-photo_0.3.orig.tar.gz
<dholbach> the .orig.tar.gz file is exactly what I downloaded from the upstream webpage
<dholbach> the .diff.gz the compressed patch I needed to add to make it built in the ubuntu / debian world
<dholbach> the .dsc is a description file that has md5sums in it and so on
<dholbach> apt-get source used dpkg-source -x to extract that and give us gnome-web-photo-0.3
<dholbach> ok, let's dive into it
<dholbach> cd gnome-web-photo-0.3
<dholbach> ls debian/
<dholbach> these are the files I needed to add to make it build, ie to "package it"
<dholbach> let's go through them one by one and let me know if you have questions
<dholbach> less debian/changelog
<dholbach> debian/changelog is necessary to indicate which changes were made by whom and which version number was used
<dholbach> as a package maintainer it's necessary to document explicitly what you did
<dholbach> Ubuntu is a bit special in the development modell: we maintain everything as teams
<dholbach> there are of course people who know a great deal about a package, but there's no BML
<dholbach> (big maintainer lock)
<dholbach> so you're free to participate and enhance existing packages
<dholbach> if you do changes, everybody needs to know why you did them :)
<dholbach> <corevette> QUESTION: is there a format for a changelog?
<dholbach> first good question
<dholbach> yes, the format is pretty fixed
<dholbach> let's go through all the items one by one
<dholbach> first up is the source package name (I'll talk a bit about source and binary packages in a bit), in our case it's "gnome-web-photo"
<dholbach> next up is the version string
<dholbach> in debian you'd use <upstream version>-<debian revision>
<dholbach> where upstream version means the version that the software authors just released
<dholbach> and debian revision just being an incremental number (in the simple cases) starting with '1'
<dholbach> in Ubuntu we add "ubuntu<number>" to indicate that we're changing a debian revision of a package
<dholbach> as this package is not in debian (yet), it started with    0ubuntu1
<dholbach> next up is the
<dholbach> ubuntu release we're uploading to
<dholbach> we can always only upload to the one that is under development right now
<dholbach> in our case we could only upload to hardy, but not to gutsy or feisty
<dholbach> (there is feisty-updates and feisty-security and we have an entire session just about that later this week)
<dholbach> the urgency is irrelevant in the ubuntu world
<dholbach> next up are all the individual changes that happened in the new revidion
<dholbach> revision
<dholbach> some people tend to specify changes like this:
<dholbach>  * <file>: <change>
<dholbach> I like that too
<dholbach> if you package a new upstream version it might make sense to point out what happened upstream too
<dholbach> next up is your name and email address plus a date string
<dholbach> it'd be terribly irksome to type this all by hand
<dholbach> which is why we use a tool called   dch  (in the devscripts package) to generate most of it for us
<dholbach> <eddyMul> QUESTION: in debian/changelog, what time should I use for the timestamp? does it matter?
<dholbach> eddyMul: date -R is used by dch
<dholbach> <eddyMul> QUESTION: follow up to corevette: is there an emacs mode for it?  :)
<dholbach> eddyMul: dch will use whatever you specified as EDITOR in your profile
<dholbach> <danbhfive> QUESTION: why the zero?
<dholbach> I think I answered that
<dholbach> <charliecb> QUESTION: Starts the revision-number always with 1 ?(and 0 for debian if the package doesn't exists in debian)
<dholbach> charliecb: if you take a debian package and alter it, you mostly just add "ubuntu1", then increment the last number
<dholbach> of course there are special cases, but we'll not deal with them in this session nos
<dholbach> now
<dholbach> ok, everybody happy with debian/changelog?
<dholbach> ok, party on
<dholbach> next up is debian/compat which in our case just says "4"
<dholbach> we have a set of tools in what we call debhelper suite that help with packaging a lot
<dholbach> lots of tasks like installation of files, compression of changelog, etc - all the kind of tasks you use in nearly all packages - are simplified in there
<dholbach> debian/compat specifies the debhelper compatibility level
<dholbach> it's not really interesting, but for those of you interested in it, check out   man debhelper  to see what those debhelper compat levels mean
<dholbach> it's usually not necessary to alter the value
<dholbach> <mruiz> QUESTION: dholbach, about debian/compat how to decide the version?
<dholbach> mruiz: if you package a new piece of software and don't depend on any new debhelper features, just stick with 4 or 5 (which is what dh_make will use for you)
<dholbach> <charliecb> QUESTION: _must_ debian/compat file exists?
<dholbach> charliecb: I don't think it needs to exist, but it does for clarity in the majority of packages
<dholbach> <corevette> QUESTION: how do you use debhelper; tutorial online?
<dholbach> corevette: good question
<dholbach> http://wiki.ubuntu.com/PackagingGuide is THE page you want to check out
<dholbach> it has lots of tutorials, including how to package use debhelper
<dholbach> ok let's move on - debian/control is much more exciting
<dholbach> the first thing you'll notice: it's separate in two stanzas
<dholbach> <eddyMul> QUESTION: is it worth the time and effort to "bump up" a package's debhelper compat? (which probably incurs some changes in packaging code...)
<dholbach> eddyMul: not really, only if you *REALLY* depend on a new debhelper features
<dholbach> in all other cases it's just an upload that has no user impact
<dholbach> coming back to debian/control
<dholbach> the first stanza is about the source
<dholbach> and all the following ones (in our case it's just one) are about the binary package
<dholbach> packages
<dholbach> the source needs to be in a section, so that's specified
<dholbach> a priority is set and a maintainer too
<dholbach> the Maintainer field is quite interesting in the case of Ubuntu
<dholbach> I mentioned before that we maintain packages in teams, but in addition to that our friends at Debian decided that we should change the Maintainer field in cases where we alter packages we inherit from debian
<dholbach> https://wiki.ubuntu.com/DebianMaintainerField describes the whole process, the general idea is: Debian maintainers received emails of Ubuntu users who wanted to reach the "maintainer"
<dholbach> which did not always work out well
<dholbach> so what we do is, we store the original maintainer, but change the maintainer field to our team mailing lists
<dholbach> next up is "Build-Depends"
<dholbach> and that's one of the most critical values in the whole file
<dholbach> it lists all the packages that need to be installed in order to build the package in a minimal environment
<dholbach> if you listened to the PPA session before you might have gathered that the source is built in chroots (minimal environments) where just build-essential (which includes gcc, make, etc) and the Build-Depends are installed
<dholbach> so there's a distinction between Depends (binary packages) and Build-Depends (source packages)
<dholbach> <tamrat> QUESTION: where can i find information about building different binary packages from one source package (eg creating shared libraries, -dev and the package from the same source)
<dholbach> tamrat: that's exactly in debian/control
<dholbach> I'll just finish up the source stanza in debian/control, then come to the binary packages
<dholbach> <InsClusoe> QUESTION: Why do you say minimal environment?
<dholbach> InsClusoe: you upload the source package (.dsc .orig.tar.gz .diff.gz) to the build daemon, which will take it and put it into a minimal environment, just containing a VERY FEW packages
<dholbach> then install the Build-Depends
<dholbach> so you can't expect that libsomething6-dev is installed
<dholbach> you need to specify it
<dholbach> <dargol> QUESTION: how do I guess build depends for a given source?
<dholbach> dargol: that's an excellent question and what I wanted to show next
<dholbach> of course you could just try and fail over and over again
<dholbach> for that you'd use a pbuilder (http://wiki.ubuntu.com/PbuilderHowto) which generates that chroot for you
<dholbach> and watch the build fail over and over again until you get the build-depends right :)
<dholbach> but it's cleverer to check out a few files like ./configure.ac which specifies upstream build requirements
<dholbach> in our case the package is written in C++ and uses autotools, so you'll find a configure.ac there
<dholbach> stuff like:
<dholbach> GLIB_REQUIRED=2.6.0
<dholbach> GTK_REQUIRED=2.6.3
<dholbach> LIBXML_REQUIRED=2.6.12
<dholbach> is usually a very good indicator of what you need to build it
<dholbach> always make sure you mention the -dev packages in the Build-Depends which contain header files necessary to compile and link the software correctly
<dholbach> next up is Standards-Version: 3.7.2
<dholbach> which just declares that this source package complies with version 3.7.2 of the debian policy
<dholbach> <charliecb> QUESTION: this package depends on debhelper. depends *every* package on debhelper?
<dholbach> charliecb: no, but the vast majority - there are people who choose not to use debhelper but do a lot of stuff manually
<dholbach> <eddyMul> QUESTION: how do we decide which ./configure options to --enable and which ones we can do --without?
<dholbach> eddyMul: that's a maintainer question
<dholbach> eddyMul: you maintain the package and make it available for millions of users
<dholbach> it's your (and your team's) call
<dholbach> so if the frobnicator feature is brand-new and you're about to release an LTS, you probably don't want to --enable-frobnicator
<dholbach> ok, let's move on to binary packages
<dholbach> binary packages is the stuff that users like my mom install, they don't care about the source :)
<dholbach> if you have a HUGE package, you might want to consider splitting it up
<dholbach> if you run       apt-cache showsrc mono | grep Binary | head -n 1        you will notice that mono makes heavy use of splitting
<amachu> :)
<dholbach> <eddyMul> QUESTION: ./configure: is there a document about Debian/Ubuntu's default --prefix, etc
<dholbach> eddyMul: I need to pass this question on, best to ask in #ubuntu-motu, sorry
<dholbach> ok, in our case we just have one binary package, it's called gnome-web-photo too
<dholbach> Architecture: is an interesting field
<dholbach> in our case it is "any" which means: build this package on any architecture there is
<dholbach> this means: we upload the source of gnome-web-photo
<dholbach> and it will be built on all buildds: i386, amd64, powerpc, hppa, lpia, etc etc
<dholbach> this is necessary because we compile code that is architecture dependent
<dholbach> that's the case for C, C++ and so on
<dholbach> if you just upload a package that contains artwork, you don't need to bother, set Architecture: all to indicate: it's the same for all architectures
<dholbach> that also includes python and perl scripts, etc
<dholbach> <eddyMul> QUESTION: just to confirm, any != all ?
<dholbach> eddyMul: yes
<dholbach> any = build this for any architecture there is
<dholbach> all = it's the same for all archs
<dholbach> <charliecb> QUESTION: for example, package cdbs has architecture is i386. what if i tell that package gnome-web-photo that architecture is any? is this possible?
<dholbach> charliecb: I think I need to correct you
<dholbach> daniel@lovegood:~$ apt-cache showsrc cdbs | grep Arch
<dholbach> Architecture: all
<dholbach> daniel@lovegood:~$
<charliecb> no, its just an example.
<dholbach> cdbs is written in shell scripts, so there's no need to build it on different architectures
<dholbach> charliecb: then please rephrase your question - I might have misunderstood
<charliecb> go on. i'll ask later.
<dholbach> ok thanks
<dholbach> of course you can have a list of archs the package builds on
<dholbach> so if your package is known to just build on i386 and amd64 (and not on powerpc, etc)
<dholbach> you just write       Architecture: amd64 i386
<dholbach> coming to the next line: Depends
<dholbach> this is really interesting and important to get right
<dholbach> in our case it first looks a bit weird: Depends: ${shlibs:Depends}, ${misc:Depends}
<dholbach> it's not something like:
<dholbach> Depends: libatk1.0-0 (>= 1.13.1), libc6 (>= 2.5-0ubuntu1), libcairo2 (>= 1.3.12), libfontconfig1 (>= 2.4.0), libgcc1 (>= 1:4.1.1-21ubuntu1), libgconf2-4 (>= 2.13.5), libglib2.0-0 (>= 2.12.9), libgnomevfs2-0 (>= 1:2.17.90), libgtk2.0-0 (>= 2.10.3), libjpeg62, liborbit2 (>= 1:2.14.1), libpango1.0-0 (>= 1.15.5), libpng12-0 (>= 1.2.13-4), libstdc++6 (>= 4.1.1-21ubuntu1), libx11-6, libxcursor1 (>> 1.1.2), libxext6, libxfixes3 (>= 1:4.0.1), l
<dholbach> ibxi6, libxinerama1, libxml2 (>= 2.6.27), libxrandr2, libxrender1, gconf2 (>= 2.12.1-4ubuntu1)
<dholbach> we might have expected
<dholbach> the reason for that is simple
<dholbach> ${shlibs:Depends} is a variable that gets expanded during the build process
<dholbach> expanded to all the packages that contain the libraries the binaries in our package are linked to
<dholbach> so the file  /usr/bin/gnome-web-photo   that is in our package is linked to all the libraries contained in the packages above
<dholbach> ${misc:Depends} gets expanded to miscellaneous tools the package might need
<dholbach> for example dh_gconf (in the debhelper) package added gconf2 (>= 2.12.1-4ubuntu1)
<dholbach> <nijaba QUESTION: so for scipts, we need to be explicit?
<dholbach> <nijaba> QUESTION: so for scipts, we need to be explicit?
<nxvl_work> dholbach: i will handle the questions, just ask for next one
<dholbach> nijaba: yes, if your script calls say "wget" or "firefox" you need to depends on that manually
<dholbach> the rest of debian/control is just description
<dholbach> a short one in the  Description:  line
<dholbach> and the long one below
<dholbach> <eddyMul> QUESTION: are ${shlibs:Depends} somehow taking values from Build-Depends?
<dholbach> eddyMul: library packages ship .shlibs files (which are generated automatically), which are used to determine which library corresponds to which library package with which version
<dholbach> on friday we'll have a session about library packaging which talk about that in more detail
<dholbach> ok, party on
<dholbach> debian/copyright
<dholbach> is one of the files most easy to get wrong
<dholbach> debian/copyright contains information about:
<dholbach>  - who did the packaging
<dholbach>  - who has copyrights
<dholbach>  - who is the author
<dholbach>  - under which license the source is licensed
<dholbach> it's absolutely important to get that right, else Ubuntu and Canonical get in deep trouble :)
<dholbach> so if you decide to package something new, you need to make sure you observe all copyrights and check all the source files
<dholbach> else the archive admins won't accept your package
<nxvl_work> <eddyMul> QUESTION: how can I find out what's in ${shlibs:Depends}? is it somehow inferred from Build-Depends? or is `ld*` doing some magic?
<dholbach> eddyMul: ld* is used, then the *.shlibs files of the used packages are looked at, but that goes too far in this sessioon
<dholbach> nxvl_work: next
<nxvl_work> <snhome> QUESTION no author in this one, assumed to be copyright holder?
<dholbach> snhome: if you run    ls src/* | xargs head | less         you will see that there are a bunch of copyright notices
<dholbach> and yes... it is necessary to check all the files beforehand
<dholbach> it's a tedious job, but just imagine the case where you were wrong and something we were not allowed to redistribute ends up on the CDs :)
<dholbach> it's easy to remove software out of the archive, try that with 345743456765434567 million CDs that were sent out :)
<amachu> mmm
<dholbach> ompaul just pointed out that I should refer to http://wiki.ubuntu.com/PackagingGuide
<dholbach> it has a long chapter just about copyright stuff
<dholbach> nxvl_work: next
<nxvl_work> <snhome> QUESTION you said this file contained who did package, has copyright, author but this one has no author. I did not understand your answer
<dholbach> snhome: you are right, I was lazy and the archive admins are stricter nowadays
<dholbach> Copyright Holder:
<dholbach>         Christian Persch <chpe@gnome.org>
<dholbach> is all I wrote
<nxvl_work> dholbach: you are evil!
<nxvl_work> :D
<dholbach> I would have to specify  Upstream Author:  and  Copyright Holder: separately
 * dholbach hugs nxvl_work
<dholbach> and mention the year of the copyright, etc, etc
 * nxvl_work hugs dholbach back
<dholbach> there are probably better examples
<dholbach> let's come to the core part of the package: debian/rules
<dholbach> in our case it's tiny, because I decided to use CDBS
<dholbach> CDBS is a set of makefile snippets that internally call all the debhelper tools for us
<dholbach> CDBS has its downsides: there is a lack of documentation (https://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml is good though) and it's not easy to look behind the scenes
<dholbach> and it's certainly not so great for understanding what happens and how things work
<dholbach> but as we're at the end of the session, it fit quite well :)
<dholbach> <eddyMul> QUESTION: debian/rules: is it worth the time/effort to port stuff to cdbs? (I like cdbs. I hope all packages use it)   :)
<dholbach> eddyMul: that's a good question
<dholbach> my answer is: no
<dholbach> first of all: it's of little use to the user, it doesn't really change much and the effort of "porting" to it can be quite big
<dholbach> second: we always need to merge the diff between ubuntu and debian packages
<dholbach> if it's a package you're deeply interested and consider maintaining and think that whatever the debian packages uses is too gruesome, you might do it
<dholbach> but normally, no :)
<dholbach> the session is over - there will be lots of other sessions where you can ask your questions :)
<dholbach> just a few links:
<dholbach> get started: https://wiki.ubuntu.com/MOTU/GettingStarted
<nxvl_work> dholbach: thanks for your talk!
 * nxvl_work waves on dholbach
<dholbach> Blog about Ubuntu Developer Week and your MOTU journey: Add your weblog to http://ubuntuweblogs.org by following these instructions: http://ubuntuweblogs.org/submit.html
<dholbach> thank nxvl_work
<charliecb> thx
<Unksi> thankies dholbach :)
<nxvl_work> \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/
<dholbach> you guys ROCK! :)
<Kaasethu> thanks - got to know new things
<shujin> Thanks
<bananaramax> great session - thanks a lot
<dargol> dholbach: thanks a lot!
<amachu> thank you, dholbach
<Jithu2k1> :-D
<nijaba> thank dholbach
<holloway> thanks dholbach
<jsauer> thanks dholbach
<fredre> thank you
<Lantash> thanks a lot! great session
<zubat> thanks
<dholbach> next up are our Packaging Kings: James Westby & Nicolas ValcÃ¡rcel
<dholbach> who will talk to you about Ubuntu and Debian collaboration
<james_w> \o/
<dholbach> thanks a lot everybody
 * dholbach hugs james_w and nxvl_work
<james_w> thanks Daniel.
<nxvl_work> heh, 10 lines of hugs and love, that's why i love ubuntu
<dholbach> the stage is yours :)
<james_w> Firstly I'd like to apologise to Nicolas, as my oversight meant that he wasn't listed as co-presenter of this talk. Sorry Nicolas.
<nxvl_work> james_w: don't worry, i add myself :D now i'm in there
<james_w> We are going to talk today a little about collaboration between Debian and Ubuntu, and how you can make the process smoother.
<james_w> Firstly I want to say a little about what the relationship between Debian and Ubuntu is.
<james_w> Debian is the base upon which Ubuntu is built.
<james_w> Almost all packages in Ubuntu come from Debian, and most are used unchanged.
<james_w> This means that Ubuntu owes a lot to Debian and should endeavour to maintain a good relationship with them.
<james_w> There are however several differences in the way that Debian and Ubuntu are organised, and in the decisions that they have made on some issues that you need to understand in order to work with them most effectively.
<james_w> The biggest difference is that in Debian all packages have a maintainer, which may be a team, who controls the package.
<james_w> (Please feel free to ask any questions that you have as we go).
<james_w> They generally make all the decisions about the package, and are normally the only ones to perform uploads of that package.
<snhome> here or in #-chat?
<nxvl_work> snhome: -chat
<james_w> There are some moves away from this, but it remains the status quo.
<james_w> This is different to Ubuntu where in general a package doesn't have a maintainer as such, it is just looked after by all contributors.
<james_w> This difference has effects on both Ubuntu and Debian.
<james_w> For Ubuntu it means that generally a contributor isn't intimately familiar with a package, and doesn't know the Debian maintainer's opinion on things.
<james_w> For Debian maintainers it means that they generally don't know who to contact if they wish to discuss a package in Ubuntu.
<james_w> The differences in some policy decisions can also make it difficult for a Ubuntu contributor to know whether what they are doing also applies to Debian as well.
<james_w> This can be especially true for bugs, where differing versions of packages, or different dependencies in the chain can hide or expose bugs.
<edosar> but how many of debian mainteiners are ubuntu packages ?
<nxvl_work> edosar: ask you question on #ubuntu-classroom-chat please
<james_w> edosar: I don't understand your question I'm afraid, if you could re-ask it in #ubuntu-classroom-chat that would be great.
<james_w> It can be helpful to not consider Debian as a "whole," but more as a group of people who each work in their own little area.
<james_w> You will find that if you contact most of them with a bug report, a patch, or a question they will be very friendly and helpful.
<james_w> There are a few people that this wouldn't really apply to, but they are definitely in the minority.
<james_w> You will probably find if you contact those ones in a friendly manner about a specific issue then they will probably still help you, but it can be a scary thing to do.
<james_w> What I am trying to tell you here is not to let the actions of a noisy few spoil your opinions of the whole community.
<james_w> In order to understand the best ways to share work between Ubuntu and Debian we need to understand how packages flow between them.
<james_w> Ubuntu takes all source packages from Debian that aren't on a blacklist and automatically "syncs" them in to Ubuntu.
<james_w> This means that the source package is taken unmodified and just rebuilt in the latest development version of Ubuntu.
<james_w> There are certain things that may be done while building which mean that you may get different binary packages, but they do not alter the functionality, for instance https://wiki.ubuntu.com/DebianMaintainerField.
<james_w> This process stops at "DebianImportFreeze".
<james_w> In order to sync a packageafter that stage you must file a sync request, following the process at https://wiki.ubuntu.com/SyncRequestProcess.
<james_w> Where Ubuntu has to make changes to the package a new upload is done.
<james_w> This upload has a version number containing "ubuntu", which ensures that the package won't be synced without manual action, so that the changes are not lost.
<james_w> When this has been done in the past and a new upload is made to Debian, the package will be eligible for "merging".
<james_w> This means taking the two versions of the package and reconciling the changes so that you get the new changes from Debian, but also keep the Ubuntu changes. See https://wiki.ubuntu.com/UbuntuDevelopment/Merging for more information.
<james_w> Sometimes when you go to merge a package you will find that the new Debian version includes all the changes that were made in Ubuntu.
<james_w> In that case you perform a sync, meaning that again Ubuntu is using Debian's package for that software.
<james_w> And we all cheer, as that is Free Software in action (and we have less work to do).
<james_w> So, what are the ways in which we can share work with Debian?
<james_w> There are a whole bunch of ways, for instance you can share patches, work together to package new upstream versions, or coordinate transitions or security fixes.
<james_w> You can even become maintainer or co-maintainer of a package in Debian so that the package can always be used unmodified in both with less work.
<james_w> When you are about to make some changes in Ubuntu you can look to see whether these apply to Debian as well, and if they do contact the Debian maintainers and propose that you work together on the issue, or just send them the result of your work.
<james_w> It's always a good practice to coordinate your changes with the Debian maintainer, so you can check if they differ from her plans, or she is already working on the problem.
<james_w> We want to avoid cases where incompatible changes are made in the two distributions, as that creates a massive headache for the future.
<james_w> Now, we'll show you a couple of places you can use to find information about packages in Debian.
<james_w> There are several places from which you can find information about packages in Debian. Knowing where to look to find something out can be quite an art in itself.
<james_w> Luckily there is one place that tries to gather as much of this information as possible. That place is the Package Tracking System, known as the PTS.
<james_w> The PTS lives at http://packages.qa.debian.org/. You can quickly go to the page for a package using http://packages.qa.debian.org/package.
<james_w> Note that it works using the source package name, but if you enter a binary package name you get a helpful redirect page.
<james_w> Let's take a look at a typical page: http://packages.qa.debian.org/gnupg.
<james_w> Starting from the top left you can see information about the source package, such as versions, and the priority.
<james_w> You also have links to the components of the source package, so using "dget" you can quickly download the current Debian source package.
<james_w> In the right hand pane, you have some links to bug reports for the source package.
<james_w> These include the bug reports on all of the binary packages, but can also reports on the source package itself, so I usually use these so that I don't miss them (though they are rare).
<james_w> Below that you can subscribe to the PTS. This means that if you are really interested in a package you can get emails when things happen with the package.
<james_w> If you select advanced mode from the drop down menu you can select what sort of information you would like to receive.
<james_w> There are loads more links on these pages, I would encourage you to spend some time clicking around in the PTS later, and just see where you end up.
<james_w> It can be hard to remember where to find a bit of information, but most is available somewhere in one of these links.
<james_w> The other important source of information is the Bug Tracking System, known as the BTS.
<nxvl_work> <Kaasethu> QUESTION: //You can quickly go to the page for a package using http://packages.qa.debian.org/package.// -->goes to 404 error
<james_w> If you go to http://bugs.debian.org/src:gnupg you can see the page for the gnupg source package.
<james_w> Kaasethu: that link does as there is no package called "package", try http://packages.qa.debian.org/gnupg instead.
<james_w> Back to the BTS: on the above page you can see an overview of the bugs, with them divided in to sections. You can click on a bug report to get more information.
<james_w> Email is used to communicate with and control the BTS.
<james_w> You can find information on doing this at http://www.debian.org/Bugs/.
<james_w> You can also use "reportbug -B Debian" and the "bts" tool to generate the emails.
<james_w> Some tasks can be a little confusing. If you get stuck try asking in #ubuntu-motu, someone will probably be able to help.
<james_w> So, as eddyMul wanted, we'll now talk about sending patches to Debian.
<james_w> I chose this topic for several reasons.
<james_w> Firstly, it is often requested that Ubuntu forwards more of its patches to Debian.
<james_w> Secondly, it is quite an easy thing to do.
<james_w> Thirdly, if Ubuntu pushes all its patches for a package back to Debian then the package can just be synced in future, reducing the amount of work it takes to maintain them.
<james_w> so, everybody wins.
<james_w> In order to submit a patch to Debian you should first create a standalone patch that fixes a specific issue.
<james_w> You should then check the BTS to see if a bug has been filed about the issue.
<james_w> If it has then you can email the bug report and attach the patch, sending a control command to tag the bug "patch" ("bts tag #12345 patch").
<james_w> The patch can either be a simple patch that they can apply to the unpacked source package.
<james_w> Or, you can create a second source package and use "debdiff" to get the changes, and then filter out anything you don't want to send (perhaps with filterdiff).
<james_w> (debdiff uses interdiff internally, so you can also use that tool directly).
<james_w> In ubuntu-dev-tools there is a command to do exactly that: submittodebian.
<james_w> If you run that then it will generate the debdiff, allow you to edit out parts that you don't want, and then file it as a bug in the BTS.
<james_w> It uses reportbug for the last part, so you can attach the patch to an existing bug as well.
<james_w> eddyMul> QUESTION: " you can email the bug report and attach the patch": how do I email the bug report? do I email the maintainer? (I thought I should be commenting on a bugzilla entry, or something like that....)
<nxvl_work> james_w: would you answer this one?
<james_w> you email the bug itself. You can either compose a mail to 12345@bugs.debian.org to send a message to bug #12345, or you can use "reportbug -B Debian"
<nxvl_work> BTS it's not like LP
<nxvl_work> on LP we just add a comment and attach our patches in there
<nxvl_work> on BTS all the changes are handled by mail
<nxvl_work> you report bugs by mail, change the status by mail, add comments by mail
<nxvl_work> the only way to interact with BTS is by mails
<james_w> I tend to do these steps by hand as I am familiar with the BTS, but if you are not reportbug should be very useful.
<james_w> You can see one of the mails that I sent at http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=451683.
<james_w> One thing that we would like you to do when filing bugs in Debian, with or without a patch, is to set a "usertag" on them.
<nxvl_work> you can find more information about this on http://www.debian.org/Bugs/
<james_w> This allows the bugs to be tracked as one, so that it can be seen where Ubuntu is contributing back.
<james_w> You can find out how to do this at https://wiki.ubuntu.com/Bugs/Debian/Usertagging.
<james_w> I would like to point you to one last thing that will make all of this easier in an environment where we have multiple people working the packages.
<james_w> That is the proposal described at https://lists.ubuntu.com/archives/ubuntu-devel/2007-November/024743.html.
<james_w> If you could all start using this technique when creating patches it will make it easier to understand what patches are meant for upstream.
<james_w> My closing comment would be that there are many people involved in Ubuntu development that are knowledgeable about Debian, so if you need to know where to find something, or would like advice about whether a change is applicable to Debian then you should just ask.
<james_w> Now, nxvl_work is going to take over for the rest of the session.
<nxvl_work> james_w: thanks
<nxvl_work> Ok
<nxvl_work> I will talk a little about the best practices on Debian sharing
<nxvl_work> Sometime we want to help, but we do to exact oposite
<nxvl_work> so, please keep in mind some of the things i'm going to tell you
<nxvl_work> There are many ways that you can work together with Debian.
<nxvl_work> For instance you can share patches, work together to package new upstream versions,
<nxvl_work> coordinate transitions, security fixes. You can even become maintainer
<nxvl_work> or co-maintainer of a package in Debian so that the package can always
<nxvl_work> be used unmodified in both with less work.
<nxvl_work> ok, that part is not as simple as it look you need to be careful on what you are doing
<nxvl_work> Many of the bugs on ubuntu are present on debian
<nxvl_work> but it's important to keep in mind and be VERY careful is that no every bug on ubuntu
<nxvl_work> applies to debian, there are software error which are not reproducible on debian
<nxvl_work> so if you will ping the maintainer or report back to debian
<nxvl_work> you must be sure it applies, so you don't make the Debian maintainer work and test looking for a bug that doesn't exist.
<nxvl_work> Also if you are going to send your work to them you must keep in mind that he is also a volunteer as you are
<nxvl_work> they can add your changes if they think it will help them
<nxvl_work> but maybe they don't want to apply them
<nxvl_work> also they don't want to read long diff files with lots of changes
<nxvl_work> it's better to send them small and separate patches with your
<nxvl_work> changes so they can use the ones they find usefull and discards the ones
<nxvl_work> who doesn't
<nxvl_work> Ok, but, what if i'm a triager?
<nxvl_work> You can test if the bugs are also present on debian and report them back using BTS, being carefaul on the points talked earlier
<nxvl_work> also, LP and bts have a "link" option so you can have on the Bug report at LP the link to the debian bug report
<james_w> <tacone> QUESTION: how are we going to know that a bug exists or not in Debian ?
<nxvl_work> so it's easier to keep track of what's going on with the debian bug
<nxvl_work> tacone: easy, try to reproduce it on Debian :D
<nxvl_work> tacone: i have always a Virtual machine running debian for test purposes
<nxvl_work> also you can have a chroot environment
<nxvl_work> ok, back to the LP and BTS syncroniztion
<james_w> there are some packaging bugs that can be checked just by doing things like looking at the dependencies in Debian, but most do need an environment to test.
<james_w> Also, you could ask someone with a Debian system to test.
<nxvl_work> this way it's easier to keep track of what's going on with the debian bug
<nxvl_work> also bts has an option like this that you can use with the command (mail command) 'forwarded $bug $upstream_url'
<nxvl_work> so you can have it backwards, so please use the tools to have a better comunication and avoid the packagers to duplicate efforts on patching.
<nxvl_work> And always keep it mind that Debian makes things LOTS easier to us
<nxvl_work> so we need to try to do our best to make things LOTS of easier for them also
<nxvl_work> :D
<james_w> <eddyMul> QUESTION: does ubuntu track debian unstable? testing?
<nxvl_work> ok, now with the questions
<nxvl_work> eddyMul: track as in syncs from?
<eddyMul> eddyMul: yes
<nxvl_work> unstable
<nxvl_work> always unstable
<nxvl_work> <snhome> QUESTION What am I missing in explanation? If Ubuntu and Debian are so similar why have Ubuntu?
<james_w> though it is possible to sync from elsewhere, e.g. experimental
<nxvl_work> snhome: that's a common but hard question
<nxvl_work> eddyMul: oh yes i forgot, somethimes we sync directly from upstream
<nxvl_work> eddyMul: but commonly from sid (unstable)
<nxvl_work> snhome: ok, on your question
<nxvl_work> snhome: there are some differences between Ubuntu and Debian, and they go on their policies
<nxvl_work> for example, ubuntu install some restricted driver out of the box, debian would NEVER do it
<james_w> Ubuntu changed some things that would have been very difficult or impossible to do in Debian.
<james_w> Also, Ubuntu has a smaller focus in terms of things like supported architectures, meaning it can focus more energy in to the areas it does concentrate on.
<nxvl_work> so Ubuntu and Debian are similar in some ways, but VERY different on others
<james_w> any last questions, we have a couple of minutes left.
<nxvl_work> mathiaz: around?
<seajazz> thanx
<snhome> thanks
<james_w> thanks all.
<james_w> and thanks nxvl.
<shujin> thanks guys!
<james_w> Rave safe kids.
<arturodr> thanks
 * nxvl_work HUGS james_w
<nxvl_work> oh yes
<Unksi> thank you :)
<nxvl_work> another difference is that on Ubuntu we like to HUG each other a LOT!
<nxvl_work> :D
<nxvl_work> so, i think mathiaz is not here yet
<nxvl_work> but the next talk would be on Server Team
 * mathiaz looks around
<InsClusoe> Thanks..
<snhome> nxvl: consider yourself hugged :)
<nxvl_work> mathiaz will explain you what is the work we are doing on the Server side of Ubuntu, what are our goals, an how to start working with us
<nxvl_work> it will be a really nice talk
<mathiaz> nxvl_work: great introduction ! Thanks.
<nxvl_work> here he is!
<mathiaz> so how is still around ?
<nxvl_work> lets wave on mathiaz
 * shujin waves
 * nijaba waves at mathiaz
 * jetsaredim waves
 * sommer wavings
 * cap10morgan waves too
<nxvl_work> \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/
 * Unksi waves
 * Koon waves too
 * Gnine waves from ubucopter
<holloway> \m/
<mathiaz> after a couple of rather technical session about development, I'd like to take some time to present the Ubuntu Server Team.
 * eddyMul waves
<mathiaz> who we are, what we're doing, and how you can get involved with the Server Team.
<nxvl_work> mathiaz: did you want me to handle the cuestions?
<nxvl_work> questions*
<mathiaz> nxvl_work: if you could relay the questions from u-c-c it would be appreciated
<nxvl_work> ok
<nxvl_work> just ask if you want one
<mathiaz> nxvl_work: thanks. :)
<mathiaz> So who is the server team ?
<mathiaz> you can find most of the information on our wiki pages : https://wiki.ubuntu.com/ServerTeam
<nxvl_work> if i apear to be dead im on bathroom, just be patient
<mathiaz> I've been part of the server team for almost a year now
<mathiaz> and most of the people I've seen getting onboard share a common interest in server related software.
<mathiaz> As a consequences we also tend to be interested in setups and configuration found in corporate enviornments, such as directory services (ldap and AD domain), web services or network authentication.
<mathiaz> Let me introduce some key people to the server Team (by alphabetical order):
<mathiaz> Adam Sommer, aka sommer
<mathiaz> He is our documentation guru.
<mathiaz>  He's taken the task to review
<mathiaz> and update the Server Guide for Hardy.
<mathiaz> Thus he is also involved with the Documentation team.
<mathiaz> Ante KaramatiÄ - another long time contributor to the server team, ivoks.
<mathiaz> Member of the MOTU team, he did some work on the apache package and the bacula package.
<mathiaz> Chuck Short - zul - he maintains xen.
<mathiaz> Kees Cook and Jamie Strandbodge are our security gurus.
<mathiaz> They are the ones that keep your system safe at night ;)
<mathiaz> They've started the Security Team recently: https://wiki.ubuntu.com/SecurityTeam
<mathiaz> Michael Behrens - faulkes-
<mathiaz> A recent contributor coming from the forums.
<mathiaz> He's taken the role of the Forum Ambassador.
<mathiaz> He's been lurking in the forums for quite some time and works on providing feedback from the Server forum.
<mathiaz> Mathias Gug - mathiaz. Well that's me.
<mathiaz> I've been doing some work on AppArmor and trying to get the Ubuntu Server Team up and running.
<mathiaz>  Neal McBurnett - long time contributor and interested in documentation and virtualization (such as Ubuntu JeOS).
<mathiaz> Rick Clark - dendrobates. He is the techinical manager of the Server Team at Canonical.
<mathiaz> Scott Kitterman - mainly interested by mail services.
<mathiaz> if you're interested in
<mathiaz> postfix or clamav he is the man to talk to
<mathiaz> He is also an active member of the MOTU team and became a core-dev recently.
<mathiaz> Soren Hansen - soren - our virtualization specialist.
<mathiaz> He brought cool virtualization technology in Ubuntu for Hardy.
<mathiaz> He is gonna run a session on this topic tomorrow IIRC.
<mathiaz> So - these are some key people from the team and I've forgotten many others.
<nxvl_work> mathiaz: tomorrow at 17 UTC
<mathiaz> As you can see the group has a broad range of interests.
<mathiaz> And most of use are actively involved in other teams of the Ubuntu project.
<mathiaz> This is one of the caracteristic of the Server Team: we all share a common interest in server technologies, but have differents skills.
<mathiaz> Being part of the team often means representing the Server Team in other areas of the Ubuntu project.
<mathiaz> Being a contributor to the server team can be taken under different roles:
<mathiaz> The helper answers questions on the ubuntu-server mailing list and the #ubuntu-server irc channel.
<mathiaz> This is usually the first step and easiest one to take to start contributing to the server team.
<mathiaz> Triagers digg into bugs the ubuntu-server LP team is subscribed to.
<mathiaz> Out LP team is a bug contact for a list packages, such as samba, openldap, mysql or apache2.
<mathiaz> The current list of packages can be found here: https://bugs.launchpad.net/~ubuntu-server/+packagebugs
<mathiaz> The list will be expanded soon as soon as we've setup a dedicated mailing list for ubuntu-server bugs.
<mathiaz> Usually we decide to target our efforts for bug triagging to one or two package for a week and discuss the outcome of our triagging effort during our weekly meeting.
<mathiaz>  The focus for this week is openldap.
<mathiaz>  Version 2.4 has been uploaded a couple of weeks ago and bugs have been filled as people start testing this new major version of openldap.
<mathiaz>  So if you have some experience in directory services, you can help us right now.
<mathiaz> This is a great way to start with the LP bug tracker and doesn't require any knowledge of programming languages.
<mathiaz> We're working closely with the BugSquad team - triaggers participate on the bugsquad mailint lists.
<mathiaz> And once in a while with have the honor of having our own HugDay where the whole bug triagger community helps us.  https://wiki.ubuntu.com/BugSquad/
<mathiaz> Once bugs have been triagged, it's time to fix them.
<mathiaz> This is when the packagers
<mathiaz> come into the game.
<mathiaz>  This role requires an interest in packaging.
<mathiaz> We maintain a list of bugs that are easy too fix: https://bugs.launchpad.net/~ubuntu-server/+mentoring
<mathiaz> These fixes can make their way easily into the ubuntu repositories via the sponsorship process
<mathiaz> https://wiki.ubuntu.com/SponsorshipProcess
<mathiaz> Doing work on the packaging front leads to a close a collaboration with the MOTU team and is a great way to gain experience to become a MOTU.
<mathiaz> https://wiki.ubuntu.com/MOTU
<mathiaz> Another role that kicks in on a regular schedule are the testers.
<mathiaz> New features and new packages needs to be tested before released for wide spread consumption.
<mathiaz> Thus we organize test plans.
<mathiaz> For example, likewise-open has been uploaded to universe.
<mathiaz> It provides AD directory integration. However there are lot's of different AD setups.
<mathiaz> So we'll setup a test plan to keep track of the results.
<mathiaz> If you have access to an AD domain, installing ubuntu and testing you can join the domain with likewise-open is an easy way to contribute to the Server Team right now.
<mathiaz> Testing plans are coordinated with the Ubuntu QA Team - https://wiki.ubuntu.com/QATeam
<mathiaz> Testers are taking an important role when we're about to ship a new milestone or release.
<mathiaz> We're responsible for ensuring that the ubuntu-server isos are working correctly, which involves performing a dozen of tests for three isos.
<mathiaz> We use the isotesting tracker from the QA team to track the results. The more testers we have, the less tests each of us has to do and results are posted faster.
<mathiaz> Server hardware support is another area where testing is important.
<mathiaz> We're trying to make sure that ubuntu can used on the main server hardware, so if you have access to such hardware, popping a cd into the machine, installing a standard ubuntu server and reporting that whether it has sucessfully installed or failed is an easy way to contribute to the server team.
<mathiaz> An additional process to the testing of a feature is documenting it.
<mathiaz> That's the role of the Documentors.
<mathiaz> Browsing the ubuntu-server mailing list archive, lurking in the #ubuntu-server irc channel or going through the forum posts shows patterns in user's questions.
<mathiaz> Recurring themes are identified and turned into documentation.
<mathiaz>  A wiki page in the community section of help.ubuntu.com is first created.
<mathiaz>  Once the quality has improved, a new section is added to the server guide.
<mathiaz>  All this work is undertaken by the Documentors of the Server Team.
<mathiaz> Collaboration with the Documentation team is done on a daily basis to achieve consistency with other help ressources.
<mathiaz> Adam Sommer started to update and review the Server guide for Hardy.
<mathiaz> The document is maintained in a bzr tree - helping adam will introduce you to  docbook and distributed version control with bazaar.
<mathiaz> There is also the option to go over server related wiki pages on the community help pages.
<mathiaz>  A good starting point is the Server page that has pointer to lots of howtos.
<mathiaz> https://help.ubuntu.com/community/Servers
<mathiaz> And the last role in the Server Team are the Developers.
<mathiaz>  they develop new features, usually specified during the Ubuntu Developer Summit that takes place at the begining of each release cycle.
<mathiaz> Tracked by a blueprint we have around 3 months to get a new feature into ubuntu.
<mathiaz> For hardy, virtualization, iscsi and windows integration have been some of the features integrated.
<mathiaz>  Now that Feature Freeze is in place, we've moved our focus to testing and bug fixing.
<mathiaz> Thus the developers won't be very active until we release hardy at the end of april.
<mathiaz> As you can see, contributing to the Server Team can be undertaken in more than one way.
<mathiaz>  It usually involves a lot of interaction with other teams from the Ubuntu project.
<mathiaz> It's also a good way to show your contribution to Ubuntu and thus helps getting Ubuntu membership.
<mathiaz> The GettingInvolved page gives an overview of the roles I've talked about above.
<mathiaz> https://wiki.ubuntu.com/ServerTeam/GettingInvolved
<mathiaz> So - how do we work ?
<mathiaz> We track our progress on the Roadmap and meet once a week to discuss outstanding issues.
<mathiaz> https://wiki.ubuntu.com/ServerTeam/Roadmap
<mathiaz> We use the ubuntu-server mailing and #ubuntu-server to coordinate our activities, discuss policy change in the team.
<mathiaz> Joining the ubuntu-server team on LP is simple as subscribing to the ubuntu-server mailing list and applying for membership on LP.
<mathiaz> The ubuntu-server team is one of the easiest way to start getting involved in Ubuntu development.
<mathiaz> So If you already know which role you'd like to contribute as, you can find a list of tasks in the Roadmap.
<mathiaz> Don't hesitate to ask one of the team members involved in your area of interest.
<mathiaz> Refer to the key people I've listed above.
<mathiaz> Most of the information related to the ServerTeam can be found in the ServerTeam wiki pages: https://wiki.ubuntu.com/ServerTeam
<mathiaz> If you're overwhelmed by all the available information and you're lost, come talk to me - mathiaz on irc or mathiaz@ubuntu.com.
<mathiaz> I'll help getting started.
<nxvl_work> mathiaz: ready for questions?
<mathiaz> Well - that's all that I wanted to say about the server team.
<mathiaz> nxvl_work: yes - please go ahead.
<nxvl_work> <eddyMul> QUESTION: can you talk a bit about canonical "Landscape"?
<mathiaz> eddyMul: This is a product in beta mode developed by a team within canonical.
<mathiaz> eddyMul: I'm not actively involved in the project so I don't really know much about it.
<mathiaz> eddyMul: you can contact nijaba - he should be able to give more information.
<mathiaz> nxvl_work: next
<nxvl_work> <Unksi> QUESTION: Any estimates how many servers run Ubuntu, as Ubuntu is quite new player in the server market (Compared to Debian, Red Hat and other big distros on the server field)
<nxvl_work> <Unksi> QUESTION: What are the main differences with Ubuntu Server edition and Debian? What makes it worth to run Ubuntu instead Debian, except the "Ubuntu Spirit"?
<nxvl_work> this 2 ones are basically related
<mathiaz> Unksi: I don't have an estimate. We've seen a rising number of ubuntu server adoption.
<Unksi> ok
<mathiaz> Unksi: we're based on Debian, which is a very strong technical platform.
<mathiaz> Unksi: within the server team, we're working well with Debian and most of our changes are merged by in Debian.
<mathiaz> Unksi: Ubuntu provides guaranted security updates, even thought Debian is doing an excellent work on this front.
<mathiaz> Unksi: Ubuntu, via Canonical, is also more easily approachable by companies.
<mathiaz> Unksi: there is a partner's program available and propritary software can be integrated in Ubuntu via this channel.
<mathiaz> Unksi: as for rates of adoption, there is the Alfresco borometer that gives some numbers about the adoption of ubuntu in that community.
<mathiaz> Unksi: http://www.alfresco.com/community/barometer/
<mathiaz> nxvl_work: next.
<Unksi> ok, thank you
<nxvl_work> <pwnguin> QUESTION: Is server edition appropriate for beowulf clusters?
<mathiaz> pwnguin: certainly. One great asset of ubuntu server is that the basic install is small.
<mathiaz> pwnguin: so customizing it for your specific cluster needs is easier.
<mathiaz> pwnguin: there is also the preseeding mechanism available for mass intallation.
<mathiaz> nxvl_work: next
<nxvl_work> <shujin> QUESTION: Is there anyone looking into the Ubuntu Home Server idea?
<mathiaz> shujin: it depends what you mean by Ubuntu Home Server. I assume you refer to using a web interface to manage your box.
<mathiaz> shujin: there is work done to integrate ebox.
<mathiaz> nxvl_work: next.
<nxvl_work> <eddyMul> QUESTION: can you talk more about isotesting tracker?
<mathiaz> eddyMul: the isotesting tracker is a website used by the QA team and the release when we're about to publish a new iso.
<mathiaz> eddyMul: http://iso.qa.ubuntu.com/
<mathiaz> eddyMul: it's also used by other teams such as the mozilla team to keep track of testing for new builds.
<mathiaz> eddyMul: basically, it's a list of tests and sucess/failure results.
<mathiaz> nxvl_work: next.
<eddyMul> mathiaz: interesting. will dig into this a bit more....
<nxvl_work> <cap10morgan> QUESTION: Are there plans to do other works-out-of-the-box style setups w/ the server installer like the LAMP installation option? (I'm thinking things like NT domain / AD controller, assuming Samba et. al. are up to the task)
<mathiaz> cap10morgan: this a work in progress.
<mathiaz> cap10morgan: we've already added 5-6 tasks during gutsy: samba server, postgresql server, mail server to name a few.
<mathiaz> cap10morgan: hopefully we'll be able to join a domain soon at install time.
<mathiaz> cap10morgan: now that likewise-open has been published in universe, it needs more testing.
<cap10morgan> soon as in hardy or hardy+1?
<mathiaz> cap10morgan: and once it's move to main, we can integrate into the installer.
<mathiaz> cap10morgan: it depends how well the testing goes.
<cap10morgan> ok
<mathiaz> cap10morgan: if we have a lot of tests and we're confident that likewise-open is stable, then we can try to move it to main for hardy and get it into the installer.
<mathiaz> cap10morgan: however we're already past FeatureFreeze - so things are more complicated.
<cap10morgan> so what you're saying is, i should help test likewise-open :)
<mathiaz> cap10morgan: yes.
<mathiaz> and other too :)
<mathiaz> nxvl_work: next
<nxvl_work> <crevette> QUESTION: Don't you feel this is an hard task, to have only 6 months cycle to provide a server distribution; aimed on reliability; when others (debian, RH) take several years without releasing a version
<mathiaz> crevette: that's why we've introduced the concept of LTS releases.
<mathiaz> crevette: companies are looking for a fixed schedule so that they can plan their upgrade.
<mathiaz> crevette: in the case of debian, it's hard to know when the actual release will be done.
<mathiaz> crevette: in the case of RH, they've introduced new features in their service packs (or whatever it's called)
<mathiaz> crevette: As we're preparing for an LTS release, we've also been more conservative in the changes we've implemented for this release.
<mathiaz> nxvl_work: next.
<nxvl_work> <mzungu> QUESTION: Will hardy be a direct upgrade for a server currently running dapper, or does it have to go through edgy->feisty->gutsy?
<mathiaz> mzungu: dapper->hardy will be supported
<mathiaz> nxvl_work: next
<nxvl_work> <eddyMul> QUESTION: how different is Ubuntu JeOS default install from Ubuntu Server Edition's default install?
<mathiaz> eddyMul: the main difference is in the kernel flavour installed.
<mathiaz> eddyMul: JeOS installs a the -virtual flavour, which is a kernel that hasn't all the drivers available.
<eddyMul> is JeOS optimized for Xen? KVM?
<mathiaz> eddyMul: the installed system is also smaller - only the -base seed is installed IIRC
<mathiaz> eddyMul: Not that I remember of.
<mathiaz> eddyMul: I think it has the open-vm-tools available.
<sergevn> mathiaz: So JeOS is meant for inside an virtual machine, not as host OS?
<mathiaz> sergevn: yes - JeOS is tuned to run a guest.
<mathiaz> sergevn: hardy server will have great support for virtualization as a host.
<eddyMul> thanx, mathiaz & sergevn
<mathiaz> nxvl_work: next ?
<nxvl_work> <leonel> QUESTION: Can it be added a LAPD ( Linux Apache PostgreSQL Django )  to tasksel like theres a LAMP ?
<nxvl_work> one more left and we are done
<mathiaz> leonel: I'm not sure it's such a common scenario. We don't want to have a list of hundreds of profile available during installation.
<mathiaz> nxvl_work: next
<nxvl_work> <shujin> QUESTION: This may be off topic, but any reason eBox was chosen over Webmin?
<nxvl_work> las one!
<nxvl_work> last*
<mathiaz> !webmin | shujin
<ubotu> shujin: webmin is no longer supported in Debian and Ubuntu. It is not compatible with the way that Ubuntu packages handle configuration files, and is likely to cause unexpected issues with your system. See !ebox instead.
<eddyMul> mathiaz, ubotu: nice!   :)
<nxvl_work> thats why i love ubotu
<shujin> ouch, I have a 15 servers running webmin
<mathiaz> Well - I think that's all for today.
<shujin> thanks mathiaz!
<mathiaz> Thanks for attending this session about ubuntu server team
<eddyMul> thanx, mathiaz
<Unksi> mathiaz: thank you :)
<mathiaz> it's also the last session of the first day of the Ubuntu Developer week.
<eddyMul> and nxvl_work, too
 * nxvl_work waves
<mathiaz> There is more to come during the whole week.
<nxvl_work> and dances \o> <o> \o/ <o/ \o>
<mzungu> thanks mathiaz
<sergevn> mathiaz: Where can I find more info about the Ubuntu Week?
<holloway> mathiaz, thank you for the view about your team :)
<arturodr> thanks
<mathiaz> soren will talk about virtualization tomorrow and dholbach about MOTU.
<mathiaz> More information: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<mathiaz> sergevn: ^^
<InsClusoe> Thanks to all of you Ubuntu folks...
<mathiaz> Thanks all - and I hope to see you soon onboard the Ubuntu Development team ! :)
<InsClusoe> It has been an evening well-spent.
<nxvl_work> btw
<nxvl_work> join the 5-A-Day cause
<sergevn> InsClusoe: Indeed, didnt knew about this untill I got the invite trough #ubuntu-server ^^
<nxvl_work> http://nvalcarcel.aureal.com.pe/?p=171
<InsClusoe> Sergevn: Don't worry... The first two sessions are repeated on Friday as well. So you haven't missed a lot.
<holloway> and also there are the logs :)
<soneil> how are these weeks usually announced?  I caught it by chance on the planet this morning, else I'd have no idea
<InsClusoe> soneil: This is the first such week, I believe.
<soneil> ah, ok.   just wondering if there's a list I should have been paying more attention to
<InsClusoe> nxvl_work: I am willing to join 5-A-Day.
<nxvl_work> InsClusoe: is not hard, just take a look and triage them
<InsClusoe> Hmm... I will try from this week with an initial target of 5-A-Week.
<InsClusoe> soneil: I saw it first on Ubuntuforums' Packaging and Compiling Programs message board first.
<nxvl_work> InsClusoe: triage is just ask for help, reproduce bugs and confirm them
<nxvl_work> InsClusoe: so you can start with that, just takes 5 minutes each bug
<InsClusoe> nxvl_work: ok.. I can definitely do that everyday then. Guess I can take help on #ubuntu-devel or #ubuntu-motu whenever needed.
<InsClusoe> See you all tomorrow. Have a nice day/evening/night wherever you are.
<nxvl_work> InsClusoe: yep, just ask on #ubuntu-bugs or #ubuntu-motu
<holloway> cya InsClusoe :)
<Xk2c> bye
<sergevn> Tomorrows session(s) are also in #ubuntu-classroom?
<lamalex> aren't there sessions today?
<mathiaz> sergevn: yes - they're also here.
<mathiaz> lamalex: today's session have already finished.
<mathiaz> lamalex: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<mathiaz> lamalex: ^^ has the schedule
<lamalex> hm I thought I saw packaging was at 1700
<mathiaz> lamalex: 1700 UTC
<lamalex> :P I just did my math wrong
<lamalex> bummer, I can't make any of these
<sergevn> are there also logs available for these sessions?
<antcarsa> sure, https://wiki.ubuntu.com/MeetingLogs/devweek0802/PPAs1
<sergevn> antcarsa: thx :)
<rzr> hi
#ubuntu-classroom 2008-02-19
<o0splitpaw0o> Vorian: suppie
<bb74_> hallo, schon jemand da?
<dholbach> bb74_: most people speak english in here :)
<dholbach> bb74_: and yes, there are 119 people around :)
<bb74_> ok, now i've take a look at the time-table and will be back at 16h00
<dholbach> 16:00 UTC :)
<luisbg_> dholbach, what time is UTC right now?
<dholbach> daniel@lovegood:~$ date; date -u
<dholbach> Di 19. Feb 09:38:37 CET 2008
<dholbach> Di 19. Feb 08:38:37 UTC 2008
<dholbach> daniel@lovegood:~$
<dholbach> "date -u" is your friend :-)
<bb74_> ok, 17h00 cet
 * luisbg_ has just learned a new terminal trick
<luisbg_> yeah, thanks
<bb74_> :-)
<dholbach> ROCK ON! :-)
<luisbg_> derivative session at 19h00 utc, 20h00 my local time
<dholbach> I look forward to it
<tamrat> just an idea: wouldn't it be good to prepare a question section in the wiki where people can already put their questions for each session, just in case they are not able to come - and might be good for the "speakers" to prepare their thing
<dholbach> tamrat: if you figure out a good place to put them that should be fine - the thing is: it'd take some time to announce that change also I had so many questions in the sessions that I could barely answer them all
<luisbg_> tamrat, if wiki questions had more priority or viceversa... it would be unfair
<luisbg_> dholbach, in the sessions... how are the questions handled? who selects which one is replied and who has to answer it?
<dholbach> luisbg_: carry them over from #-chat and reply to them one by one
<luisbg_> ok
<Unksi> luisbg_: the practises used are explained well here: https://wiki.ubuntu.com/UbuntuDeveloperWeek
<Unksi> be sure to have a look at there, you will also find the programme from there :)
<luisbg_> Unksi, thanks
<luisbg_> Unksi, need to know that for this evening
<Unksi> youre welcome
<phoenix24> Hi folks!
<KEBA> hey, i missed this romm yesterfday :(, are the channels logged anywhere?
<faulkes-> yes, see the UDW wiki page
<KEBA> kay
<KEBA> im too silly, i cannot find, do u mean thsi page: https://wiki.ubuntu.com/UbuntuDeveloperWeek/JoiningIn
<faulkes-> go to the root of that page
<faulkes-> each of the talks which has been presented have a link which you can click, iirc
<faulkes-> https://wiki.ubuntu.com/UbuntuDeveloperWeek/
<faulkes-> click on any of the links for the 18th
<KEBA> thx
<KEBA> some things are to easy for me
<txwikinger> schedule @London
<txwikinger> !schedule @London
<txwikinger> !schedule
<ubotu> Ubuntu releases a new version every 6 months. Each version is supported for 18 months to 5 years. More info at http://www.ubuntu.com/ubuntu/releases & http://wiki.ubuntu.com/TimeBasedReleases
<effie_jayx> !now
<ubotu> Sorry, I don't know anything about now - try searching on http://ubotu.ubuntu-nl.org/factoids.cgi
<mruiz> @now
<ubotu> Current time in Etc/UTC: February 19 2008, 14:09:18 - Next meeting: TriLoCo-Midwest in 10 hours 50 minutes
<Solarion> morning dholbach
<Tm_T> g'day kids
<dholbach> hey guys :)
<ups> hi
<joshaidan> hey
<sergevn> Heya
<sergevn> only 51 minutes left :D
<Solarion> time, I think, for more coffee.
<jjesse> there's always time for more coffee
<Solarion> no, I can think of cases where the time is insufficient for more coffee.
<Solarion> for instance, if you're on a medevac team....
<Solarion> "Can't intubate the guy now; need more coffee!"
<sergevn> Solarion:
<sergevn> lol
<mruiz> ping dholbach
<dholbach> hi mruiz
<joshaidan> I could use some more coffee
<Tm_T> dholbach: moi
<sergevn> *slurp* aah
<jjesse> looks like someone got there coffee
<sergevn> jjesse: cup's empty already, refill NOW!
<sergevn> jjesse: ;)
 * jjesse pours coffee for sergevn
 * jjesse pours coffee for sergevn
<jjesse> there two cups should keep you busy
<dholbach> we have some REALLY excited people here :)
<sergevn> *sergevn's eyes popping out
<dtolj> hi
<dholbach> WELCOME EVERYBODY TO DAY 2 OF THE UBUNTU DEVELOPER WEEK!
<soren> \o/
<dholbach> I hope you all managed to grab a comfy seat and have your favourite drink ready
<dholbach> https://wiki.ubuntu.com/UbuntuDeveloperWeek has the schedule for today
<Tm_T> dholbach: no and no but better go ahead anyway ;)
<dholbach> and https://wiki.ubuntu.com/UbuntuDeveloperWeek/Rules explains how we deal with everything in this channel
<dholbach> please keep all the chatter out of this channel, and talk in #ubuntu-classroom-chat
<dholbach> if you have questions, ask them in #ubuntu-classroom-chat and prefix them with QUESTION: so they're easier to spot
<dholbach> in our first session today, we have SÃ¸ren Hansen, our Virtualisation king, long-time MOTU and a good friend of mine
 * soren hugs dholbach 
<dholbach> please treat him gently, we still need him :)
 * dholbach hugs soren
<dholbach> we still have two minutes, so lean back and enjoy the show
<soren> Please keep the questions rolling in. I haven't prepared much, so any questions are appreciated.
<soren> Here goes..
<soren> Hi, and welcome to the first UDW talk for the day. My name is Soren Hansen, and I'll be your host for this session whose topic is virtualisation.
<soren> Ok, first bit of generalitites about virtualisation..
<soren> Virtualisation is a bit of a broad topic.
<soren> There are various types of virtualisation techniques, each with the own pros and cons.
<soren> Common for them all is that they enable you to split up one physical machine into what seems like many machines.
<soren> KVM, which we have chosen as our preferred free virtualisation technology, does this by providing a complete virtualised machine to a socalled guest operating system.
<soren> In a perfect world, the guest os (the operating system running inside the virtual machine) will not be able to (or at least need to be able to) tell that it's running inside a virtual machine.
<soren> From its perspective, it's running in a regular PC.
<soren> Other approaches are used by other virtualisation solutions..
<soren> Xen for instance replaces the regular linux kernel with a so-called hypervisor.
<soren> On top of that you can run specialised linux kernels.
<soren> There's also so-called containers.
<soren> They usually use the same running kernel, but keeps both filesystem and process space separate from the individual "virtual machines".
<soren> There are a few others, but these are the most interesting ones.
<soren> I'm ready for questions any time.
<mzungu> <yann2> QUESTION (for later, when it's time): can KVM handle irq generated by guests on may cores (compatibility with irqbalance), or do all the irqs have to be done by the first core?
<soren> I'm not entirely sure I understand the question.
<soren> Are we talking virtual or physical cores?
<yann2> can I reply here? :)
<yann2> yeah, physical cores, on the host
<soren> (I BTW prefer more general, high-level questions in this session. I'd like to have a bit of time to research these very technical questions before I just blurt out an answer.)
<mzungu> <newlands_> QUESTION  will KVM use my 3D graphics card? VBox and VMWare do not, yet.
<soren> yann2: I'd really like to get back to you on that. Can we talk afterwards?
<soren> newlands_: No, I'm afraid not.
<yann2> soren > np :)
<mzungu> <yann2> QUESTION (yeah, 've got a lot, for later): KVM is in the kernel, so in main, so in theory supported by canonical - is it going to be supported even on processors with no virtualisation extensions (opterons 2nd generations, for example) with KVM running in QEMU
<soren> yann2: I'm inclined to say it can handle it, but I want to check before I say for sure.
<mzungu> <Shiv> QUESTION: Which is faster? Bare_Metal -> Xen -> Guest_OS   OR   Bare_Metal -> Host_OS -> KVM/VirtualBox -> Guest_OS
<soren> yann2: No, we will not be supporting kvm running on CPU's that don't support it.
<soren> yann2: In fact, it will soon be completely disabled for slightly different reasons.
<soren> Shiv: I'm not sure of the most recent benchmarks, but I believe they're very close to each other for pure computational purposes.
<soren> However...
<soren> Hm...
<soren> I'm inclined to claim that network and disk i/o will perform better if you're running Ubuntu Hardy inside your vm's.
<soren> (in kvm).
<soren> Due to the availability of virtio in our kernel.
<soren> Next question, please.
<mzungu> <edosar> QUESTION: What is the ubuntu position for VMWARE products?
<soren> Ubuntu -- which is a free software project -- has no particular relation to VMWare.
<mzungu> <BadServo> QUESTION:  At this time is Canonical focusing primarily on virtualization for the enterprise?  Becasue of the viable options, KVM/QEMU seems to be the most laking on user-friendly management apps for desktop.
<soren> I'm afraid to say much about the Canonical stance as I'm afraid to say something that is not entirely accurate.
<soren> BadServo: We are indeed focusing primarily on server use cases for our virtualisation efforts.
<soren> However..
<soren> There are graphical utilities to manage virtual machines (virt-manager primarily) that should lower the barrier of entry for regular desktop users as well.
<mzungu> <shujin> QUESTION: Is there some way to convert VMWare virtual machines to KVM?
<soren> BadServo: If virt-manager doesn't fulfill your needs, I'd love to hear about it.
<soren> shujin: Heheh... I happen to know that within the last few hours, such a thing came into existence. It's not in any ubuntu package just yet, but stay tuned :)
<shujin> \o/
<mzungu> <eddyMul> QUESTION: will Ubuntu provide tools to manage virtual machines? ( a la SuSE's)
<jdstrand> \o/
<soren> jdstrand wrote said script :)
<soren> I'm not entirely familiar with what SuSE's providing in that arena? ANyone?
<eddyMul> soren: I think you answered it w/ virt-manager. thanx.
<mzungu> <Shiv> QUESTION: (continuation....my observation is that virtual_box is faster. But intuitively Xen should have been faster due to lesser layers in between!)
<soren> That's not really a question, is it?
<soren> If so, I don't know the answer :)
<mzungu> <shujin> QUESTION: Why was the KVM approach chosen over Xen?
<soren> Ah. There's an FAQ if there ever was one :)
<soren> Ok, there are a number of reasons.
<soren> Most of it boils down to supportability.
<soren> The amount of code in the kernel is very small and modular compared to Xen.
<soren> Xen is a significant kernel patch, which kvm lives in a tiny module.
<soren> (it's also significant that the kvm stuff is in the mainline kernel, while Xen isn't).
<mzungu> <yann2> QUESTION: how is time synchronisation handled? Are there going to be "vmtools"  for kvm?
<soren> Also, due to kvm providing a fully virtualised environment the guests are running unmodified as well.
<soren> yann2: I've not had any problems with time synchronisation inside kvm for months.
<soren> yann2: Have you?
<mzungu> <shujin> QUESTION: How is KVM at running non FOSS operating systems?
<soren> Don't know, don't care.
<soren> Next
<soren> :)
<mzungu> <yann2> QUESTION: how many cores can a guest VM handle? Can KVM use properly 4/8/16 cores (like not getting 2 cores killed while others are idle)?
<shujin> fair enough
<soren> 255 is the max, afair.
<mzungu> <eddyMul> QUESTION: while the kvm code in kernel is small, how big is kvm's patchset against qemu?
<soren> eddyMul: Good question.
<soren> Er..
<soren> Well, kvm mostly uses qemu for it's excellent virtual hardwar implementation.
<soren> What kvm does differently is that it passes code execution off to the cpu rather than emulatiing it.
<soren> Which really mostly bypasses qemu.
<soren> Or those bits of it.
<mzungu> <mzungu ;) > QUESTION: What would be a reasonable setup with ubuntu on the bare metal, and vms with jeos - in terms of performance limitations
<soren> THere's a lot of work going on to merge the two code bases, though.
<soren> Well, part of the beauty is that you can start out by putting a lot of vm's on one machine. If they turn out to be too ressource hungry, you can just move them to another machine.
<soren> kvm even supports doing this "live".
<soren> i.e. without shutting the vm down.
<mzungu> wow!
<soren> It's impossible to say anything general and useful about it.
<soren> Just remember that the overhead is very small, so if you've got..
<soren> say..
<soren> a 2.5 GHz machine  with 2 GB ram in it, you can assign 1 GB ram to a guest and a few GB of space, and it will use the ram, but share the CPU with you.
<soren> ..so they will get CPU according to the host scheduler.
<soren> If nothing in particular is running on the host, the guest will get the full 2.5GHz available to it (pretty much).
<mzungu> <newlands_> QUESTION But in my testing Qemu has been by far the slowest virtualization. Is KVM faster?
<soren> So if you have services that rarely run at the same time, you can have a lot of virtual machines on the same host.
<soren> newlands_: Qemu is dead slow. KVM is near-native speed.
<soren> They work in *very* different ways.
<mzungu> <yann2> QUESTION: can KVM guests use complete disk partitions from the host? How fast is the "disk format" of KVM?
<soren> qemu *emulates* everything.
<soren> yann2: KVM can use disk partitions (or logical volumes). No problem there.
<soren> w.r.t. to speed..
<sergevn> soren: Maybe irrelevant question, will there be an frontend for KVM for desktop use?
<soren> Well, by default you use raw images.
<soren> There's no mapping, decompression or anything slowing you down.
<soren> If you're even using partitions or logical volumes rather than files, you should have near native I/O performance.
<soren> sergevn: Yes, virt-manager.
<mzungu> <buks> QUESTION: If i dont have a processor with VT (centrino duo laptop), is vmware server my best option to run XP? that is what I am using now
<soren> sergevn: It's there already.
<bigotto>  QUESTION: KVM: Can you exclusive use a PCI card in the guest? like a dvb-card?
<soren> buxy: You could also use virtualbox.
<soren> Sorry, that was for buks.
<soren> Or qemu with kqemu.
<soren> There are many options. I recommend you try them to see which fits you best.
<nijaba> sergevn: please ask your question in #ubuntu-classroom-chat, prefixing with QUESTION
<soren> bigotto: I don't believe pci passthrough is finished yet. Sorry.
<mzungu> <yann2> QUESTION: are you sure about that live migration bit? :)
<soren> yann2: Truth be told, it might be broken right now and it depends on certain circumstances, but yes.
<soren> yann2: The broken part will be fixed before release.
<mzungu> <BadServo> QUESTION:  I know that streamlining the host OS on other virtualization platforms improves performance.  While Jeos is primarily intended for VMGuest appliances, would it be a suitable environment for hosting KVM?
<soren> yann2: The design of kvm certainly supports it and it used to work (and will work soon again)
<soren> BadServo: Sure.
<soren> BadServo: You can also just use the server edition.
<mzungu> <eddyMul> QUESTION: can KVM "share memory" between guests (e.g. boths guests run JeOS, can they "share memory")?
<soren> BadServo: The differences are very minor when you're not running in vmware.
<soren> eddyMul: Not right now. *maybe* before release.
<mzungu> <BadServo> QUESTION:  Are there any plans that you are currently aware of to fix the dependency issues preventing installation of virt-manager in the official repositories on Gutsy prior to Hardy release?
<soren> BadServo: If I can find the time, I might backport the stuff to gutsy.. I much, much prefer testing results based on hardy, though.
<soren> Which brings me to another thing:
<soren> I could really, really use some testing of all of this.
<soren> Any feedback (good, bad, indifferent) would be much appreciated.
<soren> Feel free to /msg me on IRC, ask me in #ubuntu-virt, anything.
<soren> I'd love to hear from you.
<mzungu> <Ju> QUESTION : xen + bridge-utils let administrators have a 'headache free' experience with the guest vm network, does kvm provide anything similar ?
<soren> Not kvm by itself. libvirt does.
<soren> ..but that distinction should not matter much to you, so the answer is pretty much "yes". :)
<mzungu> <eddyMul> QUESTION: testing stuff for hardy: If I want to help, do you have a documented test plan? (so I don't just go poking around like crazy...)
<Ju> ;-)
<soren> eddyMul: I'd rather not restrict the testing efforts in any way. Anything you feel should work in a vm, try it, and let me know if it works out for you.
<soren> Well.. One thing though:
<soren> I'm honestly not very interested to hear about testing results from Gutsy.
<soren> If you're not comfortable upgrading to hardy just yet, you can run kvm from a live cd!
<soren> (just don't forget that running on a livecd is probably quite a bit slower than your real system)
<eddyMul> soren: it would be great to have a document about "if you want to test kvm support in hardy, here's how to start/boot"
<soren> eddyMul: https://wiki.ubuntu.com/KvmVirtManagerEtc
<soren> There's a bit of stuff to get you started.
<soren> If there are no questions, I can tell a bit about the software stack we're using..
<mzungu> go ahead...
<soren> On the host, we have kvm-60 in the kernel and likewise in user space.
<soren> This is the most recent kvm release (at least it was a few days ago).
<soren> On top of that, we have libvirt.
<soren> libvirt is both a library and a management daemon.
<soren> libvirt is mostly developed by RedHat.
<soren> The management daemon looks after your kvm processes when you can't be bothered to :)
<soren> You can connect to it, tell it to start up a virtual machine, and then disconnect.
<soren> If you need to access the console, you can connect to it via vnc and you'll see the regular login prompt.
<soren> For a GUI, we're using virt-manager (also from RedHat).
<soren> It provides a snazzy UI where you can see the VM's that are registered on each of your nodes (you can do remote management as well).
<soren> You can see how much memory they're using and all that sort of thing.
<soren> ..start them, stop them, freeze them, copy to another host, thaw them..
<soren> All sorts of cool stuff.
<soren> We also have a little script called ubuntu-vm-builder..
<soren> It can be used to bootstrap a new Ubuntu vm instance in no time at all (well, a few minutes, but it feels like no time at all).
<soren> Not surprisingly, this was developed by Ubuntu people :)
<soren> Aw, no questinos?
<soren> questions, even?
<mzungu> <jcastro> QUESTION: Where is ubuntu-vm-builder, I can't seem to find it in hardy
<soren> jcastro: It landed just a few hours ago.
<soren> jcastro: Hang on.
<soren> https://edge.launchpad.net/ubuntu/+source/ubuntu-vm-builder
<soren> I'm not making this up :)
<mzungu> <BadServo> QUESTION:  As an authority on Virtualization technologies, what do you think will be the next steps as far as the evolution of VM capabilities. or host interactions.  Since KVM is predominantly emulaiton based, do you feel mroe advanced paravirtualization will be less attractive int eh future?
<soren> kvm is not emulation based, really.
<nijaba> the version that just landed in Universe is broken for KVM at the moment.  Use my branch instead...
<soren> I'll update ubuntu-vm-builder tonight to fix that :)
<nijaba> thanks soren :)
<soren> BadServo: We're employing several paravirtual sorts of things in kvm, too.
<mzungu> <yann2> QUESTION: can KVM do snapshots? multiple snapshots?
<soren> BadServo: The virtio stuff is paravirtualisation. It depends on the host and the guest being aware of each other and their roles and thus make each others life easier and your stuff faster :)
<soren> yann2: Yes, kvm can.
<soren> yann2: virt-manager doesn't help you much in that respect, but kvm and libvirt both have the hooks to do so.
<soren> yann2: It's got a few idiosyncracies, though.
<mzungu> <eddyMul> QUESTION: any possible future cooperation w/ rPath and their VM appliance stuff?
<soren> yann2: (it depends on the disk image format to be able to save snapshots and such.
<soren> eddyMul: Anything's possible :) Currently, there's no cooperation or even interaction (at least with me).
<soren> eddyMul: We really prefer to have just one base OS on top of which people can put their applications if the so please.
<soren> eddyMul: rather than having thousands of specially built OS's.
<soren> That could change though.
<mzungu> <BadServo> QUESTION:  With Ubuntu adopting KVM as the preffered solution, has there been any noticeable increase in interest or development?
<soren> Well, one of the reasons we chose KVM was because it was already a *Very* active project.
 * nijaba thinks that's the last question
<soren> Qumranet, IBM, and Intel are all involved to various degrees.
<soren> I don't think that has changed in either direction since we decided to use it.
<soren> 1700 UTC!
<dholbach> Thanks a lot soren and nijaba for hosting the session!
<soren> Thanks for stopping by, guys! Keep those test reports coming in!
<nijaba> I did not host anything...
<mzungu> \o/
<soren> mzungu: Thanks!
<nijaba> But thanks :)
<Ju> thank you
<dholbach> For those of you who have more interest in Virtualisation, there's always #ubuntu-virt
<dholbach> help soren to make Virtualisation ROCK for Hardy :)
<dholbach> Next up is "MOTU Processes"
<mzungu> thanks, soren
<mruiz> \0/
<shujin> thanks!
<shujin> +1 even!
<dholbach> first of all I'd like to apologize, we had to change the schedule a bit yesterday, so for those of you interested in Virtualisation: the log will be available tomorrow on the https://wiki.ubuntu.com/UbuntuDeveloperWeek page
<dholbach> also as I said before there's always #ubuntu-virt
<dholbach> and soren is happy to answer questions all day :)
<dholbach> soren: right? :)
<dholbach> OK... here we go - MOTU Processes
<soren> Sure thing.
<dholbach> if you have questions, please ask in #ubuntu-classroom-chat and prefix with QUESTION: - I'm happy to answer everything related to MOTU, Ubuntu Development and Drum'n'Bass music
<dholbach> first of all: What do MOTUs do and why should you care? :-)
<dholbach> MOTUs are the Masters of the Universe and take care of ~15000 packages in Universe and Multiverse
<dholbach> it's the first stepping stone for developing Ubuntu and MOTUs are a really friendly bunch of people
<dholbach> <Riddell> QUESTION: what's the difference between ~motu and ~ubuntu-dev on launchpad?
<dholbach> Riddell: ~ubuntu-dev includes ~motu plus ~ubuntu-core-dev
<dholbach> members of ~ubuntu-core-dev are allowed to upload to all parts of Ubuntu (main and restricted included)
<dholbach> the process for joining MOTU is relatively straight-forward
<dholbach> 1. you contribute and get patches and packages uploaded by sponsors
<dholbach> 2. you go back to 1. until your sponsors think you do a very good job and are tired of uploading them for you
<dholbach> 3. you apply for MOTU membership at the MOTU Council
<dholbach> done :)
<dholbach> <shiv_> QUESTION: how many MOTUs doesn't ubuntu have?
<dholbach> shiv_: Ubuntu could always do with more MOTUs :-)
<dholbach> ~ubuntu-dev lists 110 active members
<dholbach> <jetsaredim> QUESTION: how do you get people to sponsor you?
<dholbach> and
<dholbach> <eddyMul> QUESTION: I have a patch in an LP bug report somewhere. How do I get it sponsored?
<dholbach> that's what I wanted to get to next
<dholbach> this process we call sponsoring: https://wiki.ubuntu.com/SponsorshipProcess
<dholbach> basically you attach your patch to a bug report and subscribe the ubuntu-universe-sponsors (or for main/restricted the ubuntu-main-sponsors team)
<dholbach> they will review your work, test it, then use the patch, sign the source package with their GPG key, then upload to the build daemon
<dholbach> http://people.ubuntu.com/~dholbach/sponsoring/ has an overview of the bugs that are currently sitting in the queue
<dholbach> but we dealt with lots lots lots more already :)
<dholbach> the process I just described just works for packages that are in Ubuntu already
<dholbach> what about NEW packages? completely new, never packaged software
<dholbach> https://wiki.ubuntu.com/MOTU/Packages/REVU explains how to upload your fresh and new package to a site we call REVU
<dholbach> it will have to be reviewed and acknowledged by 2 members of ubuntu-dev, then uploaded to the build daemons, then reviewed by the archive admins who have the final say
<dholbach> as we are in Feature Freeze right now, no NEW packages are accepted any more (only if they get a Freeze exception granted)
<dholbach> so it's probably better to fix bugs to make Hardy rock :-)
<dholbach> <mirrado> QUESTION: I want to help packaging games. Are there especific sponsors for especific topics or I can ask for help to any MOTU?
<dholbach> mirrado: the ubuntu-*-sponsors team take care of everything
<dholbach> mirrado: of course some teams do it differently and you can just tell somebody on the team to upload a patch you mailed them, but the generic process is preferrable since it does not block on certain people
<dholbach> <juliank> QUESTION: If there is a new Debian release of a package, containing only bugfixes, can it be merged during FF without a special exception?
<dholbach> juliank: The process for that is explained at https://wiki.ubuntu.com/FreezeExceptionProcess
<dholbach> main/restricted freeze exception are granted by the ubuntu-release team
<sistpoty|work> short answer: yes
<dholbach> universe/multiverse freeze exception are granted by the motu-release team
<dholbach> sistpoty|work: was my answer wrong?
<sistpoty|work> dholbach: nope... but that allowing bugfix only releases (at least for motu) was decided just an hour ago (unless motu-meeting should decide otherwise)
<sistpoty|work> ;)
<dholbach> sistpoty|work: ah interesting - thanks for letting us know
<dholbach> as you can see: our processes change every now and then, because we aim to make working in Ubuntu even more straight-forward :)
<dholbach> <InsClusoe> QUESTION: OFFTOPIC: Do MOTUs have a life outside contributing to ubuntu? Is there enough time to do a day job and a MOTU's tasks?
<dholbach> InsClusoe: absolutely
<dholbach> the MOTUs who are here maybe can comment on that :)
<dholbach> <eddyMul> QUESTION: if I have a patch for git-core, and if apt-cache says git-core belongs to "main", should I subscribe ubuntu-main-sponsors to my bug? (#188218)
<dholbach> eddyMul: exactly
<dholbach> are there any other questions about "Joining MOTU" and "Sponsorship Process"?
<dholbach> I'm happy if it all seems straight-forward to you too :)
<dholbach> the question I usually get most is: "Do I need to know a lot of programming languages to become a MOTU?"
<dholbach> I gave the answer so many times, that I added it to https://wiki.ubuntu.com/MOTU/FAQ - let me quote :)
<dholbach> Much more important than having a lot of progamming experience is
<dholbach>  * being a good team player
<dholbach>  * learning by reading documentation, trying things out and not being afraid to ask questions
<dholbach>  * being highly motivated
<dholbach>  * having a knack for trying to make things work
<dholbach>  * having some detective skills
<dholbach> I hope you feel encouraged :-)
<dholbach> let's go back to Feature Freeze exceptions as that's the stage of the release schedule we're in right now
<dholbach> https://wiki.ubuntu.com/HardyReleaseSchedule
<dholbach> they are generally necessary for packages that contain a new upstream version and for completely NEW packages
<dholbach> later down the road to the release the upload queue will be frozen and all changes have to be ACKed
<dholbach> <eddyMul> QUESTION: I'm a selfish jerk who likes to work on stuff I care only. Being a MOTU seemed to involve doing stuff for other people, which, while noble, might be hard for me to do. Am I fit to be a MOTU?
<dholbach> eddyMul: absolutely - we have people who work on their pet bugs and have a very narrow interest
<dholbach> that's completely fine
<dholbach> if people excel in a certain area I'm happy for them to create sub-teams and deal with things perfectly
<dholbach> of course when you become a MOTU you need to demonstrate that you 1) are technically apt and 2) you know how to work in the Ubuntu lanscape and 3) are a good team player
<dholbach> https://wiki.ubuntu.com/MOTU/GettingStarted :)
<dholbach> <eddyMul> QUESTION: OFFTOPIC: is there a good example for making "live svn/cvs/git" packages? is there a better way other than repetitively taking a snapshot.tar.gz from the repo?
<dholbach> eddyMul: at the moment I only know of https://wiki.ubuntu.com/PackagingGuide/Recipes/UseBzrAndBzrBuildpackage which needs to get some love
<dholbach> the basic idea is to use helper tools like   bzr-builddeb  from your revision control tree
<dholbach> <shiv_> QUESTION: Are the 15,000+ packages managed exclusively by MOTUs. Daunting number for ~100 people to manage.
<dholbach> shiv_: that's one of the other favourite questions we get
<dholbach> shiv_: we could always do with more people, but we also get a LOT of help
<dholbach> a lot of contributors aren't MOTUs yet or just want to fix their favourite bug, we have upstream people reporting us to apply patches or update to a newer upstream version, we have debian developers who care about their package in ubuntu, etc
<dholbach> the role as an Ubuntu Developer is often to be the match-maker
<dholbach> you interact with your peers, with users, with upstream authors and people from different distros which is the number one reason for me to love working in the MOTU team: the people
<dholbach> <shiv_> QUESTION: Does software package submission also require submission of test suites to demonstrate verification?
<dholbach> shiv_: test suites are great and the future :-)
<dholbach> check out "Writing Scripts For Automated Desktop Testing" by Lars Wirzenius on thursday for more info on that
<dholbach> but it's not a strict requirement, that's more of an upstream author job
<dholbach> <juliank> QUESTION: How about introducing something similar to Dm-Upload-Allowed in Debian? - http://wiki.debian.org/Maintainers
<dholbach> juliank: I don't know of any plans using it and currently are not sure which problem would be solved by that
<dholbach> juliank: at the moment we do very well maintaining packages in the team, we all respect somebody else's expertise in a certain area and collaborate, also we don't block on certain people - maybe I've misunderstood your question though
<dholbach> <shiv_> QUESTION: If a MOTU is interested in managing a set of packages, what kind of support is available via mailing lists, forums, etc to get notifications related to information related to these specific packages.
<dholbach> shiv_: can you elaborate? which kind of support are you talking to?
<dholbach> s/to/about :)
<dholbach> once you upload a package to the archive you can use the Launchpad bug tracker and answers tracker for it - that kind of support?
<dholbach> <shiv_> QUESTION: Notifications on uploads, changes to versions, original author putting a flag on LP so that interested ppl get to know....
<dholbach> ahh, I see - well support for mailing lists is planned in LP, so you could form a ubuntu-frobnicator team and have a mailing list for it - does that help? :)
<dholbach> <shiv_> QUESTION: I would like to know if for ex: gedit changed in debian, gedit bug got fixed in gentoo, or new sources of gedit got released on sf.net
<dholbach> shiv_: ahhh ok, that's a nice idea
<dholbach> for new upstream versions we use debian/watch files (see https://wiki.ubuntu.com/PackagingGuide/Recipes/DebianWatch for more info)
<dholbach> for all bug and fix related discussion we try to use Launchpad
<dholbach> so if a user discovers a bug in gedit, we can link it to the equivalent upstream or debian bug and get notified if the status of it changes
<dholbach> https://bugs.launchpad.net/ubuntu/+source/gedit/+bug/177710 is an example of that
<dholbach> <shiv_> QUESTION (continued) is there any tooling support  or I collate the info actively and help percolate.
<dholbach> shiv_: I'm sure that if you can come up with a list of requirements you see for that, the Launchpad developers would love to hear - LP is definitely the place for that information
<dholbach> #launchpad on irc.freenode.net and launchpad-users@lists.canonical.com
<dholbach> <eddyMul> QUESTION: way.... off-topic: what's frobnicator? This is the 2nd/3rd time I saw it mentioned by dholbach.  (me trying to get the cult references....)
<dholbach> eddyMul: I'm sorry - I'm not sure where I read it first but I know I read it in some book :-)
<dholbach> <TuxCrafter> dholbach: do you now if it will be possible to get device specific kernels supported in universe if i create a tested debian package for this device (eeepc
<TuxCrafter> dholbach: im here
<dholbach> TuxCrafter: so that would be just about a module you build?
<Solarion> http://en.wikipedia.org/wiki/Frob
<dholbach> thanks Solarion :)
<TuxCrafter> dholbach: nope the hole kernel i want to take the ubuntu kernel source and use my own config file and build a optimised kernel for the device
<TuxCrafter> and get it in universe
<dholbach> I'm not sure the archive admins would be happy with that
<dholbach> imagine a security hole in the kernel: you'd have to patch it two times
<TuxCrafter> indeed
<dholbach> best to discuss with the kernel folks in #ubuntu-kernel to see how they deal with kernel flavours
<dholbach> to be honest I don't know their processes too well
<dholbach> I haven't built a kernel in ages :-)
<dholbach> <buks> QUESTION: how do I highlight an already reported bug in hardy as being of high priority imo. or do i just leave it and hope someone fixes it?
<dholbach> hum... buks is not around in here?
<dholbach> buks: you can always talk to the specific team in their respective team channel or on their mailing list and ask how serious they think the issue is - also asking in #ubuntu-bugs does not hurt if you really think it has been overlooked
<dholbach> there are usually a few indicators for HIGH importance bugs like number of duplicates, number of subscribers and I think we our QA team does a good job tracking them :)
<dholbach> these three pages are really important and should be your first idea when you can't figure something out:
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment
<dholbach> https://wiki.ubuntu.com/PackagingGuide
<dholbach> https://wiki.ubuntu.com/MOTU
<dholbach> One process I want to talk about is the Sync Request Process
<dholbach> syncing means: copy a source package unmodified from debian to ubuntu, overwrite our current source package and build it
<dholbach> this means that if we did local ubuntu changes, they will be overwritten
<dholbach> so syncing gedit 2.21.92-2 from debian if we have 2.21.92-1ubuntu1 is something we need to check carefully
<dholbach> if we are able to sync (and the current timing in the release schedule allows it), it's good to be in sync
<dholbach> so how do we request a sync?
<dholbach> https://wiki.ubuntu.com/SyncRequestProcess explains it, in a nut shell:
<dholbach>  - you file a bug report, mention the changes in debian that have happened since the current ubuntu version
<dholbach>  - state that no ubuntu changes will be overwritten (else we can't sync)
<dholbach>  - state that you have built it locally and it works nicely
<dholbach> in addition to that:
<dholbach>  - if you're not a MOTU yet, subscribe ubuntu-universe-sponsors or ubuntu-main-sponsors respectively and let them ACK the sync bug
<dholbach> the ~ubuntu-archive team then will deal with it
<dholbach> of course this depends on the current timing of the release, if we're in feature freeze you need to get an exception for a new upstream version and so on
<dholbach> also things like bigger transitions two weeks away from release is probably a bad idea :)
<juliank> dholbach: There's also requestsync in ubuntu-dev-tools
<dholbach> <polopolo> QUESTION: I don't know of this is the right time/place, but, If I join MOTU, I can choose to be a part of a motu team, but can I choose to be not a part of these teams or not?
<dholbach> juliank: good point! ubuntu-dev-tools is good stuff! :-)
<dholbach> polopolo: I'm not sure I understand: first you start contributing (in whatever area you like), then once your sponsors are happy with you you can apply for motu membership
<dholbach> polopolo: if in addition to that you want to join say the server team or the dekstop team or anything else, that's completely fine
<dholbach> MOTU is your onramp to ubuntu development
<dholbach> <InsClusoe> QUESTION: Is there any page where MOTUs maintain a list of active maintainers of a package and is there any way to find if more contributors are needed?
<polopolo> dholbach: but if I am a MOTU, can I choose to be NOT a part if these teams?
<dholbach> polopolo: if you wish to leave a team, that's fine - it's your call
<dholbach> InsClusoe: found it: https://wiki.ubuntu.com/DeveloperResponsibilities
<dholbach> it's a bit incomplete, but usually the maintainer field or the last uploaders in debian/changelog or the X-VCS-* header in debian/control will give you an idea who has a major interest in the package and who you can talk to about it
<dholbach> InsClusoe: there are lots of packages that need love: http://wiki.ubuntu.com/MOTU/TODO and http://wiki.ubuntu.com/MOTU/TODO/Bugs should give you a good idea of what you can help out with
<juliank> dholbach: VCS- is supported now, no X* prefix needed
<dholbach> juliank: right... seems I'm a bit behind the times :-)
<dholbach> thanks juliank
<dholbach> <shiv_> QUESTION: Slightly off-topic. While syncing with debian, how does one ensure history of changes done in the ubuntu line is not lost?
<dholbach> shiv_: if there are no changes in ubuntu worth keeping, we decide to drop changes to debian/changelog
<dholbach> shiv_: Launchpad (http://launchpad.net/ubuntu/+source/<srcpkg name>) will store it though
<dholbach> <juliank> QUESTION: What to do if the sponsor says to you that he will advocate you for MOTU, but then does not (without any explanation)?
<dholbach> juliank: best to talk to your sponsor about it again - if that fails you could ping a MOTU Council about it and let them mediate
<dholbach> <polopolo> QUESTION: is there a minium age to be a MOTU?
<dholbach> polopolo: no, not at all - I don't know who our youngest MOTU is
<dholbach> I'd suspect 16-17?
<dholbach> If we have a younger MOTU than that in here, please speak up! :-)
<dholbach> the only things we really require are:
<dholbach>  1. good track record of good contributions
<dholbach>  2. good track record of actively collaborating with team mates
<Tm_T> dholbach: IIRC 15 is youngest, though could be corrupted memory
<dholbach> Tm_T: who? :)
<dholbach>  3. showing that you know about Ubuntu processes
<Tm_T> dholbach: sorry, there's the corruption mostly =)
<dholbach> that's it
<polopolo> dolbach: well, i'm very younger then that, but I wanna help ubuntu
<Tm_T> polopolo: it's an advantage then, you have most years to help us ;)
<dholbach> polopolo: that's excellent - I hope to see you in #ubuntu-motu on the mailing list and requesting reviews for patches of yours soon :)
<dholbach> and that goes for you all of you - let me know how your MOTU journey goes if you're interested: https://wiki.ubuntu.com/MOTU/GettingStarted
<dholbach> no more questions? :-)
<polopolo> dholbach: I am thinking
<dholbach> excellent - thanks a lot for attending and thanks for all the good questions
<Tm_T> dholbach: big thank you :)
<dholbach> we have two more minutes until Tm_T is ready to rock the show and bring you Kubuntu love!
 * dholbach hugs Tm_T
 * Tm_T hides
<enaut> Thanks to you
<fredreichbier> thanks
<jussi01> !life | dholbach you lie!
<ubotu> dholbach you lie!: life is something very few people know about in this channel - and anyway, it's probably offtopic, perhaps you want to try #ubuntu-offtopic
<jussi01> :)
<dholbach> jussi01: pfffft
<Tm_T> jussi01: you waited a full hour for that?
<jussi01> Tm_T: I couldnt interupt the class...
<Tm_T> true there :))
<polopolo> QUESTION: Is there a possibiility that someone can help  to be MOTU
<buks> QUESTION: off topic, seeing as the class has not started yet:) how do you do that reply to a person thingy in irc without having to type their name
<Unksi> buks: press first letter and then tab?
<coggz> Unksi: aha
 * buks whee thanx
<Unksi> yw :)
<Tm_T> !tab | buks
<ubotu> buks: You can use <tab> for autocompletion of nicknames in IRC, as well as for completion of filenames and programs on the command line.
<coggz> how do you change colour
<Tm_T> coggz: #ubuntu for support ;)
<mruiz> thanks dholbach
<coggz> no, irc text colour
<buks> coggz: no colour!, the motd says so :)
<coggz> okok, but u are using red
 * Tm_T gets his party hat on
<Unksi> coggz: its your client that does it
<coggz> aha
<coggz> sorry
<Riddell> dholbach: sooo, what's the next talk?
<dholbach> <dholbach> we have two more minutes until Tm_T is ready to rock the show and bring you Kubuntu love! :-)
<dholbach> I thought it was clear from that :)
<Tm_T> :)
<dholbach> Tm_T and Riddell: thanks for being here tonight - the stage is yours... Let's all get ready for some hot K action :)
<Tm_T> whee
 * buks is panting and wagging tail
<Tm_T> buks: behave, or you go walking with dholbach
 * buks is sitting quitly waiting
<dholbach> it's  Kubuntu  time
<Tm_T> maybe I should introduce myself first: my name is Jussi Kekkonen, I'm fron Finland, been Linux user from early 2004 and messing with KDE and Ubuntu and their developers since late 2004
<Tm_T> I mostly spend my time running "bleeding edge or beyond" apps and then complaining when they fail to do what I want, also doing a lot of user support and being evil IRC police
<dasKreech> All hail the evil IRC police!
<Tm_T> dasKreech: sshh
 * dasKreech phears the stick
<Tm_T> then something about Kubuntu: its the better, younger, more good looking side of Ubuntu powertwins, the KDE part to be precise
<jussi01> QUESTION: Do you have any connection to the Education team?
<Tm_T> I don't know what I should tell you more for it so questions please :)
<jussi01> QUESTION: Is it true that KDE 4 will not be officially supported in hardy LTS, or am I just druk?
<Tm_T> I do have some plans to edu side, but it isn't yet in full throttle, sorry
<Riddell> Edubuntu includes KDE's Edu applications
<Tm_T> Riddell: was it so that KDE4 and KDE3 both are out from LTS but the base is?
<Riddell> there's also an Edubuntu KDE 4 meta package
<jussi01>  < amachu> QUESTION: Why prefer Openoffice over KOffice in Kubuntu?
<Tm_T> yes, KDE has excellent EDU applications, in both KDE3 and in KDE4
<Riddell> and there are large rollouts of Kubuntu in eductional uses, Canary Islands, Georgia, Philippines
<shujin> British Columbia, Canada too ;)
<_Brandon_> QUESTION: i don't know if it is in topic but why kubuntu use ark instead of kioslave to open compressed files? :)
<Tm_T> and more in the furure, when we Konquer the world
<Riddell> LTS support: 4.0 is nothing like ready for LTS support.  it's KDE's "eat your children" release.  so 3.5.9 will be the commercially supported version for hardy
<Riddell> but 4.0 will be the exciting new version that gets most publicity
<jussi01> _Brandon_: questions in #ubuntu-classroom-chat please
<emilsedgh> QUESTION: will adept/restricted manager and other Kubuntu-supported projects will come in KDE4 version, or better to ask, will their Qt4/KDE4 version appear in Kubuntu 8.04's KDE4 version?
<Riddell> amachu: there's some serious problems with KOffice 1.  it doesn't print at all well and it's full of bugs
<Riddell> amachu: I expect that to change with KOffice 2
<jussi01> < shujin> QUESTION: Should I direct questions about the KDEedu apps to the Kubuntu people or the Education team?
<Tm_T> many new users just found OO.o more usable enough to be better this way
<amachu> Riddell: Ok
<Tm_T> emilsedgh: hmm, there's work being done, I'm not sure will it be ready for 8.04 though
<Tm_T> Riddell: ^
<Riddell> emilsedgh: restricted manager is now called jockey, there's a qt 4 version in hardy
<emilsedgh> Tm_T: so which one we could expect to appear in 8.04?
<Riddell> emilsedgh: mornfall is working on adept for KDE 4, find it in ~mornfall PPA on launchpad
<jussi01> emilsedgh: please join #ubuntu-classroom-chat to ask questions :)
 * Tm_T sips coffee
<jussi01> < polopolo> QUESTION: is there any reasons why some of the self-devolped programs of ubuntu are not included at kubuntu like compiz etc?
<emilsedgh> thanks, you rock, sorry jussi01, i thought its the place for that
<Tm_T> shujin: I think Edu group might be better, as we can't concentrate much in to it currently
<Tm_T> polopolo: being not stable enough to be included by default? IIRC Compiz isn't known to behave well enough in KDE
<shujin> Thanks, I only ask because the Edu team seems a little swamped
<Tm_T> shujin: all help is welcome in both groups :)
<coggz> yes, compiz crashes very often under KDE
<jussi01> < dennisv> QUESTION: Why is krita not installed by default in gutsy?
<Tm_T> shujin: and I would love to help with it
<Tm_T> dennisv: it isn't? I thought it is
<Riddell> dennisv: space on the CD.  I love krita but it's a large app and the CD only provides a basic desktop
<jussi01> Tm_T: no, it isnt. I would imagine because of size constraints.
<Tm_T> ah, true
<jussi01> < amachu> QUESTION: If KDE4 is not going to happen with Hardy, will upgrade be suuported for those who have installed recent Kubuntu release specific to KDE4?
<Tm_T> I saw some list where it was included, too much reading lately to make me fuzz
<Riddell> shujin: most questions about KDEedu apps should go to the kde edu developers, we mostly just package their software
<Tm_T> amachu: it does have KDE4 already
<jussi01> QUESTION: why does is seem like gnome is the more officially liked over KDE, when to me (coming from windows) KDE feels a lot more easy to migrate to thatn gnome.?
<emilsedgh> shujin: #kde-edu is their channel
<Tm_T> amachu: and we (atleast apachelogger?) is working for assistants to make moving from 3 to 4 easy and painless
<shujin> Thanks
<Riddell> _Brandon_: ark supports many more formats than ioslaves
<jussi01> Tm_T: last question was from buks
<amachu> Tm_T: Ok, Thank You
<Tm_T> buks: GNOME has more resources in some way yes, because it has their release schedule sync with Ubuntu and other technical reasons
<jussi01> < oloughlin75> QUESTION: Is 8.04 coming in two flavours? A kde3 and a kde4 as different install discs? Or will kde3 be default with the option to install kde4 or vice versa?
<Tm_T> BUT many of those developers also help with K side, so, it's not they against us but we together hopefully
<Riddell> "KDE4 is not going to happen"?  KDE 4 will be on our CDs and on shipit and be the exciting new feature.  the only thing it won't be is commercially supported.
<emilsedgh> QUESTION: any plan to support bulletproof X for kdm?
<Tm_T> oloughlin75: IIRC both install options will be there
<Tm_T> emilsedgh: yes
<jussi01> emilsedgh: questions in #ubuntu-classroom-chat, then they will be relayed in here in turn. thanks :)
<buks> Tm_T: I guess it also boils down to personal choice. I like KDE and will advocate it. A work friend (windows user) of mine commented that gnome looks like a toy with its big fonts and big windows. kde looks more slick
<Tm_T> buks: true :)
<Tm_T> buks: best we can do to fix this issue is to make Kubuntu rock most
<jussi01>  < sahin_w> QUESTION: KDE4 will be preconfigured/customized for Hardy? For example: knetworkmanager start at login time... etc.
<Riddell> oloughlin75: yes there will be two disks, so you can chose the one that suits you.  New and exciting or Nice and stable.
<Tm_T> sahin_w: should be Kubuntified
<buks> Tm_T: hell, I seem to be using KDE3, and thought it was KDE4, and I still thinks it rocks :)
<Tm_T> buks: they do both ;)
<jussi01> < sahin_w> QUESTION: Is there any plan to automatic codec install for Kaffeine just like totem?
<Tm_T> Riddell: see sahin_w question, didn't we have that in Kaffeine?
 * Tm_T has been way too long without "Kubuntu desktop"
<regel> I thought Kaffeine playd all kind of stuff out of the box
<regel> I didn't have to install anything to get DVB working
<jussi01> Tm_T: Its in amarok, and so I would imaginf kaffeine
<Riddell> sahin_w: yes, we added that recently to kaffine.  it needs a bit more testing but it should work
<jussi01> < nemphis> QUESTION: How is the progress at hardy catchup? Will kubuntu 8.04 have the same features as ubuntu 8.04?
<sahin_w> Riddell: Thanks.
<Tm_T> nemphis: lot to do, lot have been done, I afraid we don't get all they have but close I hope
<Tm_T> all help is welcome ;)
<Riddell> nemphis: two desktops will never have the exact same features but all of KubuntuHardyCatchup is implemented pending bugs and testing
<jussi01> < sahin_w> QUESTION: I saw the proposed defult ubuntu wallpaper. Why don't you create a blue one for Kubunu too? I mean: the same wallpaper with blue colors.
<Tm_T> Riddell: installers does vary some features yet, right? ;)
<Riddell> so we have bullet proof X (as much as ubuntu desktop does), automatic printer setup, a simple compiz setup tool, codec install, brightness control, xdg home dirs and user hard disk mounting
<Riddell> wow, what a rocking community of developers we have
<Tm_T> good :))
 * jussi01 hugs Riddell 
<Tm_T> Riddell: I'll catch those and update wikipage, ok?
<Riddell> ok
<Tm_T> sahin_w: we are not "blue ubuntu" ;) and also kwwii is the man you should bug when talking about artwork, he's our painter
<Riddell> sahin_w: we take our artwork inspiration from KDE, since the aim of Kubuntu is to be the best KDE distro
<jussi01> < dasKreech> QUESTION: Will KDE4 on hardy be pure or will you install KDE3 to make life easy?
<Tm_T> or I could say that, "we can be better than just a blue brother of that brown one"
<Tm_T> dasKreech: there will be some apps from KDE3 because those are not ready for serious use yet, kdepim for example
<sahin_w> Tm_T: Well, good answer!
<Tm_T> dasKreech: sufficient answer?
<jussi01> < dasKreech> QUESTION: will there be a kubuntu3-desktop or a Kubuntu4-desktop ?
<Tm_T> kubuntu-desktop and kubuntu-kde4-desktop if I remember these things right
<jussi01> < polopolo> QUESTION: If I want something added at a package of kubuntu, who do I need to contact?
<dasKreech> Tm_T: yup
<Tm_T> polopolo: package maintainer and/or kubuntu-devel mailinglist are good startingpoints I believe
<polopolo> Tm_T: ok, I should start with it, thank you
<Tm_T> polopolo: thank to you :)
<TuxCrafter> dholbach: i just read the transcript of packaging 101 and i have some questions
<Tm_T> TuxCrafter: not here?
<TuxCrafter> Tm_T:
<TuxCrafter> is the session starting?
<Tm_T> going
<TuxCrafter> ok np
<TuxCrafter> moving to chat
<Tm_T> thanks :)
<jussi01> < talavis> QUESTION: which Kubuntu CD (KDE 3 or 4?) will be available through shipit?
<Riddell> polopolo: #kubuntu-devel is often more active than the mailing list
<Tm_T> talavis: KDE3
<Riddell> no
<Riddell> KDE 4
<Tm_T> awww
<Tm_T> shame on me
<jussi01> < shujin> QUESTION: Is there a KDE4 replacement for Kiosktool?
<Tm_T> polopolo: yes, irc is always good for poking :))
<Riddell> not 100% final that, but we like to ship new and exciting things
<polopolo> Riddel: ok Tm_T: ok, I gonna go there
 * dasKreech phears the stick
<Tm_T> shujin: umm, I haven't seen yet one
<apache|mobile> shujin: no, however there is quite some demand for it from what I noticed
<shujin> I can't move forward without it
<dasKreech> shujin: Tentaive for KDE4.1 You can sit out till then
<Tm_T> shujin: poke upstream (related KDE developers) :)
<dasKreech> It's like 4 months away
<Tm_T> yup
<Tm_T> KDE 4.0 is bit bare still, so I give most of my hopes for 4.1 and 4.2
<jussi01>  < emilsedgh> QUESTION: isnt there any plan for something like GTK-Qt engine so KDE3 apps look like KDE4 ones?
<Tm_T> emilsedgh: not that I know
<Tm_T> correct me if I'm wrong
<emilsedgh> so please include GTK-KDE4
<Tm_T> jussi01: next?
<jussi01>  < emilsedgh> QUESTION: any plan for nightly builds of KDE4?
<Tm_T> emilsedgh: not that I know, not much use unless you do with trunk and that can be adventurous as it needs a MUCH work and packages done which can't be used with 4.0 releases IIRC
<Riddell> emilsedgh: there is this, I've no idea if it does anything currently http://cgit.freedesktop.org/~ruphy/gtk-qt4-engine/
<jussi01> < polopolo> QUESTION: Is there a list of plans to be included in kubuntu hardy? and shows it wich is done and wich not?
<Riddell> emilsedgh: it would be cool though, helpers welcome
<Tm_T> emilsedgh: yes please help! ;)
<emilsedgh> its for GTK->Qt4, i asked for something like Qt3->Qt4, btw please include it
<nosrednaekim> polopolo Â» https://wiki.kubuntu.org/Kubuntu/Todo
<Riddell> emilsedgh: ah right, I misread the question
<jussi01> < shujin> QUESTION: Any Thin Client specific improvments planned for this release?
<polopolo> nosrednaekim: thank you
<Tm_T> shujin: not that I know outside of "HardyCatchup"
<Riddell> shujin: most of the thin client stuff is done by edubuntu, and KDE should just work on top of it
<jussi01> < oloughlin75> QUESTION: Is the KDE3 flvaor of 8.04 going to focus as strongly on visual appeal as the KDE4 version?
<Tm_T> oloughlin75: not more than normally, usability and reliability should be main targets
<jussi01> < fredreichbier> QUESTION: Is it planned to tidy up and reorganise the KDE control center? I didn't like it in KDE 3.5 ;-)
<Tm_T> fredreichbier: Kcontrol doesn't have active maintainers, so no, but that's the point of SystemSettings
<Tm_T> (and IMO it's tidy already)
<jussi01> < enaut> QUESTION: I have got a more general question: What are the similarities and where are the differences between Ubuntu and Kubuntu?
<Tm_T> similarities: we have pretty much same dream (and same base): to provide the best operating system to be available to everyone
<Tm_T> differences, well, we have just bit specialised to KDE, can't say about differences more in general
<jussi01> < buks> QUESTION: a bit off topic, why is the .jigdo template for the daily DVD so huge (600MB) whereas the template for the CD is so small?
<Tm_T> differences lie in differences of GNOME and KDE mostly, I hope :p
<enaut> ok
<Tm_T> I believe that Ubuntu and Kubuntu are the same, just bit different paint and chassis
<toma> shujin, apache|mobile: i think i saw some porting effort for kiosktool
<Tm_T> one more question?
<jussi01> < emilsedgh> QUESTION: any plan for some public advertisement in near (2-3 years) future?
<Tm_T> time is up
<jussi01> Tm_T: you have 2 mins
<Riddell> only if someone pays for it :)
<Tm_T> emilsedgh: oh I hope so! that is discussed in marketing team often and well, so let's say "it's planned" but as Riddell said, money...
<Riddell> so folks, Kubuntu has a great community and we want you to join it
<nosrednaekim> and we have free beer....
<Riddell> we need people to help with packaging, bugs, CD testing, coding etc
<nosrednaekim> but you have to code for it :)
<meven> QUESTION: kubuntu will be present at FOSDEM ?
<jussi01> Thanks for coming everyone!!
<Tm_T> all help is welcome, even if it's only user reports and testing, so there's no much step from every day user
<emilsedgh> if you needed help on web stuff, count on me
<Riddell> do drop in on #kubuntu-devel and start your free software helping
<Riddell> meven: yes, I'll be there.  I'll be giving a packaging tutorial
<Tm_T> thank you all for Kood questions :))
<nareshov_> :D
<nosrednaekim> thanks Tm_T
<enaut> thank you for your answers
<meven> Riddell: see you there then ;)
<buks> thanx Tm_T, kubuntu rocks!
<polopolo> and what's next?
<luisbg> Ubuntu Derivatives Team
<Tm_T> I'm sitting here for questions related to Kubuntu as derivative so leave now or I fry your brains
 * Tm_T hides
 * polopolo wanna know what that is
 * janimo is Jani Monoses, here for the derivatives meeting
<pixelpapst> by Luis de Bethencourt GuimerÃ¡
<pixelpapst> is he here yet ?
<luisbg> pixelpapst, yes
<Tm_T> luisbg: are you here yet?
<pixelpapst> erm, yes
<luisbg> :)
<luisbg> ok
<pixelpapst> should have guessed from the nick :)
<luisbg> are the derivatives representants in the room?
 * thoreauputic is Peter Garrett, here for derivatives
<luisbg> janimo? Tm_T ? joejaxx ? AstralJava ? any more?
 * Tm_T is the Overseer
 * joejaxx is Joe Jaxx
<thoreauputic> to talk about INX
 * AstralJava is Janne Jokitalo, here to talk about Ubuntu Studio and Fluxbuntu, if need be
<nosrednaekim> nosrednaekim  here for kubuntu
<luisbg> thoreauputic, nice!
<janimo> luisbg: here
<luisbg> ok...
<thoreauputic> luisbg: hello :)
<luisbg> let's start with Xubuntu
<luisbg> janimo, presents us Xubuntu :)
<janimo> huh :) ? it's a trap!
<joejaxx> its a trap for me
<joejaxx> lol
<janimo> I was supposed to prezent kiwi :)
<luisbg> ooops, mind glitch
<janimo> no really, what should I talk about re Xubuntu?
 * pixelpapst is here for Kairos, which is still in its infancy, so not much to present from me
<luisbg> I ment Kiwi
<luisbg> LOL
<janimo> OK, I can talk about Xubuntu too if there's interest it;s just that I wasn;t prepared for that, and I do not know what the audience knows abiut it aready
<janimo> Ok so about Kiwi Linux, here it comes
<luisbg> :) go ahead
<joejaxx> :)
<janimo> KiwiLinux is a derivative of the Ubuntu/GNOME 386 LiveCD. That is the only available release.
<Grazieno> I present Linux Preview (brazil)
<janimo> It was first released one year ago and its main purpose is providing an even easier experience for newbies than Ubuntu.
<TuxCrafter> hello everybody is the new session startign
<TuxCrafter> hi joejaxx
<janimo> For now its target are Romanian and Hungarian users but English is also supported.
<janimo> The even easier experience comes from preinstalling stuff that either does not fit, not polished enough
<janimo>  or which is illegal in the US but fine in Romania (and most of the rest of the world for that matter).
<janimo> So the codecs, some ADSL modem firmware, pppoeconf GUI and ndisgtk and a slightly different package selection.
<janimo> The changes are kept at a minimum, both because we do not have many resources to spend and it would be pointless to diverge too much.
<thoreauputic> janimo: with a name like Kiwi I expected New Zealand ;)
<janimo> thoreauputic: yeah, most people do that, it was not the most fortunate choice of name :)
<thoreauputic> :)
<buks> janimo: that is what i thought to
<janimo> well it can be used in NZ, it has English support
<luisbg> let's present all the derivatives in the room
<luisbg> before we start with questions
<luisbg> janimo, let us know when the presentation is finished
<janimo> ok a few more lines then
<luisbg> sure
<janimo> The same package archives are used and an extra one at kiwilinux.org and the release schedule closely follows Ubuntu's.
<janimo> Two important features make this a very close derivative:
<janimo> 1) Since the archives are the same and only a handful of packages modified slightly it is easy to switch back to Ubuntu or vice versa.
<janimo> 2) Once installed the system is not very to what Ubuntu would lok like after 30-60 minutes of tweaking a base install and getting the missing stuff.
<janimo> So it is an Ubuntu that has many of the bits commercial distros like Xandros and Linspire have (codecs & stuff) but also remaining plain Ubuntu. Also unlike Mint it does keep the changes at minimum.
<janimo> It eases the first time experience for total newbies and for experienced users saves some time when installing on friends machines.
<janimo> Another goal is getting local people involved, who may contribute easier when perosnally knwing the devs (we have some contributors form the local LUG already)
<janimo> as a first step toward becoming Ubuntu contributirs
<thoreauputic> home page URL?
<janimo> that's it in short
<janimo> kiwilinux.org/en
<luisbg> AstralJava, want to present Ubuntu Studio?
<AstralJava> Sure thing.
<luisbg> janimo, thanks! :)
<AstralJava> Ubuntu Studio is a multimedia creation flavor of Ubuntu, aimed at people wishing to produce audio, video or graphics.
<AstralJava> We have attempted to gather up the best open source applications and tie them together, so that users don't have to spend time tweaking their systems, but can concentrate on using it instead.
<AstralJava> Highlighting some applications from each areas: Ardour2 & Audacity for professional audio recording, Gimp & Inkscape & Blender for high quality graphics editing, and Open Movie Editor & Kino for easy video creation.
<pixelpapst> janimo, LP still lists kiwi.startx.ro as HP - you might wanna submit a ticket about that
<AstralJava> For best possible resource utilization, we are shipping the real time kernel by default.
<AstralJava> Ubuntu Studio has an active userbase on channel #ubuntustudio and on ubuntu-studio-users@lists.ubuntu.com, but you can find lots of documentation and other support means at http://ubuntustudio.org or https://wiki.ubuntu.com/UbuntuStudio/.
<janimo> pixelpapst: yeah, thanks. Although that is redirected now to the new name
<pixelpapst> k
<AstralJava> To keep things short, that's it, let's talk more through questions.
<luisbg> reminder:: questions will go after the presentations
<luisbg> thanks AstralJava
<TeTeT> AstralJava: is there a non linear video editor included that can load and save HD video?
<luisbg> I believe Tm_T doesn't need to present Kubuntu
<luisbg> he already did an hour a go :P
<luisbg> thoreauputic, your turn!
<Tm_T> luisbg: thanks :)
<thoreauputic> INX is a small live CD designed to work without X ( "INX IS Not X")
<thoreauputic> You can have a look at http://inx.maincontent.net . Ihave set up a "slideshow" showing some of the apps and how the menus look at http://inx.maincontent.net/album/1.png.html
<thoreauputic> The idea is to give people an easy introduction to the command line, while simultaneously giving them a workable live distro that runs without X and showing some of the cool stuff you can do in tty1-6  / virtual terminal
<thoreauputic> I also have written an installer script to install it to a hard drive, but it is fairly primitive - assumes a single hard drive, makes a swap and / partition only and so on...
<luisbg> joejaxx, want to present fluxbuntu?
<joejaxx> sure
<joejaxx> :)
<joejaxx> Fluxbuntu is a LPAE-standard compliant, Ubuntu-based derivative.
<joejaxx> It is targeted towards older pcs, mobile and embedded devices
<joejaxx> We use the Ubuntu archive as a basis for the derivative while keeping an audited seed list which is different then Ubuntu
<joejaxx> We include lightweight applications along with a lightweight desktop
<joejaxx> To keep resource usage down to a minimum while giving the user a feeling of usability
<joejaxx> The website is http://fluxbuntu.org/
 * joejaxx will leave the rest for the q&a session later :)
<luisbg> any other derivatives pending for presentation?
<luisbg> silence == NULL
<joejaxx> :)
<luisbg> OK...
<pixelpapst> luisbg: i could say a few words
<luisbg> pixelpapst, go ahead
<pixelpapst> ok
<pixelpapst> Kairos is a project i started ~3 years ago
<pixelpapst> as a Debian Sarge deriv
<pixelpapst> a kind of in-house distri tuned to the needs of multiple-users-per-workstation
<joejaxx> :)
<pixelpapst> over time, we pulled in a lot of backports, multimedia stuff etc.
<thoreauputic> pixelpapst: URL ?
<pixelpapst> to reduce the diff to upstream, we now choose a new upstream
<pixelpapst> https://projects.yomu.de/kairos/
<thoreauputic> thanks
<pixelpapst> although that site doesn't have much info yet
<luisbg> OK... last but not least...
<pixelpapst> we have most tickets internally until now
<pixelpapst> but I want to open everything up, even if it takes a little while :)
<pixelpapst> luisbg: sorry, go on
<luisbg> the Ubuntu Derivatives Team
<luisbg> the goal of the team is unite to first:
<luisbg> help each other since we are all going to hit the same problems while derivating from Ubuntu
<luisbg> second: find very common problems while deriving Ubuntu and lettting Ubuntu know about them as a whole group
<luisbg> third: extend the power of Ubuntu by making even better derivatives (specially purposeful ones :P)
<luisbg> that's the Ubuntu Derivatives Team in a nutshell
<luisbg> join in #ubuntu-derivate, or the mailing list (in ubuntu mail server) any time if you want to join
<luisbg> launchpad team and wiki also help a lot ;)
<luisbg> and now... the dreadful Q&A
<luisbg> <nosrednaekim> QUESTION: so Kiwi is like Mint?
<luisbg> and try to say the nick of the representant of the specific derivative the question is about
<luisbg> janimo, ^
<janimo> yep
<janimo> no, as I said it shares some of Mints goals
<janimo> but tries to achieve the major ones with minimal work
<janimo> most people want the out of the box multimedia experience
<janimo> and what I do is have all those installed.
<janimo> Mint has much more ambitions, it's a whoe distro+community in itslef
<janimo> I try to remain 99% ubuntu (hence only a few packages are changed)
<janimo> Kiwi artwork is similarly almost identical
<janimo> so people using Ubuntu are familar with Kiwi and vice versa
<nosrednaekim> janimo Â» ok, great. thanks.... think you'll have a kiwi instead of heron?;)
<janimo> the mai reason for it was not creating a distro
<luisbg> <amachu> QUESTION: GNewSense is a Ubuntu Derivative, obviously. But how does Ubuntu actually look at it?
<janimo> that was a necessary means of getting even more nebiews to  free software
<janimo> nosrednaekim: we'll keep almost everything as in Ubuntu including the heron :)
<luisbg> <buks> QUESTION: so fluxbuntu is a lot like OpenGUE, but more focussed on hardware compatibility?
<luisbg> joejaxx, ^
<Riddell> amachu: ubuntu works with GNewSense through gobuntu, which is intended as a base for GNewSense and other pure-free distros
<luisbg> pixelpapst, make your comment
<pixelpapst> ok
<pixelpapst> i'm really interested in code sharing
<joejaxx> i am not familiar enough with OpenGUE to comment unfortunately :\
<pixelpapst> not so much came out of the HCT idea
<luisbg> <pixelpapst> QUESTION: jamino: what do you use for your repository ? reprepro ? dak ?
<pixelpapst> but dpkg upstream is discussion something similar at the moment
<luisbg> janimo, ^
<janimo> I use reprepro on my local bix
<janimo> then rsync that to kiwilinux.org
<pixelpapst> replacing source packages with git tarballs
<janimo> pretty lame I guess :)
<pixelpapst> i'll post a thread URL in a sec
<luisbg> <buks> QUESTION: AstralJava: is Ubuntu studio KDE or Gnome based, and does it matter in a derivative?
<janimo> I will consider a more mature repo with dput uploads in the future
<pixelpapst> janimo: cool, like us :)
<AstralJava> buks: It is Gnome-based, and it matters in creating a unified feel to all apps etc.
<janimo> pixelpapst: :)
<buks> AstralJava: Thanx
<AstralJava> :)
<luisbg> <buks> QUESTION: AstralJava: Does Ubuntu Studio have procedure docs which exaplains how to get certain tasks done which might involve using many of the apps. like to make a home dvd you need to do X Y Z, using apps A B C
<pixelpapst> git source packages discussion: http://lists.debian.org/debian-dpkg/2008/02/msg00007.html and http://lists.debian.org/debian-dpkg/2008/02/msg00012.html
<InsClusoe> For everyone interested in GNewSense, it's called Gobuntu after its 'ubuntufication'.  7.10 is currently available and for more info, check out https://wiki.ubuntu.com/Gobuntu?highlight=%28Gobuntu%29
<AstralJava> buks: Not at the moment, no, but feel free to browse through all current docs at http://ubuntustudio.org and https://help.ubuntu.com/community/UbuntuStudio, and contribute if something's missing.
<thoreauputic> InsClusoe: no, GnewSense is separate if I understand it correctly... ?
<joejaxx> GNewSense is not the same thing
<thoreauputic> right
<joejaxx> it is separate :)
<thoreauputic> Gnewsense is purer than pure ;)
<luisbg> thoreauputic, can you explain more in detail?
<luisbg> the differences
<thoreauputic> luisbg: I'm not really involved in Gnewsense directly, but gnewsense is trying to be completely Free in the FSF sense
<InsClusoe> 1.  Gnewsense is based on Ubuntu 6.06 (whereas Gobuntu is based on the latest version of Ubuntu). It is hoped that in the future the Gnewsense project will wish to base their derivative off Gobuntu or contribute directly to Gobuntu.
<InsClusoe> 2.  Gnewsense uses a separate repository, while Gobuntu uses the main Ubuntu repository.
<InsClusoe> Source of the above info: https://wiki.ubuntu.com/Gobuntu/Policies?highlight=%28Gobuntu%29
<luisbg> <eddyMul> QUESTION: is there a guide to making my own ubuntu-derivative? (just a live-cd w/ my set of packages)
<joejaxx> Gnewsense also does audits
<buks> AstralJava: thanx
<pixelpapst> About Gobunut: this guy said it all: http://geekz.co.uk/lovesraymond/archive/taking-freedom-further :-)
<thoreauputic> ompaul ( Paul O'Malley is probably one of the people to ping about GnewSense
<thoreauputic> and bbrazil
<joejaxx> Yes there is a guide to customizing the livecd
<joejaxx> LINK: https://help.ubuntu.com/community/LiveCDCustomization
<luisbg> <_MMA_> QUESTION: Will KiwiLinux contribute to Ubuntu package-wise? ie: will KiwiLinux fix bugs in Ubuntu to better KiwiLinux by proxy?
<joejaxx> eddyMul: i hope that link helps you :)
<janimo> sure we contribute anything that is appropriate
<InsClusoe> Gobuntu says that all content that comes with the distro will obey FSF's rules.
<janimo> mostly bugs found while testing developing that are related to Ubuntu (one was last year when swap was not activated on the liveCD)
<luisbg> QUESTION: joejaxx, what's the difference between fluxbuntu and Xubuntu?
<joejaxx> luisbg: lol
<joejaxx> its a trap!
<joejaxx> ok but seriously
<janimo> if the user knows the bug is generic Ubuntu ist's recommended to file against ubuntu
<pixelpapst> I don't think there is much difference in vision any more between gobuntu and gnewsense
<janimo> for nonenglish speakers we have the kiwi bugsection in LP but it is not really used
<janimo> newbies use forums mostly
<luisbg> <eddyMul> QUESTION: follow-up: (maybe dumb): can you give me pointers about costumizing the pre-seed? (in case I ran out of blank CDs, but network bandwidth is abundant...)
<joejaxx> one of the main differences between fluxbuntu and xubuntu i guess i would say would be the way we form the distro
<TuxCrafter> joejaxx: and a lot more
<thoreauputic> pixelpapst: it appears from the Gnewsense mailing list that a lot of effort is being put into auditing licenses fro Freedom
<TuxCrafter> vision mission
<janimo> joejaxx: also the choise of packages is a major difference
<joejaxx> with fluxbuntu we do application benchmarking and have a audit process
<joejaxx> janimo: yeah
<joejaxx> and package choice
<pixelpapst> thoreauputic: cool. we can all benefit from that
<joejaxx> we are also not using the same base
<thoreauputic> pixelpapst: indeed :)
<joejaxx> eddyMul: there are a list of preseeds i do not have the url handy but i can find it and give it to you :)
<luisbg> <nosrednaekim> THANKS: to joejaxx for making such a fast distro.... saved many old laptops :)
<joejaxx> we are also always finding ways to improve fluxbuntu resource wise for example i patched Xorg so that we could have KDrive but that did not make it in for hardy
<joejaxx> nosrednaekim: :)
<thoreauputic> joejaxx: yes, fluxbuntu is a nice effort! ( I have it here on a different partition)
<luisbg> <TuxCrafter> QUESTION: i want to do a debootstrap and then install my list of packages and apply my list of patches and run my list of scripts and make ubuntu a ubuntu spin of this that is installable with via the usb network alternate installer
<luisbg> anybody brave enough to reply to that? :P
<thoreauputic> heh
<tsmithe> luisbg, well you seem to have it pretty much figured out...
<luisbg> <joejaxx> QUESTION: When is Fluxbuntu coming out ? :)
<luisbg> and yes... he asked himself
<luisbg> it is permitted :P
<joejaxx> :P
<luisbg> tsmithe, hey... haven't seen you around
<thoreauputic> TuxCrafter: I made INX from a debootstrap chroot - but explaining how is a bit too long for IRC :)
<joejaxx> thoreauputic: yeah that is an off classroom discussion :P
<thoreauputic> :)
<joejaxx> right now we have been publishing test releases
<luisbg> <_MMA_> Really, anyone just looking to roll their own disk should look at http://reconstructor.aperantis.com.
<joejaxx> and getting testing in
<TuxCrafter> thoreauputic: if i can have a list of website resources that would be great
<joejaxx> We are not releasing anything for hardy but Fluxbuntu should be released hardy+1 and very polished
<joejaxx> :)
<thoreauputic> TuxCrafter: there is a wiki page about making Ubuntu derivatives IIRC
<joejaxx> we are taking the time for hardy and hardy+1 development to really polish the distro
<joejaxx> and fix things which users have provided us feedback with
<luisbg> <TuxCrafter> QUESTION: you guys now the network alternate installer and that it give you an option list with all the ubuntu spins>? how can you get your spin in the list?
<joejaxx> TuxCrafter: you would have to file a bug against tasksel but i do not know if it would be accepted
<luisbg> TuxCrafter, that sounds mainstream and not derivative
<joejaxx> yeah
 * luisbg wants more questions
<luisbg> or should we start closing this?
<joejaxx> we have 11 more minutes
<joejaxx> we can take more questions if there are any :)
<luisbg> if there are any
<luisbg> now or never
<joejaxx> well yeah :)
<luisbg> <thoreauputic> QUESTION: Is anyone interested in fixing my bash scripts and helping with the INX installer ? *grin*
<joejaxx> thoreauputic: i will :)
<joejaxx> thoreauputic: just let me know
<thoreauputic> joejaxx: cool :)
<pixelpapst> something i'm investigating: DeBaBaRe tools http://my.opera.com/atomo64/blog/howto-create-and-maintain-a-repository-using-reprepro-and-debabaretools
<mirrado> <tuxCrafter> You should look at Debian make-live script
<AstralJava> thoreauputic: Sure thing, I need practice with *sh scripting. :)
<thoreauputic> thanks :)
<pixelpapst> yeay, debian make-live kicks ass (although it was a bit tricky to use with sarge)
<AstralJava> thoreauputic: Got a contact address/info handy?
<luisbg> Ubuntu Studio needs people documenting... any help?
<luisbg> <TuxCrafter> QUESTION: what do you guys do if you rebuild a package with different settings than in universe
<mirrado> <TuxCrafter> I have a script on LP that makes part of that job, but on top of ubuntu live CD
<joejaxx> oh
<joejaxx> hmm
<thoreauputic> AstralJava:  you can mail me at  inx-one@optusnet.com.au
<joejaxx> that would be hard to do without having a repo and putting a priority on it
<thoreauputic> anyone elese interested may do so too
<joejaxx> otherwise you never know when upstream is going to do an update
<pixelpapst> TuxCrafter: set e.g. DEB_BUILD_OPTIONS, dch, debuild, and push to repository
<luisbg> <TuxCrafter> QUESTION: how can we better work together with other distributions like fedora and gentoo
<luisbg> HARD one
<luisbg> they have different packaging systems so that's complicated
<joejaxx> well
<nosrednaekim> I can aswer that.....
<joejaxx> the thing is
<luisbg> nosrednaekim, go ahead
<joejaxx> ok
<janimo> TuxCrafter: collaborating on speicifc issues would be more feasible than such generic and vague way
<nosrednaekim> With kubuntu, we are working with other distros not on packaging so much as apps and how to properly configure/build/customize KDE4
<janimo> for instance in the case of system=config-printer we collaborate with the fedora developer
<nosrednaekim> or at least, we are trying to :)
<joejaxx> TuxCrafter: they also look at LP believe it or not, this came up on -qa
<AstralJava> thoreauputic: Just did. :)
<nosrednaekim> so mostly we cooperate with appsand configuration, not packages
<pixelpapst> QUESTION: do you guys keep disto-specific changes in version control ? if so, which VCS ?
<thoreauputic> AstralJava: :))
<joejaxx> All of fluxbuntu's changes are on launchpad (which of course is bzr :)  )
<AstralJava> pixelpapst: Ubuntu Studio uses LP together with bzr heavily.
<joejaxx> same
<luisbg> last 5 minutes
<pixelpapst> what about packages that are not in BZR in debianb and ubuntu ?
<joejaxx> pixelpapst: we try to have them in there
<pixelpapst> cool
<joejaxx> ubuntu studio is in mainline ubuntu so that problem is not there much
<luisbg> <thoreauputic> QUESTIONL INX is on Launchpad, but I have no idea about how to use it effectively - any help appreciated :)
<joejaxx> but with fluxbuntu we try to keep everything in bzr
<AstralJava> pixelpapst: Only some that are prohibited as of licence disagreements or other such problems, are kept away.
<pixelpapst> joejaxx, AstralJava : could you each point me to an example branch ?
<joejaxx> thoreauputic: i can also help in that area :)
<joejaxx> pixelpapst: sure
<luisbg> joejaxx is the man
<thoreauputic> joejaxx: do you have an email address on launchpad I cn use to contact you, or something?
<AstralJava> pixelpapst: https://code.edge.launchpad.net/~ubuntustudio-dev/
<joejaxx> pixelpapst: for example all of fluxbuntu's artwork is here https://code.edge.launchpad.net/~fluxbuntu-dev/fluxbuntu-project/fluxbuntu-design
<joejaxx> thoreauputic: jjacksoniv@fluxbuntu.org
<thoreauputic> joejaxx: thanks again :)
<luisbg> <TuxCrafter> QUESTION: how do you guys feel about packages that have far more dependency's as the debian counterparts?
<joejaxx> thoreauputic: you are most welcome
<pixelpapst> cool, will have a look around, thanks guys
<joejaxx> TuxCrafter: with fluxbuntu this has become an issue
<TuxCrafter> i wanted to install ubuntu-minimal and openoffice came alonge
<joejaxx> TuxCrafter: we are going to try and fix this in mainline ubuntu and/or create meta packages to replace the ones that pull excessive depends
<joejaxx> alright
<janimo> ok kiwilinux orl fixed in LP, thanks to the one noticing it
<janimo> url
<joejaxx> janimo: :)
<TuxCrafter> joejaxx: so do a per package based investicion
<joejaxx> TuxCrafter: yeah
<dholbach> thanks everybody for an AWESOME session about Derivatives
<luisbg> It's time for dholbach and his "Debdiffs And How To Get Them Submitted" session
<joejaxx> ;)
<AstralJava> Cheers.  :)
<joejaxx> right on time :D
<dholbach> you guys ROCK :)
<janimo> bye all, thanks
<luisbg> thanks everybody for joining and helping in the session! :)
<nosrednaekim> se ya guy
<dholbach> for those of you interested in derivatives make sure you join this mailing list: https://lists.ubuntu.com/mailman/listinfo/ubuntu-derivatives
<nosrednaekim> *guys.... I can't type today
<pixelpapst> thanks eveybody, cool to meet you
<luisbg> the floor is of dholbach now ;)
<dholbach> and help out where you can :)
<thoreauputic> dholbach: thank you
<dholbach> OK, let's get started on debdiffs
<dholbach> Debdiffs are the preferred form of submitting patches, developers who sponsor your uploads will be happy if you stick to that form :)
<dholbach> if you have questions or I'm too quick, please don't hesitate to ask your "QUESTION: ..." on #ubuntu-classroom-chat :-)
<dholbach> ok... we need just a bit of preparation for this session
<dholbach> can you all please add something similar to these two lines to your ~/.bashrc (or .zshrc depending on which shell you use):
<dholbach> export DEBFULLNAME='Daniel Holbach'
<dholbach> export DEBEMAIL='daniel.holbach@ubuntu.com'
<dholbach> I was informed that just setting DEBEMAIL to "your name <your.name@somedomain.com>" will work too, but I never tried :)
<dholbach> once you've done that, please either restart your terminal or run   source ~/.bashrc
<dholbach> everybody all set?
<dholbach> give me your +1 if you are
 * InsClusoe nods his head.
<InsClusoe> +1
<dholbach> that's one - who's here for the session today? :)
<jcastro> me!
<dholbach> oh my... everybody's sleeping already :)
<ninkendo> me!
<WhiteEagle> me ;)
<joejaxx> i am here still :D
<dustinlange> +1
<eddyMul> me
<dholbach> excellent
<dholbach> DEBFULLNAME and DEBEMAIL are used by a set of packaging tools and will make your life much much easier
<dholbach> next we'll have to install a few tools:    sudo apt-get install devscripts build-essential wget fakeroot cdbs patchutils debhelper
<dholbach> devscripts contain a bunch of tools for debian/ubuntu packages
<dholbach> build-essential is a metapackage which pulls in gcc, make and the like
<dholbach> wget is used for downloading stuff from the net
<dholbach> fakeroot is used to emulate "root privileges" during the build
<dholbach> cdbs is used by the package we're about to patch (a set of makefile snippets to make writing debian/rules files easier)
<dholbach> patchutils and debhelper are needed too
<dholbach> OK... we're all in bug fixing mode
<TuxCrafter> +1
<dholbach> let's suppose we got a bug report saying that the xicc package has 'colour' instead of 'color' in its description
<dholbach> of course the bug report would be ridiculous and we'd close it
<dholbach> but just assume it for the sake of getting out debdiff together :)
<dholbach> first we'd verify if this really is the case
<dholbach>    apt-cache show xicc
<dholbach> shows it's really "colour", so we'll "fix" that
<dholbach> oh... also make sure you have a    deb-src    line in your /etc/apt/sources.list
<dholbach> for gutsy that'd be:
<dholbach> deb-src http://archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
<dholbach> replace gutsy with whatever release you're using
<dholbach> then run:
<dholbach>   sudo apt-get update
<dholbach> next we'll get the source package for xicc
<dholbach>    apt-get source xicc
<dholbach> it downloaded the following files for us: xicc_0.2-2.diff.gz  xicc_0.2-2.dsc  xicc_0.2.orig.tar.gz
<dholbach> the .orig.tar.gz file is the tarball the xicc upstream authors released on their website as-is
<dholbach> the .diff.gz is the compressed changes that are necessary to make xicc build in a debian build environment
<dholbach> the .dsc file is a description file containing md5sums and the like
<dholbach> "apt-get source" used "dpkg-source -x" internally to extract the tarball and apply the diff.gz changes to it
<dholbach>   cd xicc-0.2
<dholbach>   cat debian/control
<dholbach> the debian/control file contains information about the source package (which packages are necessary to make it build, who is the maintainer, etc.) and the binary package (the one my mom would install)
<dholbach> you can see 'colour' in the binary package description
<dholbach> let's change colour to color then
<dholbach>   sed -i 's/colour/color/g' debian/control
<InsClusoe> +1
<dholbach> did everybody get it working?
<jcastro> yep
<ninkendo> yep
<Yasumoto> +1
<dholbach> brilliant
<joumetal> +1
<barcc> +1
<dholbach> next we'll write a changelog entry to document what we've done - this is essential to what you do when you change a package
<TuxCrafter> +1
<dholbach> in the Ubuntu world we maintain packages as a team, so if you change a package somebody else might come up half a year later and wonder WHY you did those changes :)
<dholbach> so better get it right and document it in the first plafce
<dholbach> place
<dholbach> please run
<dholbach>   dch -i
<dholbach> this is a nifty tool from the devscripts package that makes use of DEBEMAIL and DEBFULLNAME we just set
<dholbach> the first line contains the following items:
<dholbach> <source package name> (<version string>)  <release of Ubuntu you upload to>; <urgency>
<dholbach> we can ignore the urgency for now - it's not relevant to Ubuntu
<dholbach> source package name is xicc
<dholbach> what about the version string? what does it consist of?
<dholbach> as we've seen in  xicc_0.2.orig.tar.gz  the upstream version number is 0.2
<dholbach> the next part of it is the debian/ubuntu revision
<InsClusoe> <debian-version><ubuntu><revision-number>
<dholbach> -2ubuntu1 means: revision 2 in debian, and an ubuntu change on top of that
<dholbach> InsClusoe: right, that's true for packages where we do changes
<dholbach> most of the debian packages go into ubuntu unchanged
<dholbach> so we stick to      <upstream>-<debian revision>
<james_w> dogi> QUESTION: after 'apt-get source xicc' there wos a of 'gpg:' - messages is that normal?
<dholbach> if we should decide to ship xicc 0.3 (if it was available), we'd name it 0.3-0ubuntu1 as it is not in Debian yet or at least our version is not based on the debian one
<dholbach> dogi: good question: you can ignore that - it's just a warning telling you that you don't have the key of ross burton who happened to do the last upload of xicc
<james_w> <Solarion> QUESTION: why the DEB* env vars instead of respecting existing data (e.g. GECOS field, username?)
<dholbach> Solarion: I think the patch for devscripts to make it use GECOS fields has not been written yet
<dholbach> http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=devscripts indicates there's no bug report open for that yet
<dholbach> it'd certainly be nice to have though
<james_w> I think it falls back to the normal fields, but allows you to use these on top to change your identity for packaging.
<dholbach> oh ok, good to know
<dholbach> any more questions?
<james_w> search for DEBEMAIL in man dch and all is explained
<dholbach> great :)
<james_w> <james_w> Question: what does the '-i' in the dch command do?
<dholbach> james_w: it inserts a new changelog entry and increments the version number
<james_w> <eddyMul> QUESTION: how to use `dch -i` from emacs' shell?
<dholbach> there are other scenarios where you might not want to do that, let's assume you're working on a huge revision together with friends and co-maintainers
<dholbach> in that case you use dch -e
<dholbach> eddyMul: I haven't used emacs for years, so I guess I'm the wrong person to answer your question - I could just answer how you switch to a different one, sorry :)
<dholbach> maybe  devscripts-el  has some love for emacs
<eddyMul> dholbach: it's minute detail. I'll survive w/ nano. carry on
<dholbach> I'm sorry - I don't know
<dholbach> I set  EDITOR=vi  - sorry
<dholbach> ok... back to our changelog
<dholbach> now that we've covered the version string, next is the ubuntu release we upload to
<dholbach> we generally can only upload to the current development release, which in our case is 'hardy'
<dholbach> of course there's also "gutsy-updates" and "gutsy-security" etc, but that's something you can learn more about in tomorrow's session
<dholbach> SRU/Security Updates (Luca Falavigna, William Grant)
<dholbach> so we'll set it to hardy and leave the urgency as is
<dholbach> as actual changelog entry, I set:
<dholbach>   * debian/control: replace 'colour' with 'color'.
<dholbach> note how I refer to the file I changed and what I did with it
<dholbach> as we're working on an (imaginative, granted) bug we'd add something along the lines of  (LP: #123456)  to that line
<dholbach> to indicate: we fixed bug 123456
<dholbach> once the actual upload happens the bug will be closed automatically
<dholbach> ok... change done and documented
<dholbach> now we come to something our friends at Debian asked us to do when we change any Debian package
<dholbach> (remember we changed it from 0.2-2 to 0.2-2ubuntu1)
<dholbach> https://wiki.ubuntu.com/DebianMaintainerField
<dholbach> we'll need to edit  debian/control  again
<james_w> <Solarion> QUESTION: regarding numbering scheme, what if there's no Debian version?
<dholbach> and replace
<dholbach>   Maintainer: Ross Burton <ross@debian.org>
<dholbach> with
<dholbach> XSBC-Original-Maintainer: Ross Burton <ross@debian.org>
<dholbach> Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
<dholbach> Solarion: good question - in that case we'll name it    0.3-0ubuntu1   (0 because there was no debian revision of it yet)
<james_w> <eddyMul> QUESTION: what if we touched a bunch of files in patching it? should I still put multiple files? what would it look like? (e.g. modified debian/rules to have a dh_install, then added debian/install for list of files)
<dholbach> eddyMul: there's no strict policy, but I prefer to mention all the changes I've done
<dholbach> so if you have one big change that consist of changes in various files you could do something like:
<eddyMul> dholbach: so, for my example, can you show me how you would document it?
<dholbach>   * debian/control, debian/rules, debian/patches/01_frobnication.patch:  make sure frobnication is executed after configuration.
<eddyMul> dholbach: got it. thanx.
<dholbach> or something along the lines of:
<dholbach>   * debian/control.in:
<dholbach>     - Updated library dependency versions based on configure.ac
<dholbach>   * debian/patches/01_lpi.patch:
<dholbach>     - Updated
<dholbach>   * debian/patches/90_autoconf.patch:
<dholbach>     - Updated via automagic
<dholbach> as I said: there's no strict policy
<dholbach> if you're not afraid of getting a lot of emails, check out the hardy-changes list to see all the changes that are made during the hardy release and how they are documented :)
<dholbach> back to the maintainer field change
<dholbach> in  XSBC-Original-Maintainer:  preserve the original maintainer
<dholbach> but setting the Maintainer field to an Ubuntu list ensures that none of our users mail the debian maintainer accidentally
<dholbach> this was decided by all debian maintainers is understandable
<dholbach> the tool    update-maintainer   (also in ubuntu-dev-tools) does that automatically for you :)
<dholbach> let's document that change too
<dholbach> dch -e
<dholbach> something along the lines of:
<dholbach>   * debian/control:
<dholbach>     - replace 'colour' with 'color'.
<dholbach>     - changed Maintainer field.
<dholbach> will do
<dholbach> now we're all set and happy with our changes :)
<dholbach> let's build the new source package (including .diff.gz and .dsc) for the 0.2-2ubuntu1 release
<dholbach> please run      debuild -S
<dholbach> (for some of you it might complain about a missing GPG key - please ignore that - it's irrelevant right now)
<dholbach> https://help.ubuntu.com/community/GnuPrivacyGuardHowto has more info on how to set it up properly
<dholbach> all set?
<jcastro> yep!
<Yasumoto> +1
<InsClusoe> +1
<thekorn> yes
<dholbach> great
<dholbach> cd ..
<dholbach> ls
<eddyMul> +1
<dholbach> now we have: xicc_0.2-2ubuntu1.diff.gz  xicc_0.2-2ubuntu1.dsc  xicc_0.2-2ubuntu1_source.build  xicc_0.2-2ubuntu1_source.changes
<dholbach> tihs is the new source package for our changed xicc package
<dholbach> if you now run:
<dholbach>    debdiff xicc_0.2-2.dsc xicc_0.2-2ubuntu1.dsc  > debdiff
<dholbach> debdiff will diff the two source packages and write it to a file called debdiff
<dholbach> can you paste your debdiff into http://paste.ubuntu.com and paste the link here?
<ninkendo> QUESTION: will the debdiff command only find changes in the debian/ directory?  Or does it scan the entire source tree for changes?
<jcastro> http://paste.ubuntu.com/4781/
<dholbach> ninkendo: the entire tree
<InsClusoe> http://paste.ubuntu.com/4782/
<dholbach> good work jcastro
<ninkendo> http://paste.ubuntu.com/4784/
<eddyMul> http://paste.ubuntu.com/4783/
<dholbach> InsClusoe: you used my name in DEBEMAIL and DEBFULLNAME :-)
<InsClusoe> Thats the best way to survive any mistakes that I do in packaging... :-)
<dholbach> eddyMul: xicc-0.2.orig/debian/changelog.dch.save should probably not be in the debdiff - make sure you delete it and re-run debuild -S + debdiff
<dholbach> InsClusoe: hahaha :)
<dholbach> good work ninkendo
<dholbach> well done everybody
<Yasumoto> http://paste.ubuntu.com/4785/
<dholbach> our first debdiff is in good shape we're ready to get it reviewed and uploaded
<dholbach> looking good Yasumoto
<Yasumoto> thanks dholbach :)
<james_w> <eddyMul> QUESTION: is there a way to have debdiff ignore some files (e.g. emacs_backup_files~)
<dholbach> now we come to one of the most essential processes in contributing to Ubuntu development: the sponsoring process
<dholbach> eddyMul: you can run filterdiff on the debdiff afterwards or use    debdiff --exlude <pattern>
<dholbach> but generally it's better to clean up the directory and make the change as minimal as necessary and possible
<dholbach> back to sponsoring: sponsoring means: somebody who is in the ~ubuntu-dev signs your changes with their gpg key and uploads to the build daemon
<dholbach> https://wiki.ubuntu.com/SponsorshipProcess explains how it works
<dholbach>  - basically you either work on an existing bug and follow up there or file a new one
<dholbach>  -  you attach your debdiff (extra points if your changelog contains (LP: #123456) to fix the bug directly)
<dholbach>  - you subscribe either ubuntu-universe-sponsors for universe/multiverse packages or
<dholbach>  - you subscribe either ubuntu-main-sponsors for main/restricted packages
<dholbach> done
<dholbach> after a some time somebody will be in touch with you to review your patch and upload it once it's all good
<dholbach> of course you wouldn't want to submit the colour/color debdiff, but do something useful instead ;-)
<dholbach> https://wiki.ubuntu.com/MOTU/TODO and https://wiki.ubuntu.com/MOTU/TODO/Bugs lists a lot of bugs to get started with
<dholbach> my personal favourites are:
<dholbach>  - bugs tagged as 'bitesize' (good for new contributors)
<dholbach>  - bugs tagged as 'packaging' (bugs are in the packaging, not in the upstream source code)
<dholbach>  - bugs that are fixed elsewhere (Launchpad has the nifty feature of indicating wether a bug is fixed upstream or in a different distro if you link to other bug trackers)
<dholbach> those bugs should be a good start
<dholbach> <pixelpapst> QUESTION: how would get this diff into my PPA ?
<dholbach> pixelpapst: you'd        dput myppa xicc_0.2-2ubuntu1_source.changes        assuming that you have everything set up according to http:/help.launchpad.net/PPAQuickStart
<dholbach> <eddyMul> QUESTION: how to use LP to search for tags in bugs?
<dholbach> eddyMul: the bugs should be linked from http://wiki.ubuntu.com/MOTU/TODO/Bugs
<dholbach> but hang on
<dholbach> https://bugs.launchpad.net/ubuntu/?field.tag=frobnication    should work too
<dholbach> http://wiki.ubuntu.com/MOTU/GettingStarted should have a lot of the information I just covered
<dholbach> be bold, start fixing bugs, don't hesitate to ask in #ubuntu-motu or on ubuntu-motu-mentors@lists.u.c
<dholbach> in addition to that we have a MOTU Q&A session every friday in this channel
<dholbach> so there are lots of offers to help you get started
<dholbach> more questions?
<dholbach> If you like the event add your weblog to http://ubuntuweblogs.org (by following the instructions on http://ubuntuweblogs.org/submit.html) and blog about it or your progress on your MOTU Journey
<dholbach> ok... if that's it... thanks everybody
<shujin>  Thanks dholbach!
<dholbach> I know you all can do it - hope to see you on your MOTU Journey soon :)
<Solarion> dholbach: thanks
<eddyMul> thanx, dholbach
<awalton__> thanks
<joumetal> thanks.
<dholbach> hope to see you all tomorrow - the schedule is full with good stuff :)
<barcc> dholbach: thanks
<eddyMul> dholbach: hopefully no schedule switches.....
<jcastro> thanks dholbach!
<InsClusoe> Thanks a lot dholbach and all others who patiently explained the stuff and answered all our questions..
<dholbach> InsClusoe: I had a great time!
<eddyMul> well, i'm off to start my day (here in US). c u all tomorrow
<shujin> Lunch Time!
<shujin> see you all tomorrow!
<daltonico> hello
<daltonico> hola
 * xbisont is away: Ya me fuÃ­
#ubuntu-classroom 2008-02-20
<Alucard> bashohII> ãã¯ããã
<bashohII> Hello
<Alucard> ã«ã»ãããã§ããï¼
<bashohII> ã¯ã
<Alucard> ããã
<Alucard> é¢æ±ããã§ããï¼
<bashohII> ã¯ã
<bashohII> ç¥å¥å·ã§ã
<Alucard> ï¼ ï¼¿ï¼ 
<Alucard> ç¥å¥å· ãªã¼ã«ã¹ã¿ã¼ã§ããï¼
<Alucard> SLAM DUNKãã
<bashohII> æ¹åãã¼ã¤ ã§ãã
<Alucard> www
<Alucard> çèµ°æï¼ ï¼ ï¼
<bashohII> ã´ã¼ã«ãåè¨±ã® ããã ï½ ã§ãï½
<Alucard> ããã­ãwww
<bashohII> Alucard > æ¥æ¬äººã§ããï¼
<Alucard> bashohII> ãã³ã³ã³ããã§ã
<Alucard> ï¼ï¼ï¼ï¼ã­
<bashohII> ä½ çæ¥è¯­å¾å¥½
<Alucard> bashohII>è¬è¬æ¨
<bashohII> æå·²ç»çå­¦äºå¨ä¸­å½
<Alucard> bashohII> ããã
<Alucard> "æå·²ç»å¨ä¸­å½çå­¦äº" ããã§ããããï¼P
<bashohII> ä»¥åä¹è¯·å¤å¤å³ç§
<bashohII> è°¢è°¢æ¨
<Alucard> bashohII> å¨ä¸­åççæ´»ææ¨£?
<bashohII> å¾å¥½
<Alucard> bashohII> ããããï¼ï¼ï¼ï¼
<bashohII> æå¨æ²é³
<bashohII> ï½ï½
<Alucard> æ²é½ä¸é¯ç
<Alucard> bashohII> æåéäºä»éº¼ä¸é¯çæ±è¥¿å¢?
<bashohII> åç®ä½å­å¯ä»¥åï¼
<Alucard> ç¾å¨ã¯ã§ããªããXD
<bashohII> ï½ï½
<Alucard> çä¸æå?
<Alucard> éæ¯çä¸å°?
<bashohII> çä¸æ
<Alucard> ããããã¾ã
<bashohII> æçæ±å­ä¸è½è¯»
<Alucard> æ¾ç¤ºä¸å°å?
<Alucard> ãã¯ã£ã¯ãå¿äºå¯ä»¥ä½¿ç¨firefoxçextension
<bashohII> å¯è½è¡¨ç¤º
<bashohII> ä½ç¹ä½å­è¯»å¾å¾é¾
<Alucard> åå~åªæ¯ç®ä½å­ç®åç¨åº¦å¤ªé«äº~
<bashohII> å­¦çæ¶åå¤ªä¹
<bashohII> æè¿å­¦å£è¯­
<Alucard> å½è¯­å(åèªå)?
<bashohII> å¬çæ¶åå¤ªé¾
<bashohII> æ®éè¯
<Alucard> åå~ä¹æ¯å¢~å½è¯­ä¸­æå¾å¤å­è¯è·æ¥è¯­è¿ä¼¼(åå~ä¹æ¯å¢~åèªä¸­æå¾å¤å­è©è·æ¥èªè¿ä¼¼)
<bashohII> å¯¹
<bashohII> ä½ï¼å¨ä¸­å½çæ¶åå¿äºæ¥è¯­ï½ï½ï½
<Alucard> ä¹æç¹å­è¯çææè·æ¥è¯­ä¸æ ·å¢~(ä¹æé»å­è©çææè·æ¥èªä¸æ¨£å¢~)
<Alucard> www
<bashohII> ç°å¨ææå¨æ¥æ¬å½çä¸­å½äººçæå
<Alucard> @@
<bashohII> è·ä¸èµ·èå¤©å¿çæ¶åï¼ä¸è¦æ±å­ï½ï½ï½
<Alucard> bashohII> ææ¥è¿é¦æ¸¯å(æä¾éé¦æ¸¯å)?
<Alucard> bashohII> åå~
<bashohII> ä»¥åï¼ææ³å»é¦æ¸¯
<Alucard> å¥½~^^~
<bashohII> æå·²ç»å»æ¾³é¨
<bashohII> ä½ï¼æä¸è½å¹¿ä¸è¯­
<Alucard> åµåµ~è¯´æ®éè¯ä¹è¡çå~(åµåµ~èªªæ®éè©±ä¹è¡çå~)
<bashohII> ä»¥åä¹è¯·å¤å¤å³ç§^^
<Alucard> çªæé¢åä¹æåè¿å(è±¬æéºµåä¹æåéå)?
<bashohII> æ²¡æç»éª
<bashohII> å¥½ååï¼
<Alucard> ãã¡ããã ããï¼P
<Alucard> Next meeting    When: 21st February 2008    Start: 16:00    End: 17:00    Timezone:  UTC    Where: #ubuntu-training on irc.freenode.net    Chaired By: Billy Cina
<bashohII> ããã©ãä¸­å½ã«è¡ã£ããé£ã¹ããã
<bashohII> ï½ï½
<Alucard> æå¤©æè¯¾å¯ä»¥ä¸äº(æå¤©æèª²å¯ä»¥ä¸äº)
<Alucard> ä¸­å½äººæå¥è¯´è¯"æ°ä»¥é£ä¸ºå¤©"(ä¸­åäººæå¥èªªè©±"æ°ä»¥é£çºå¤©")
<bashohII> åæ¹çæçæ¯å¾å¥½
<bashohII> æï¼åæ¬¢å¨æ°ä¼¦ï½ï½ï½
<Alucard> åæ¹çé¢ä¹å¾å¥½çå(åæ¹çéºµä¹å¾å¥½çå)
<bashohII> å³ä¸å
<bashohII> ä½ï¼å¥½å
<Alucard> æåæ¬¢(æåæ­¡)L'ARC~en~Ciel www
<bashohII> æå¨æ°ä¼¦ï¼å­çå§¿çæ­å¸¸å¸¸å¬
<Alucard> d21 UTC 1600 = d22 GMT+8 0000/d22 GMT+9 0100
<Alucard> åæææè¯¾,æåç¦»å¼äº(å¾æææèª²,æåé¢éäº)
<Alucard> ããããã
<bashohII> åè§
<Seeker`> .names
<popey> bah
<popey> beat me
<v0lksman> #ubuntu-classroom-chat
<v0lksman> hahah..oops
<nxvl_work> bug #192887
<slytherin> nxvl_work: Wrong window probably
<nxvl_work> slytherin: nop, testing ubotu for my talk
<slytherin> nxvl_work: Remove the #
<dholbach> there's just ubuntulog in here
<dholbach> so no dice
<nxvl_work> bug 192887
<nxvl_work> dholbach: it doesn't put the links to the bugs inhere?
<jpatrick> odd, ubotu is here
<dholbach> oh... it is
<dholbach> sorry
<daishujin> does it need a !
<daishujin> !bug 192887
<slytherin> ubotu: wakeup
<ubotu> Sorry, I don't know anything about wakeup - try searching on http://ubotu.ubuntu-nl.org/factoids.cgi
<dholbach> maybe best to ask Seveas in some other channel
<daishujin> lol
<sistpoty|work> Launchpad bug 192887 in ubuntu "FeatureFreeze exception request for sun-javadb" [Undecided,New] https://launchpad.net/bugs/192887 (sorry, I'm a busy bot :P)
<dholbach> sistpoty|work: hehe
<nxvl_work> dholbach: doesn't mind i will paste the link by myself
<dholbach> nxvl_work: if you type manually: http://launchpad.net/bugs/<number> will be the shortest
<jpatrick> dholbach: pinged him
<nxvl_work> dholbach: yep, i know
<dholbach> rock on
<nxvl_work> dholbach: thanks
<dholbach> WELCOME EVERYBODY TO DAY THREE OF UBUNTU DEVELOPER WEEK!
<dholbach> I hope that's enough caps for today and you don't mind if I write lower case from now on :)
 * mruiz waves
<InsClusoe> Hurray!
<mrsno> hey :)
<dholbach> please ask questions in #ubuntu-classroom-chat, prefixed with QUESTION:
<dholbach> everybody excited?
<dholbach> ready to go?
 * InsClusoe wags his tail furiously..
<dholbach> hehehe :-)
<dholbach> https://wiki.ubuntu.com/UbuntuDeveloperWeek has the schedule of today and we'll start off with "MOTU Processes"
<nxvl_work> \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/ \o\ /o/
<Iulian> Wooah
<dholbach> I gave a session with the same title yesterday and will cover the same topics because I think they're important
<dholbach> please don't hesitate to ask all questions related to MOTU, Ubuntu Development and other stuff you're wondering about
<nxvl_work> dholbach: i will handle the questons again
<dholbach> nxvl_work: you ROCK
<dholbach> so there's been talk about MOTU for the whole week already - I hope you all know what MOTU is about :)
<dholbach> MOTU is the first stepping stone into Ubuntu Development and the team who will help you get started
<dholbach> as member of the MOTU team you can upload packages to universe and multiverse
<dholbach> the process to join the team is pretty straight-forward:
<dholbach>  - you work with sponsors (more about that in a bit) who will review your packages and patches and upload them into the archive once they're happy
<dholbach>  - once the sponsors tell you: "hey man, you should be able to do this on your own - you're really good", you should probably consider applying for MOTU membership at the MOTU Council
<dholbach> and that's all there is to it
<dholbach> Sponsoring means: somebody who's member of ~ubuntu-dev will review your patch or package, sign it with their gpg key, then upload to the build daemon
<dholbach> the advantage of this process is: you don't have a fixed sponsor but work with a team, so you can learn a lot of different things from a lot of different people
<dholbach> also you get to know a lot of people who can help you out in the Ubuntu community
<dholbach> the sponsorship process is explained at https://wiki.ubuntu.com/SponsorshipProcess and means in a nutshell:
<dholbach>  - you attach your patch on a bug report
<dholbach>  - then subscribe the sponsors team (which for main/restricted packages is ubuntu-main-sponsors    and     for universe/multiverse packages is ubuntu-universe-sponsors)
<dholbach> does that make sense so far?
<dholbach> any questions about what it's like to go through the process or anything that's unclear?
<nxvl_work> <v0lksman> QUESTION:  What's the difference between a sponsor and the REVU site?
<dholbach> v0lksman: good point
<dholbach> REVU is a page we set up quite a while ago to help us with reviewing NEW packages
<dholbach> NEW packages generally mean software that has never been in Ubuntu, so fresh new software :)
<dholbach> http://revu.tauware.de/
<dholbach> https://wiki.ubuntu.com/MOTU/Packages/REVU explains how to upload software there
<dholbach> NEW packages are a bit different as they require much closer review, the review of a 'diff' is just not enough
<v0lksman> gotcha...thanks
<nxvl_work> <InsClusoe> QUESTION: How is ensured that patches don't break something else inadvertently?
<mruiz> dholbach, http://revu.ubuntuwire.com
<dholbach> getting a NEW package in requires two ACKs from ubuntu-dev members and is something we work on in the first half of the release cycle, the second half (after Feature Freeze) is dedicated to fix the packages we already have :)
<dholbach> InsClusoe: excellent question
<dholbach> there are a lot of things you can test:
<dholbach>  - does it still build with the patch applied?
<dholbach>  - is the patch integrated upstream or in debian already?
<dholbach>  - checking the resulting binary packages: are there removed files?
<dholbach>  - checking library packages: are there symbols which were removed from the library
<dholbach>  - etc etc etc
<dholbach> there are lots of things to look at, especially when the patches are big - you learn a lot when you try to get patches included, it's the same kind of things you test when you review other patches :)
<dholbach> <InsClusoe> QUESTION: How is ensured that patches don't break something else inadvertently?
<dholbach>  QUESTION: Ok.. Is there any checklist that I can refer to so that I can have a certain level of confidence in the patch I submit?
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/CodeReviews has a good overview but is probably not complete :)
<dholbach> InsClusoe: if you have doubts about the patch you're about to submit, it's probably best to point that concern out in the bug report so people know what to look at
<InsClusoe> Yup.. Makes sense.. Thanks.
<dholbach> I personally trust people more who point out that they're unsure - it's a sign of good collaboration
<dholbach> <slytherin> QUESTION: Recently the process for new versions of packages was changed from 'submit interdiff' to 'submit .diff.gz'. What are the reasons and how does newer process helps sponsoring?
<dholbach> slytherin: the process was changed back to .diff.gz
<dholbach> some developers found using and reviewing an interdiff to be a bit cumbersome
<slytherin> Makes sense. Thanks. :-)
<dholbach> people seemed to be more familiar with using filterdiff on diff files, but I have to admit there were other more technical reasons, I can't find the reference right now
<dholbach> excusez-moi :)
<dholbach> any more questions on how to get your packages / patches included? what is expected of a MOTU or anything else?
<nxvl_work> dholbach: mi list is empty
<nxvl_work> my*
<dholbach> ok, let me talk a bit about Events - it's not so much a process but something that might help get you started
<dholbach> every Friday at 13:00 UTC (minus the coming Friday) we have a MOTU Q&A session in this very channel
<dholbach> it's a good time to meet developers and talk about problems you're having or things you don't understand in a smaller forum than this IRC session :)
<dholbach> also we do Packaging 101 session once a month
<dholbach> all of these happen in #ubuntu-classroom
<dholbach> other things that might be beneficial for you
<dholbach>  - #ubuntu-motu of course :)
<dholbach>  - ubuntu-motu-mentors@lists.ubuntu.com
<dholbach> don't hesitate to ask - there's always *somebody* awake :)
<dholbach> nxvl will give a session later on about how to get started on MOTU/TODO and MOTU/TODO/Bugs - that's going to be excellent
<yannick_lm> hi there
<dholbach> I talked a bit about Feature Freeze earlier
<dholbach> FF is the time when specs that are targetted for the current release need to be in a good shape already
<dholbach> and for us who do package maintenance it means: stabilisation
<dholbach> so we need to get exceptions for NEW packages and new upstream releases (if it's not 100% clear that it's a bugfix-only release)
<dholbach> some days before the release day we enter Hard Freeze where every single change will be reviewed
<dholbach> https://wiki.ubuntu.com/HardyReleaseSchedule for reference
<dholbach> does that make sense so far?
<dholbach> ok, it seems so :)
<dholbach> another important topic is the Sync Request Process
<dholbach> there's always some bit of confusion about what a sync actually is
<dholbach> a sync means: copy the source package from debian as-is, build it in ubuntu
<dholbach> this implies that all changes in the current Ubuntu package are overwritten
<dholbach> so if you decide to ask for a sync, you need to make 100% sure it'S OK to do that
<dholbach> if you've checked that the new package from debian builds, it's OK to sync it in the current time of the release cycle, you can file a bug report asking for the sync
<dholbach> you include the changelog of the debian package to indicate what has happened in the meantime
<dholbach> then (if you're not in ubuntu-dev yet) subscribe ubuntu-universe-sponsors if it's in unvierse/multiverse (ubuntu-main-sponsors accordingly)
<dholbach> they will ACK the report if it's OK, then get the ubuntu-archive team to do it :)
<dholbach> https://wiki.ubuntu.com/SyncRequestProcess also explains about a tool called requestsync which makes your life even easier
<dholbach> the same checks that InsClusoe and I talked about earlier apply to sync too
<dholbach> so if the synced debian package does not build on ubuntu we have a problem and need to fix it, etc etc
<dholbach> being in sync is a very good thing, but we need to be careful
<dholbach> what does it mean to be in sync?
<InsClusoe> It means we are using the latest version from upstream.
<dholbach> if you look at https://wiki.ubuntu.com/HardyReleaseSchedule again you will notice that from start of the release cycle to some time nine weeks later (until Debian Import Freeze) the status is all green
<dholbach> in this time we will sync the newest version of the debian package automatically
<dholbach> if you're in sync with debian and you run into problems you have more eyes on the problem, because you both use the same unmodified source
<dholbach> even better if the debian version is in sync with the version of the upstream authors :)
<dholbach> also: if we're not in sync we need to merge our changes manually in that green timeline of the release schedule
<dholbach> and that's a lot of work
<dholbach> for those of you who didn't have the time to attend James Westby's and nxvl's session about collaborating with debian here's the link: https://wiki.ubuntu.com/MeetingLogs/devweek0802/Debian
<dholbach> if we pass on our patches, we can make sure we get in sync quicker again, which we all benefit from
<dholbach> any questions? :)
<nxvl_work> dholbach: empty list again
<dholbach> nxvl_work: I just wanted to leave some time for people to ask questions :)
<dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/Merging is a pretty good page of how to do merging
<nxvl_work> dholbach: yes, i know, but i was trying to tell you to wait for questions cause there are no one on queue :D
 * dholbach hugs nxvl_work
 * nxvl_work HUGS dholbach back
<nxvl_work> <InsClusoe> QUESTION: Between two releases, if there is no change in debian version of a package and there are a few ubuntu fixes, would we still sync with Debian at the start of the release cycle?
<dholbach> when Hardy+1 opens this is going to be the first big portion of things we work on and excellent to help out with :)
<dholbach> InsClusoe: no, as soon as a package contains "ubuntu" in the version string it is not synced
<dholbach> or hang on - did I understand your question correctly?
<dholbach> if there are no debian changes, there's nothing to sync
<dholbach> we can still try to pass on our ubuntu changes to the debian maintainer though
<dholbach> that's always advisable
<dholbach> James Westby and nxvl_work might have talked about a tool called submittodebian which makes the process of sending patches virtually painless
<dholbach> it makes use of https://wiki.ubuntu.com/Bugs/Debian/Usertagging internally
<dholbach> so that patches in the debian bugtracker get a tag called 'origin-ubuntu': http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=origin-ubuntu;users=ubuntu-devel@lists.ubuntu.com
<dholbach> other patches are directly grabbed by debian maintainers or live in some kind of revision control system, so you probably won't find every patch that was ever sent in that list
<dholbach> a few things I always highlight are:
<dholbach>  - https://wiki.ubuntu.com/UbuntuDevelopment (for general process questions - like How does the archive work? When can I request a sync? etc)
<dholbach>  - https://wiki.ubuntu.com/PackagingGuide (which helps with packaging, it has tutorials and everything)
<dholbach>  - and https://wiki.ubuntu.com/MOTU (which lists team meetings, team organisation and so on)
<dholbach> https://wiki.ubuntu.com/MOTU/GettingStarted is the general first address :)
<dholbach> Who of you could imagine helping out in the MOTU team any time soon? :-)
<nxvl_work> o/
<dholbach> that's all? :-)
<xander21c> I
 * InsClusoe says yes if [soon=now].
<daishujin> I'd like to try
<Picklesworth> :)
<dholbach> ROCK and ROLL - that's the spirit :-)
<Iulian> Who knows, I still have many things to learn.
<dholbach> What's your general impression of Ubutnu Development? Daunting? Crazy?
<Iulian> Impressive
<nxvl_work> HUGGY
<nxvl_work> :D
<dholbach> :-)
<Iulian> Heh :)
<dholbach> Iulian: impressive how?
<daishujin> these talks have certainly made me appreciate my desktop alot more!
<Iulian> dholbach: In many areas.
<bazhang> amazing what all of you do
<Iulian> I mean, I like how the team is working, helping each others...
<InsClusoe> It's really cool.
<slytherin> What is amazing is that you can help improve your own user experience. :-0
<Iulian> Yes, indeed.
<slytherin> :-)
<dholbach> slytherin: exactly
<dholbach> what's important to me is to show you that you can help each other too and that the whole processes are no rocket science :)
<dholbach> but that with some patience, some detective skills and motivation you can be part of the whole thing too :)
<InsClusoe> QUESTION: How do you guys manage to ensure high levels of usability without any kind of automated testing? Or is there any wrong assumption on my part?
<dholbach> InsClusoe: automatic testing as in how? testing of usability?
<dholbach> by the way: Thursday 17:00 UTC: Writing Scripts For Automated Desktop Testing (Lars Wirzenius)
<InsClusoe> Companies usually have robots for UI testing and things like that.
<dholbach> Lars has been putting a lot of effort into figuring out the problem of UI testing
<dholbach> but we benefit of course of a lot of other developers working with us
<dholbach> so for example gnome packages before they are released in ubuntu have gone through a lot of hands already: the GNOME upstream developers have regular SVN checkouts and so on
<dholbach> some software (unfortunately not all) comes with HUGE test suites
<dholbach> if you look at the code of bzr for example - it's just amazing
<slytherin> And then there are beta testers. :-D
<dholbach> of course :)
<dholbach> <Shiv> QUESTION: Do the packages have associate test suites to ensure quality?
<dholbach> Shiv: we run regular installability test of packages and regular lintian checks too
<dholbach> lintian and linda are tools to check how policy compliant packages are
<dholbach> when it comes to test suites regarding the software itself we mostly depend on the test suites that upstream authors have written
<dholbach> a large degree of software written just for ubuntu has test suites too (like apport, jockey, etc)
<dholbach> and as far as I know the security team writes tests for the fixes they upload too
<dholbach> so if there should be a security regression it should be caught
<dholbach> <Shiv> QUESTION: How do you test installation and functionality of a base package (say glibc)
<nxvl> < Shiv> QUESTION: How do you test installation and functionality of a base package (say  glibc)
<dholbach> :)
<dholbach> Shiv: piuparts is a tool that Lars Wirzenius has written which test installation of packages in a chroot (a fresh minimal environment)
<dholbach> libc6 is tested like all other packages too
<dholbach> another huge part of what we test is upgrades
<dholbach> we have machines doing nothing else but testing upgrades from gutsy to hardy, from dapper to hardy and so on
<dholbach> <Shiv> QUESTION: For a developer to test this, it would be painful. If a newer ubuntu release needs newer toolchain, building all of them is a difficult proposition.
<dholbach> Shiv: absolutely, which is why at least main is built with a new toolchain once it is put in place
<dholbach> https://wiki.ubuntu.com/HardyReleaseSchedule indicates when those tests are run
<dholbach> any more questions about Ubuntu Development? :)
<dholbach> what I like about the questions from you guys today is: you absolutely want to do it right - that's great
<nxvl>  < Shiv> QUESTION: Is toolchain uploading done by MOTUs or core-dev
<dholbach> Shiv: doko is your man - he's in charge of the toolchain and an awesome guy
<lsaavedr> holas
<dholbach> he's employed by Canonical, a core-dev and works in the Debian Toolchain team too
<dholbach> more questions? :)
<dholbach> if not, you have two more minutes until the next session :)
<dholbach> thanks everybody for coming to the session!
<russell__> no problem ;)
 * mruiz hugs dholbach 
<Iulian> dholbach: No, thank you!
<dholbach> :-))))
 * dholbach hugs Iulian
<Iulian> Hehe
<dholbach> oh.... I completely forgot something! Packaging Jams!
<dholbach> watch out for Packaging Jams in your area :)
<dholbach> ok it's 17:00 UTC
<dholbach> and thumper is already here
<thumper> I am
<thumper> dholbach: get into it now?
<dholbach> thumper is Tim Penhey, a Launchpad Hacker who among others made the goodness that http://code.launchpad.net/ is possible
 * thumper bows
<thumper> = Hosting Code With Launchpad =
<dholbach> I hope you all enjoy the session and ask your questions in #ubuntu-classroom-chat
<dholbach> thumper: the stage is yours :)
<thumper> dholbach: thanks
<thumper> This is my first time working with dholbach and ubuntu open week
<thumper> so be gentle
<thumper> Just so I feel like I'm not just talking to myself the whole time
<thumper> who is around for this one?
<InsClusoe> 0/
<Shiv> 1/
<nxvl> o/
<daishujin> +1
<Iulian> I am
<thumper> cool
<dustinlange> +1
<db-keen> +1
<thumper> As dholbach said, my name is Tim and I am the team lead for the launchpad-bazaar integration
<thumper> Our job as a team is to make using Launchpad with Bazaar better than the sum of the parts
<thumper> Launchpad by itself is really nifty
<KEB1> is teh sessoin alreday running?
<thumper> Bazaar by itself rocks
<thumper> KEB1: yep
<thumper> our job is to make using Launchpad and Bazaar together really blow your socks off
<thumper> As some of you may suspect, part of this was prepared in advance :)
<thumper> == Bazaar ==
<thumper> A very quick intro
<Grazieno> +1
<thumper> Bazaar is a distributed version control system found at http://bazaar-vcs.org
<thumper> Bazaar is installed on all ubuntu machines by default, and is the command 'bzr'
<thumper> You don't need a central repository to manage your code
<thumper> and that's all I'm going to say about it right now
<thumper> == Launchpad ==
<thumper> Trying to describe what Launchpad is in just a few words is really hard
<thumper> <Shiv> QUESTION: Sounds lame, but nevertheless - is bazaar by ubuntu and for what purpose ?
<thumper> Bazaar is a community project
<thumper> but several lead developers a canonical employees
<thumper> Bazaar was sponsored by canonical because at the time there were no DVCS available that provided the functionality that was looked for
<thumper>  <Shiv> QUESTION: (continue) so what role does bzr play for ubuntu, or is it a standalong product ?
<thumper> bzr is a standalone product
<thumper> but it is also a tool for collaborative software development
<thumper> more will become apparent as I go on
<thumper> Launchpad aims to make it easier to collaborate in open source software development
<thumper> Launchpad is a bug tracker, feature planner, translation manager, handles questions and answers, and a source code repository
<thumper> or as kiko has mentioned in a blog post, a source code supermarket
<thumper> What we are here to talk about today is working with code and launchpad together
<thumper> (using bzr as a package management tool is a whole different session, sorry Shiv)
<thumper> As far as Launchpad is concerned, code is stuff in Bazaar branches
<thumper> Yes, you can put other stuff in branches too, but we think of it as code
<thumper> To get a quick overview of the projects that have code available, you can look at https://code.launchpad.net/+project-cloud (hopefully you don't all go there at once)
<thumper> Bazaar is a relative new-comer in the version control stakes, and as such many projects use other revision control systems
<thumper> Launchpad can import CVS and Subversion branches into bazaar branches and make these available through Launchpad
<thumper> These are considered "imported" branches, and are owned by the vcs-imports user (https://code.launchpad.net/~vcs-imports)
<thumper> If you have your code in a bazaar branch now, you can either "push" your branch to Launchpad (using `bzr push`) or get Launchpad to mirror your branch from a public, accessible location
<thumper> One of the recent improvements to the user interface to bzr (read that as command line), is to be able to use an URL scheme of lp: to reference launchpad.
<thumper> <Solarion> QUESTION: given all that Launchpad is, is it intended to be like SourceForge, Novell Forge, GNU Savannah, etc.?
<thumper> Yes, and then some
<thumper> So I can go `bzr branch lp:gnuhello` to get a copy of gnuhello (you can too).
<thumper> If you have a launchpad identity, you need to make sure that you have specified a SSH key in order to push to launchpad (https://launchpad.net/people/+me/+editsshkeys).
<thumper> This is how launchpad confirms that it is you
 * thumper pours more coffee
<thumper> <Shiv> QUESTION: Why another tool (bzr) instead of adapting distributed versioning tool like hg ?
<thumper> bzr and hg both have a similar basis and both started development at around the same time
<thumper> bzr had a different set of ideals than hg
<thumper> and we believe the future is bzr (but we are biased)
<thumper> Since my username is thumper for Launchpad, I can push a copy of gnuhello that I'd just branches by using `bzr push bzr+ssh://thumper@bazaar.launchpad.net/~thumper/gnuhello/my-branch`
<thumper> I'm sure you can agree that is somewhat unwieldy
<thumper> Bazaar gets shipped with a launchpad plugin which allows some nifty additions
<thumper> You can tell bzr about your launchpad id by using `bzr launchpad-login` and your launchpad id
<thumper> so mine would be `bzr launchpad-login thumper`
<thumper> Then you can push directly to launchpad using `bzr push lp:~thumper/gnuhello/my-branch` which is somewhat shorter
<thumper> <Solarion> QUESTION: are there plugins for git, hg, etc. planned for LP integration?
<thumper> before we could look at integrating them, they need to be able to handle incremental imports
<thumper> but yes, we are considering them
<thumper> The push to an lp scheme url require bzr 1.1 I think
<thumper> QUESTION: by "bazaar" you mean "bazaar-ng", right?  ;)
<thumper> bazaar-ng is an old term that has been superseded
<thumper> :-)
<thumper> there is quite a history with the tool
<thumper> There was an older bazaar with the command 'baz'
<thumper> which was replaced by Bazaar-NG
<thumper> which then took over the name
<thumper> so we don't call it Bazaar-NG any more, just Bazaar
<thumper> BTW if you are wanting the latest bzr, use the Bazaar developers PPA (https://launchpad.net/~bzr/+archive)
<thumper> Branches in Launchpad are identified by a tripartite name, the owner of the branch, the project, and the branch name these three parts need to be unique in Launchpad
<thumper> Branches can be owned by individuals, like you and me, or by teams, such as bzr (https://launchpad.net/~bzr) or mailman-coders (https://launchpad.net/~mailman-coders)
<thumper> When a branch is owned by a team, any active member of that team can push to that branch to update it (providing it is not mirrored from elsewhere)
<thumper> Why put branches on Launchpad I hear you say?
 * thumper hits the end of his pre-prepared notes 
<thumper> Firstly it makes you code available to others
<thumper> since bzr is a distributed version control system, your commits for your work are local
<thumper> until you make them available to other, people can't merge them
<thumper> (bundles and merge-directives aside)
<thumper> and as of Launchpad 1.2.2 you'll get karma for registering brances :)
<thumper> You are able to link branches to bugs and blueprints to show intent
<thumper> branches linked to bugs indicate that the branch will fix, or does fix the bug
<thumper> branch linked to a blueprint indicate that the branch does or will implement the feature
<thumper> <Picklesworth> QUESTION: Are branches in bzr a neat way to submit patches, a way of different people working on different chunks of project, or both, or neither?
<thumper> Picklesworth: you've hit the nail on the head with that one
<thumper> that is exactly the intent
<thumper> with traditional centralised source control systems you need commit rights to write to the central repository
<thumper> like with CVS and Subversion
<thumper> with bzr you can make your own branch
<thumper> commit with useful messages
<thumper> and there is a tracability there
<thumper> you can make the branch available for the core developers
<steffen_> cool!
<thumper> and if the like your change, they can merge your branch in
<thumper> which keeps the attribution to the original author, commit message, complete history et al
<thumper> <Solarion> QUESTION: given that, what's the point of bundles?
<thumper> bundles are the ability to send bzr revisions (your work) to people using email
<thumper> bundles have been superseded by bzr merge-directives which contains additional meta-data
<thumper> <Solarion> QUESTION: Given that a big aim of LP is to promote coordination and collaboration in FOSS, what are you doing to interoperate with the aforementioned source-forge alikes?
<thumper> Launchpad has the ability to have bug-watches on the other systems to where the primary bug tracker is elsewhere
<thumper> Launchpad can also import the code from CVS or Subversion to make it available to be used in the way mentioned above
<thumper> QUESTION: how does LP handle (write) permissions?  Can you give a project member access to a portion of the branch, or is it all/nothing?
<thumper> No you cannot give access to portions of a branch
<thumper> that is limited by the bzr tool
<thumper> however there are other options
<thumper> projects like zope have recently broken up the large source tree into many small ones
<thumper> this allows them to have fine grained control over permissions
<thumper> Launchpad controls write access to branches through the owner of the branch
<thumper> if the owner is a team, then the team can write to the branch
<thumper> <Solarion> QUESTION: what sort of IM/voice/email/whiteboard/video capabilities does LP have?
<thumper> While this is somewhat off topic...
<thumper> Launchpad has email lists in beta test
<thumper> and many Launchpad elements have either whiteborads to leave comments on or can be commented on my any logged in user (like bugs)
<thumper> no video, im or voice right now
<thumper> <Solarion> QUESTION: any eclipse and emacs integration planned?
<thumper> there is an eclipse plug-in for bzr, but not launchpad at this time
<thumper> there is an api project in the works that will open up all you can do with Launchpad through the web ui to external developers
<thumper> but that is most likely still a few months off before parts start becoming available
<thumper> <db-keen> QUESTION: why doesn't launchpad allow getting bugs from an arbitrary gforge site since they all use the same soap interface
<thumper> db-keen: sorry, don't know the answer for that
<thumper> <Solarion> QUESTION: how does LP mesh with the debian system?  E.g. support for dch and friends, as discussed yesterday.
<thumper> Solarion: sorry, don't know that either
<thumper> <Solarion> QUESTION: what would you say the biggest limitations of LP are in terms of what you would like it to do and in terms of what its competitors do?
<thumper> Solarion: not enough time in the day
<Solarion> thumper: isn't that ubuntu bug #2?  ;)
<thumper> we have some really amazing things in the works
<thumper> <Solarion> QUESTION: how does bzr communicated with LP?
<thumper> bzr can talk to Launchpad using either SFTP or the bzr smart server (bzr+ssh)
<thumper> The SFTP is being deprecated (soon maybe) in favour of bzr+ssh due to the speed improvements that the smart server gives us
<thumper> <Solarion> QUESTION: what interfaces does LP provide for those wishing to integrate with it, e.g. with a gnome applet or something?
<thumper> Solarion: that'll be the afore mentioned API that's in the works
<thumper> <Solarion> QUESTION: so bzr's LP integration is just for dealing with branches, not bugs or whatever?
<thumper> bzr has an option on commit to say --fixes
<thumper> I think the option looks something like `bzr commit -m "Fixed foo" --fixes=lp:1234`
<thumper> when Launchpad scans this revision it creates the link between the bug and the branch
<thumper> we are considering how to determine other think like actually updating the bug task status
<R1CHARD> alo
<thumper> but you have the question of what is fix committed and what is fix released in the DVCS world
<thumper> is a bug fix committed when there is a fix on *some* branch, or is it fix committed when it is on trunk?
<thumper> for these reasons, we haven't yet hooked that bit up
<thumper> now for some new interesting developments
<thumper> <jsauer> QUESTION: Is it planned that project can host their websites on LP?
<thumper> yes it is planned, but I can't give an ETA right now
<thumper> another way to show intent in Launchpad is the "Propose for merging"
<thumper> when you have a branch associated with a project in Launchpad, you can say that it is to be merged into another branch
<thumper> the default option is to be merged into the development focus branch, but you can specify any branch for the project as a target
<thumper> this will create a link between the two branches
<thumper> initially this link has a "Work in progress" state
<thumper> You can update this to "Needs review" when it is ready
<thumper> here is where we are linking in the new code review feature
<thumper> this is work in development
<thumper> well the code review feature is
<thumper> a person who is in the owner team of the target branch can approve or reject the proposal to merge
<thumper> and here is were we get to more work in development...
<thumper> soon you'll be able to queue up approved proposals
<thumper> and there will be a robot (read some magic script) that'll talk to launchpad
<thumper> get the branch at the head of the queue
<thumper> merge the source into the target
<thumper> run the tests (just like PQM)
<thumper> and push the resulting branch to Launchpad
<thumper> PQM is a bzr tool
<thumper> PQM stands for "Patch Queue Manager"
<thumper> however now it deals with branches
<thumper> PQM uses email to manage the queue, so you email it to tell it to merge something
<thumper> we are going to use the same central code, but use launchpad to control the queue rather than email
<thumper> <Mirrado> QUESTION: Is it planned to include in LP a resource for project management in the shape of Planner or MS Project?
<thumper> Mirrado: yes that is planned
<thumper> although I'm not sure exactly what is planned
<thumper> it has been mentioned that we'd like some more detail along that front
<thumper> so, any other questions now?
<thumper> <db-keen> QUESTION: Ohloh recently released their code analysis code http://labs.ohloh.net/ohcount/, is that sort of thing expected to be in launchpad?
<thumper> db-keen: maybe is all I can say right now
<thumper> I don't think we have any definite plans right now
<jsauer> aso
<thumper> The main thing we are trying to do is make it easier for people to collaborate on code through Launchpad
<thumper> We want Launchpad to be a place where people can get code for (almost) any project
<thumper> through the `bzr branch lp:some-project`
<thumper> <Solarion> QUESTION: how can LP help with dependency tracking? or autotools integration
<thumper> Solarion: I don't think we have anything there, and to be honest I don't really know how we'd model it
<thumper> <Mirrado> QUESTION: Through LP is any way to get metrics about code hosted on bzr?
<thumper> Mirrado: what sort of metrics are you after?
<thumper> but the answer right now is no
<thumper> the only thing we show right now is how many branches there are
<thumper> not what's inside them
<thumper> <eddyMul> QUESTION: If I want to migrate a project from Trac to Launchpad, how challenging of a task is it?
<thumper> eddyMul: I guess it depends on how much you want to take with you
<thumper> eddyMul: I think there are bug importers around but worthwhile asking on #launchpad
<thumper> FYI most of the LP bug developers are in the EU timezone
<thumper> if you have other questions you think of later, I'm always around in #launchpad
<thumper> so feel free to ping me, and if I'm not around, I'll get to it when I get back
<thumper> <eddyMul> QUESTION: came in late, but are there any license restriction w.r.t. code hosted in LP?
<thumper> Whey you register a project in launchpad, you tell launchpad which licence it uses
<thumper> eddyMul: does that answer your question?
<thumper> <eddyMul> (what source code license are "hostable"?)
<eddyMul> thumper: I've never registered a project before... but I assume I'll be presented w/ a list of licenses.... What if my license is not there?
<thumper> there is an other box
<thumper> any open source code is hostable on launchpad
<thumper> we have around 2.5 minutes left
<thumper> any last requests?
<eddyMul> thumper: does LP support multi-licensed software? (e.g. Mozilla)
<thumper> You could look to see what http://launchpad.net/firefox says
<eddyMul> thumper: Licenses: None specified.   :)
<thumper> :)
<thumper> so, that's a wrap
<Picklesworth> thumper: Thank you! This was really informative
<thumper> dholbach: back to you
<Solarion> thumper: thanks
<dholbach> thanks a lot thumper for this great session!
<eddyMul> thanx, thumper
<Mirrado> <thumper> code branches, bugs over time, bugs over release cycle, commits over release cycle, lines of code over project life time, etc
<barcc> thanks
<jsauer> thanks thumper
 * nxvl dances 
<nxvl> \o> <o> \o/ <o/ \o>
<thumper> Mirrado: some of those are there, more are planned
<Mirrado> Thanks thumper
<dholbach> next up is MOTU Contributor nxvl, also known as Nicolas ValcÃ¡rcel :-)
<nxvl> dholbach: thnx
<dholbach> He will talk about First Steps On Contributing (MOTU/TODO & MOTU/TODO/Bugs)
<dholbach> enjoy the session :-)
 * nxvl waves
<nxvl> Ok, so you want to become a MOTU and start developing for ubuntu?
<nxvl> There are many ways to start and many things to do
<nxvl> sometimes it's hard to find bugs to work and also the places where they are
<nxvl> i will try to show you the places where you can find them and how to work with them
<nxvl> this will not be a technical talk, so i will not cover packaging aspects
<nxvl> but if you have questions about packaging feel free to ask them
<nxvl> So, let's start
<nxvl> You want to become a MOTU?
<InsClusoe> Yes.
<nxvl> raise your hans if answer is yes
<eddyMul> yes
<Iulian> Yes
<Solarion> surewhynot
<dholbach> party on! :-)
<nxvl> ok
<nxvl> The first place you need to read is https://wiki.ubuntu.com/MOTU/GettingStarted
<nxvl> which has links to the most needed documents you need to read
 * dustinlange raises hands
<jsauer> yeah
<nxvl> and other usefull places to learn how to packages, the MOTU process and so on
<nxvl> Daniel have gave a talk about the MOTU process earlier today
<nxvl> if you missed it you can find the log here -> https://wiki.ubuntu.com/MeetingLogs/devweek0802/Process2
<nxvl> the most important of those documents is the Packaging Guide
<nxvl> https://wiki.ubuntu.com/PackagingGuide
<Mirrado> Yes
<nxvl> in this document you can find how the deb packages are done
<nxvl> how you can debianize a package which isn't included on debian/ubuntu already
<nxvl> how to patch the package to include bug fixes and new features
<nxvl> and all what you need to become a packager
<nxvl> If you are interested on packaging new stuff to fully understand the packaging process
<nxvl> you can take a look here -> https://edge.launchpad.net/ubuntu/+bugs?field.tag=needs-packaging
<nxvl> where you can find all the request of others to package new stuff so it can be included in ubuntu
<nxvl> many of the reporters are the upstream developers
<nxvl> but, what is an upstream developer?
<nxvl> They are the developers of a project which package has been included in ubuntu
<nxvl> for example take gnome
<nxvl> the developers of the gnome software are the members of the Desktop Team
<nxvl> BUT the upstream developers are the members of Gnome project
<nxvl> So, if the reporter is the (one of the) upstream developer he/she can help you a lot as he/she knows the package well and can tell you how it builds, the dependencies and such things
<nxvl> those are really important things because they are needed by the .deb package to work, build and install
<nxvl> <eddyMul> QUESTION: if upstream already has a debian/ sub-directory in their code, how do we package it (can you talk more aboute "native" packages?)
<nxvl> eddyMul: good question
<nxvl> yes, it's called native packages
<nxvl> but you need to be carefull with them
<nxvl> somethimes they are packaged with the project policies, and not Ubuntu ones
<queke> o/
<nxvl> or packages for debian or another debian-derivate project
<nxvl> so it maybe don't work on ubuntu
<nxvl> if you test it and it works fine you have not much work to do
<nxvl> just package, test it and ask for someone to upload it
<nxvl> but as i said, be very carefull with that because they not always work on ubuntu
<nxvl> eddyMul: does it is clear now?
<nxvl> ok, let move on
<nxvl> <eddyMul> QUESTION: are the packaging tools smart enough to know that some parts of the debian/ is from orig.tar.gz, and some are from .diff.tar.gz...?
<nxvl> eddyMul: build tools doesn't work this way
<nxvl> when you first package something there is no diff.tar.gz
<nxvl> you only have a orig.tar.gz and then they create the diff.tar.gz
<nxvl> the diff.gz is not anything but a patch
<nxvl> which is applied to the source (extracted from orig.tar.gz) so in practical way yes, they are smarter enought
<nxvl>  QUESTION: what about versioning for these native debs?
<nxvl> it doesn change anythink
<eddyMul> nxvl: got it. thanx.
<nxvl> sorry
<nxvl> iÃ'm wrong it actually changes it
<nxvl> you don't need to use -XubuntuY part anymomre
<nxvl> just the upstream version number
<nxvl> so if it is 0.8
<nxvl> your ubuntu version is still 0.8 not 0.8-0ubuntu1
<nxvl> BUT if you made ubuntu changes to it, you need to version it on this way
<nxvl> ok now move on
<nxvl> One of the hardest part i found when i start
<nxvl> was to find the right bugs to start working with
<nxvl> you can look at are the bitesize bugs
<nxvl> you can fin them here -> https://edge.launchpad.net/ubuntu/+bugs?field.tag=bitesize
<nxvl> But what are those bitesize things?
<nxvl> They are bugs that you can fix easy
<nxvl> don't worry if it's not easy for you, take on count that you aren't familiar with packaging
<nxvl> but they are bugs of easy fixing where you can practice your packaging more that focusing on the fix
<nxvl> so they are a really good point to start with
<nxvl> on this packages the fixes are most of them simple ones
<nxvl> add somthing to the man pages, add some man pages and such easy things
<nxvl> so you can only break your head with the packaging part if the fix
<nxvl> Ok, you are having trouble and want someone to help you?
<nxvl> there is an option on LP called "Mentoring available" (yes, the light green button)
<nxvl> on this button (which on ubuntu LP page will take you to https://edge.launchpad.net/ubuntu/+mentoring)
<nxvl> you will find a list of bug reports which someone has offered to help new contributors with
<nxvl> so for example take Bug #174252
<nxvl> (https://bugs.edge.launchpad.net/ubuntu/+source/libungif4/+bug/174252)
<nxvl> you can see that in this bug sais "Mentors: Jonathan Riddell" near the white cross on the red background
<nxvl> that means that Jonathan is offering his help on this bug, so you can work on it and ping him for help
<Riddell> moi?
<nxvl> <jsauer> QUESTION: Does this bitesize fixing mean to make a new package or to fix a bug inside the software/project?
<nxvl> jsauer: fix/edit an existing one
<nxvl> jsauer: those are real bug reports that some developers mark as bitesize as they are easy to fix ones
<nxvl> that means that some user report it and ask us to change something but the developers realize it was easy to fix, so they mark them for the new ones :D
<nxvl> <eddyMul> QUESTION: man pages: where can I find a guide to writing man pages?
<jsauer> nxvl: ok now I understand, thanks
<nxvl> sorry i had connection problems
<nxvl> eddyMul: i not sure, but there is a graphical tool for it
<nxvl> itÃ's called manedit IIRC
<nxvl> <InsClusoe> QUESTION: If I understood correctly, unless there is a mentoring available sign in the bug, we are pretty much on our own?
<nxvl> InsClusoe: not that drastic
<nxvl> you can always as on #ubuntu-motu or on the Mailing list
<Solarion> looks good for manpages  ---->  http://www.schweikhardt.net/man_page_howto.html
<nxvl> BUT the mentoring available means that you will have someone taking care of the fix with you as a plus
<InsClusoe> nxvl: hmm..  thanks.
<nxvl> but you can always ask in the IRC or the ML or in the LP bug report also
<nxvl> <eddyMul> QUESTION: manpages: is there a "documentation" guide to it, where it talks about what should be in a man page (how detailed should the man page be, etc)
<nxvl> eddyMul: i really don't know
<nxvl> eddyMul: i'm not a man pages expert, but they should be something like that
<nxvl> ok
<nxvl> let's move on
<nxvl> There is also a Big TODO list for MOTU
<nxvl> you can find it here -> https://wiki.ubuntu.com/MOTU/TODO
<nxvl> you can find there a lot of task to do, most of them bitesize ones
<nxvl> also there is a problem i don't know why ubuntuwire is down
<nxvl> but i hope it to be up soon
<nxvl> you can find a lot of easy to resolve bug reports in there
<nxvl> there are debian bugs that maybe are also present in ubuntu
<nxvl> and we need people to check if they are also present
<nxvl> and if it is so try to fix them or include/adapt the debian patch which may be on BTS
<nxvl> also you can see on the bottom of the TODO wiki page a table with some bugs
<nxvl> there are some unchecked bugs to work with
<nxvl> the first table are bitesize ones
<nxvl> so you can alwas take a look and work with them
<nxvl> the table is updated every week (monday ?) so there is always something new
<nxvl> also most of them only need a triager
<nxvl> so don't be scared by hard bugs, you will help a lot changing their status and/or asking for more information from the reporter
<nxvl> so that the developers can fix them easy
<nxvl> any questions so far?
<nxvl> ok
<nxvl> it seems there is no questions
<nxvl> so
<nxvl> let's move to TODO/BUGS
<nxvl> So, you want to contribute but you don't feel you are ready for edit code and develop bug fixings?
<nxvl> you can find som other ways to contribute with bug reports
<nxvl> here -> https://wiki.ubuntu.com/MOTU/TODO/Bugs
<nxvl> (yes, if you want you can also fix those bugs)
<nxvl> in those bug "categories"
<nxvl> there are some that only need to check if the status if correct
<nxvl> if it is still present
<nxvl> or if the work in progress is actually in progress and has not been losed on his way
<nxvl> it's called triage, you only need to take a look at bug reports and ask for information
<nxvl> find the package to which a bug report belongs
<nxvl> tag it or mark it with the correct Status
<nxvl> and some other which are already fixed but the fix isn't included yet
<nxvl> that means that someone has included a patch, but hasn't package it
<nxvl> (yes this happends, my first contribution was a patch of the source which i didn't package)
<nxvl> so you only need to deal with packaging
<nxvl> other way to contribute is to ping upstream
<nxvl> you need to keep in mind that upstream knows theirs packages well
<nxvl> so they will maybe find the best solutions for bugs
<nxvl> so you can not fix the bug but report back to upstream
<nxvl> or to the debian maintainer by filling a bug on BTS
<nxvl> and this way you help to resolve a bug without coding nothing
<nxvl> also you need to coordinate always with upstream because maybe they have already fix this bug or they are working on some patches for it
<nxvl> so try to avoid the duplicity of efforts and ping them
<nxvl> LP has also an option to link upstream bug reports to the LP one
<nxvl> please use it as much as you can so it's easier to find if upstream has something to say about the report
<nxvl> but be carefull, don't report everything, there are some reports of ubuntu and nothing else that ubuntu
<nxvl> so be carefull and check if it's also present on upstream, it may not be
<nxvl> ok
<nxvl> is there any questions?
<nxvl> or something you want to know i haven't talk about?
<nxvl> are you alive?
 * eddyMul thinks he's alive
<nxvl> heh now i feel less lonely :D
<Iulian> I think this one is pretty easy to understand.
<Iulian> So, no questions from me.
<InsClusoe> am here as well.... Picked up a bite sized bug.  :-)
<Iulian> Heh, already?
<Iulian> That's great!
<nxvl> ok
<nxvl> sorry i was having conection problems again
<nxvl> mi ISP is not as good as it should be
<Iulian> nxvl: Change it then.
<nxvl> InsClusoe: Great!
<nxvl> Iulian: i at work, so i can't
<nxvl> ok
<nxvl> so let's move to the mentoring program
<nxvl> i thing i have already give you a lot of resource to work with
<nxvl> when you feel you are a little more involved you can ask for a mentor
<nxvl> (see https://wiki.ubuntu.com/MOTU/Mentoring)
<nxvl> who will help you on your way to become a MOTU
<nxvl> learn more about packaging
<nxvl> and introduce you to the community
<nxvl> BUT they won't think for you
<nxvl> the will point you to documentation
<nxvl> ask you to reach a goals and/or make some task
<nxvl> and guide your way
<nxvl> also he/she will not be your only resource of help
<nxvl> you can always attend to the Q&A sessions, or packaging 101 that dholbach always do
<nxvl> or ask on the #ubuntu-motu IRC channel
<nxvl> there is always someone awake that wants to help
<nxvl> don't feel scare of asking
<nxvl> also you can always use the Mailling lists
<nxvl> or put your questions on the comments of the LP bug reports
<nxvl> there is always someone checking them
<nxvl> well, now i have made my patch, how do i get it uploaded?
<nxvl> there is a sponsoring process and team
<nxvl> you only need to suscribe the ubuntu-universe-sponsors or ubuntu-main-sponsors and wait for them to check it and upload them
<nxvl> but be patient, keep in mind that all (most?) of us are voluntaries
<nxvl> and have other works and things to do
<nxvl> not only ubuntu developing
<nxvl> So i think this is it, thanks for comming and have a nice hack
<nxvl> any one has some last questions?
<nxvl> or comments?
<dustinlange> how much time do you spend on being a MOTU?
<nxvl> spend is hours in a day or as in time i'm involved?
<nxvl> as in*
<dustinlange> in hours a week or so - or whatever makes sense to you ;-)
<nxvl> heh
<nxvl> mm
<nxvl> depend on the week
<nxvl> i have a full time work
<nxvl> and MOTU is just a free time hobbie if want to call it so
<nxvl> there have been entirely weeks i haven't even check my mail
<nxvl> and some other i spend long time
<nxvl> but is up to you
<dustinlange> so you can decide how much time you want to spend... ok, thank you
<nxvl> yep, this is a free time job
<nxvl> no ones tell you how much time you need to spend
<InsClusoe> This might interest some ppl.. https://wiki.ubuntu.com/5-A-Day
<nxvl> but if you say you will do something you need to do it (or try to), as you gave your word
<nxvl> ok
<nxvl> we have 2 minutres left
<nxvl> and seb128 has already come to talk
<nxvl> any last question?
<seb128> nxvl: feel free to finish, I'm not in a hurry ;-)
<nxvl> seb128: i have not much more to say :D
<nxvl> seb128: just asking questions
<nxvl> ok, so no one has more cuestions
<nxvl> i think this is it
 * nxvl HUGS everyone
 * nxvl HUGS everyone
<nxvl> thanks for comming! i hope it helps you
<nxvl> oh! i was forgoting
<dustinlange> nxvl, thank you!
<nxvl> the MOST important thing to become a MOTU and be involved in Ubuntu is to HUG everyone
<nxvl> we are HUGGY Developers :D
<nxvl> now it's seb128 time
<Iulian> Aww, thanks nxvl
<nxvl> he's one of our best Desktop hackers
<nxvl> and his kicking as in the desktop team
<nxvl> so don't miss his talke
 * nxvl waves on seb128 
<seb128> thanks nxvl
<seb128> hello everybody
<Picklesworth> Hm... Hello :)
<seb128> I'm Sebastien Bacher and I'm working in the Ubuntu Desktop Team
<seb128> I'll start by presenting the team, what we do and how you can contribute
<seb128> and then we can do questions and answers
<seb128>  
<seb128> First, where you can find desktop teams members or read about what the team is doing:
<seb128> - #ubuntu-desktop on freenode
<seb128> that's the chan where we hang and discuss work we are doing etc
<seb128> - ubuntu-desktop@lists.ubuntu.com
<seb128> IRC is good for quick question, and discussion but the mailing list is also a good place to discuss changes, bugs, et
<seb128> etc
<seb128> especially than everybody doesn't use IRC
<seb128> - https://wiki.ubuntu.com/DesktopTeam
<seb128> that's the wiki section concerning the team
<seb128> we have details about the team goals and the work we are doing there
<seb128> we use https://wiki.ubuntu.com/DesktopTeam/TODO for keeping track of what is being currectly working and what we would like to get done for hardy, etc
<seb128> - the desktop-bugs team on launchpad for bug fixing and triaging
<seb128> the team has a mailing list which receives all the desktop bugs
<seb128> if you want to look at the bugs which would be nice to fix for hardy those are assigned to the team and milestone ubuntu-8.04
<seb128> if you have issue you think should be adressed for the coming lts feel free to discuss with us to get those milestoned
<seb128> - ubuntu-desktop team on launchpad
<seb128> that team is not really used yet
<seb128> but we plan to move packaging to bzr (we did experiment but there it still some work to get that as smooth as apt-get update, change, upload)
<seb128> and the team members will have access to the packaging
<seb128> so the membership is limited to known contributors
<seb128>  
<seb128> So what is our mission?
<seb128> basically we try to provide the best desktop experience
<seb128> for that we:
<seb128> - keep the desktop components uptodate
<seb128> the ubuntu team is pretty small and most of the code comes from upstream
<seb128> we try to make sure their code is available in the current versions and as easy to use that it can be
<seb128> - work on the usability of our existing desktop and on developing innovating new interface concepts
<seb128> we have team members working on that
<seb128> their goal is basically to determine what changes could improve the user desktop experience
<seb128> and to discuss, design and implement those changes
<seb128> the team was quite small until recently and we didn't do a lot of those
<seb128> but that's changing ;-)
<seb128> - triage and fix desktops bug
<seb128> we get a lot of bugs
<seb128> some are user question and redirected to the answer tracker
<seb128> some are upstream issues and we try to get all the useful details and send them to the upstream bug tracker
<seb128> some are ubuntu bugs and we try to fix those
<seb128> we also try to help upstream fixing issues when possible
<seb128>  
<seb128> how we are organized?
<seb128> we use IRC usually for discussion
<seb128> that's because most of the people and that's a quick way
<seb128> but we also use the mail list and encourage people to use it too when possible, because there is lot of people not using IRC and giving some activity to the list is good to get new people to participate
<seb128> anybody can help on bug triage, just go on launchpad and look at the desktop bugs if you want
<seb128> https://bugs.launchpad.net/~desktop-bugs/ has the list of bugs
<seb128> there is a lot of those listed there
<seb128> usually those which need triaging are those in the New state
<seb128> you might prefer the https://bugs.launchpad.net/~desktop-bugs/+packagebugs view
<seb128> that one list stats by packages
<seb128> if you have any question feel free to ask on #ubuntu-bugs or #ubuntu-desktop
<seb128>  
<seb128> contributors are also welcome to help updating packages
<seb128> we use https://wiki.ubuntu.com/DesktopTeam/TODO for that
<seb128> we claim packages update we are working on there
<seb128> the page is being redesigned right now so there is a list without a lot of things listed
<seb128> but the goal is to let people know which packages are being actively maintained and which ones are not
<seb128> if you have special interest in a package and want to be the contact for it let we know ;-)
<seb128>  
<seb128> we are also trying to move the packaging to bzr
<seb128> there is still some usability issue there
<seb128> but eventually we will manage to do that soon and that will make contributors and reviewer job easier
<seb128>  
<seb128> you are also welcome to help fixing issues
<seb128> if you submit a patch on a bug you can subscribe the ubuntu-main-sponsors team (or universe if the package is there)
<seb128> we will try to do our best to review the contribution quickly ;-)
<seb128> and again feel free to ask on IRC, the list or launchpad if you have any question on a bug or if you are trying to work on something and are not sure and what to do
<seb128>  
<seb128> if you have idea on what changes we could do to improve the desktop experience
<seb128> either small things we can change for hardy
<seb128> or new inovation for the next cycles
<seb128> you can also join IRC or the list and discuss those
<seb128> we always welcome ideas and discussions ;-)
<seb128>  
<seb128> that's about it for what the team is doing
<seb128> so if you have questions now feel free to ask in #ubuntu-classroom-chat
<seb128> I'll pick questions there and reply on this chan
<seb128> hum
<seb128> no question then?
<seb128> <InsClusoe> QUESTION: Will we have a tablet edition like Windows XP does?
<seb128> I don't think there is anything table specific planned no
<seb128> the mobile team is working on a mobile edition
<seb128> I don't know if that's far from what is required on a tablet device though
<seb128> might be a good project for a team of people interested in tablets though ;-)
<InsClusoe> Hmm... ok.
<InsClusoe> :-)
<seb128> I know we have applications like xournal which let you take notes on a tablet
<seb128> and I've seen people using Ubuntu on a tablet
<seb128> not sure if there is a real need for a specific edition though ;-)
<seb128>  
<seb128> next? ;-)
<seb128> <awalton__> QUESTION: is there a policy for correct units of measure for Ubuntu applications? specifically KiB vs KB and the like?
<seb128> hum hum
<seb128> hum hum hum
<seb128> not really ;-)
<seb128> we basically use whatever GNOME is using right now
<awalton__> I guess more specifically, should there be?
<seb128> that's a controversial topic I think
<awalton__> or is that better a discussion for the list/later?
<seb128> there is quite some people who are reluctant to use the new units
<seb128> I think there was a discussion on #ubuntu-devel some time ago
<seb128> you can look in the archives
<awalton__> will do. thank you.
<seb128> and it has been discussed upstream on the gnome-vfs bugzilla
<seb128> but none reached a consensus I think
<seb128>  
<seb128> <mruiz> QUESTION: How is the relationship with Debian desktop team? How is the procedure to update packages: wait for Debian (and request a sync) or just do it?
<seb128> that's a good question ;-)
<mruiz> :-)
<seb128> we try to be in sync with Debian when possible
<seb128> we didn't do an optimal job there until now I think
<seb128> but we have quite some people in the ubuntu team which are also in debian pkg-gnome
<seb128> and some active new people who are trying to get packages in sync whenever it's possible
<seb128> lool, pochu and slomo are good example and have been doing great work there ;-)
<seb128> we try now to keep the platform packages in sync
<seb128> desktop applications are not that easy because we often have changes (like launchpad integration) and debian doesn't has the ressources to deal with unstable series packaging
<seb128> mruiz: does that reply to the question?
<seb128> we welcome people who try to work with debian to lower the delta ;-)
<seb128>  
<seb128> <steffen_> QUESTION: Will there be a no services-on-on-default install-option ;-) for Ubuntu-lite in the future. kind like openbsd does? Will there be "hardened" kernels?
<mruiz> seb128, thanks ;-)
<seb128> no idea about that, that's not really an ubuntu-desktop thing
<seb128> that looks rather an installer option or a derivative thing
<seb128> I don't know about any work being done in this direction
<seb128> but we have this "no open port" policy by default
<seb128> which is slightly modified for avahi nowadays
<seb128> there is an ubuntu-hardened team though, you might want to bring the subject there
<seb128>  
<seb128> next?
<seb128> <mruiz> QUESTION: Does Desktop team have a mentoring plan to encourage new members (packagers)?
<seb128> nothing desktop specific no
<seb128> people usually starts in the MOTU land
<seb128> we welcome people starting by contributing on desktop packages and are happy to reply to their questions too
<seb128> we have sponsor teams and there is a mentoring project too
<seb128> but for most of the packaging there is nothing desktop specific and no need to have a special effort there I think
<seb128>  
<seb128> next?
<seb128> no other question?
<seb128> ok, so it seems there is no other questions
<seb128> thank you everybody
<mruiz> thanks seb128
<daishujin> Thank you!
<awalton__> thank you seb128.
<seb128> anybody interested in joining the team maybe? ;-)
 * ember hugs seb128
<awalton__> +1 from me seb.
<seb128> ah, another question
<seb128> <InsClusoe> QUESTION: How is usability measured? Like for example, take the shutdown dialog. When you decide that the user is getting swamped with too many confusing choices... maybe all he needs is 3 or 4 simple buttons most of the time?
<seb128> InsClusoe: usually we discuss changes at UDS, write specs, get those approved and implement the changes
<seb128> the process is open and you are welcome to participate in discussions or comment on the spec, etc
<seb128> speaking about this dialog, that is being redesigned
<seb128> the spec is listed on https://wiki.ubuntu.com/DesktopTeam/Specs
<InsClusoe> seb128: Great.. Thanks. Can't wait to see the new dialog. Apologies. I didn't notice that you had closed the session and popped my question.
<seb128> that's likely something that will be worked next cycle
<seb128> InsClusoe: I didn't really close, we still have some minutes, we just ran out of questions ;-)
<seb128>  
<seb128> <snewland> QUESTION to you actively solicit user input for these types of questions?
<seb128> having users opinion is always something useful ;-)
<seb128> the distribution is for users
<seb128> but better to have constructive comments
<seb128> one way users comment about those specification is usually by adding comments on the wiki pages
<snewland> but do you ACTIVELY seek it or just hope it happens?
<seb128> you can also write to the list if you have a specific concern
<seb128> the process is open, we mail about specifications, and let know that comments are welcome
<seb128> we do go pinging people to have their opinion though
<seb128> *don't*
<seb128> do you think we could do things better in this perspective?
<seb128> *comments are welcome* ;-)
<seb128>  
<seb128> <daishujin> QUESTION: Along the same lines, do you guys do any usability studies?
<seb128>  
<seb128> as said the team was pretty small until now and we didn't really have ressources for that
<seb128> now we have people working on usability in the team
<daishujin> so there are plans for this the?
<daishujin> s/the/then/
<seb128> yes
<seb128> in the limit of what we can do with the ressources we have
<hltpyldr> Sorry to be a late arrival.  When do these sessions occur on #ubuntu-classroom?  Are they geared towards packaging?  Will these sessions continue through the week, or for today only?  I am new to #ubuntu-classroom.  Thanks!
<seb128> hltpyldr: you have those informations in the topic I think
<seb128> ok
<hltpyldr> thank you.
<seb128> the session slot is over
<seb128> thanks everybody
<seb128> next on the schedule is "SRU/Security Updates"
<DktrKranz> here we are :)
<emgent> :D
<DktrKranz> Hello everybody, you brave souls interested in post-release madness!
<DktrKranz> I am Luca Falavigna, a volunteer MOTU and SRU enthusiast.
<DktrKranz> as seb128 just said, now we speak about SRU and Security Updates
<DktrKranz> Now I'll introduce briefly what SRUs are and leave room for some questions before talking about the process behind Ubuntu updates.
<DktrKranz> After that, William Grant (aka Fujitsu) will talk about security updates.
 * Fujitsu waves.
<DktrKranz> SRU is the acronym for Stable Release Updates.
<DktrKranz> These updates are meant to fix non security-related bugs affecting supported Ubuntu releases (currently they are Dapper, Edgy, Feisty and Gutsy).
<DktrKranz> Common examples include packages which fail to build from source, have unmet dependencies or crasher bugs, but has no direct security impact (such as
<DktrKranz> privilege escalation or buffer overflows).
<DktrKranz> Since stable releases are used by a much wider audience than development ones, additional care should be involved in the process, but it is quite simple anyway :)
<DktrKranz> Starting point is https://wiki.ubuntu.com/StableReleaseUpdates, where you will find every informations related to SRUs.
<DktrKranz> Please everybody have a look at it :)
<DktrKranz> Not every bit is useful for common users/developers, basically just the first half is ("Why", "When" and "How" up to point No. 2).
<DktrKranz> If you haven't questions, let's move to the playground, then
<DktrKranz> When a bug is SRU-worthy? It is described in "When" section in https://wiki.ubuntu.com/StableReleaseUpdates.
<DktrKranz> If your favourite app crashes or it is uninstallable, a SRU will be granted :)
<DktrKranz> There are many other cases, and they are listed in the above page. Have a good look at it.
<DktrKranz> ~motu-sru team is responsible to approve a SRU candidates for Universe packages, ~ubuntu-sru does the same for main packages.
<DktrKranz> If you want a bug to be reviewed, just subscribe the right team and provide the informations required in "How", "Propose" section.
<DktrKranz> The most important ones you need to provide are:
<DktrKranz> 1) A good TEST CASE, placed into the bug description field, stating how to reproduce the bug (step by step) and the expected behaviour.
<DktrKranz> 2) Explain if (and how) the problem has been fixed into the development version (Hardy, at the moment), this way we avoid regressions.
<DktrKranz> Usually, we don't upload SRU candidates if development version has not been fixed
<DktrKranz> 3) Attach a candidate debdiff for review. It must contain code to fix the given bug *only*, no additional (or cosmetic) changes are allowed unless approved in another SRU request.
<DktrKranz> When preparing debdiffs, the most difficult part of the process is writing the changelog entry. I've seen several SRU candidates rejected due to inaccuracies in changelog, so additional care is a must here :)
<DktrKranz> A good changelog entry must have these requisites:
<DktrKranz> 1) Point to the corresponding Launchpad bug (LP: #xxxxxx). *Always* remember to double-check it to be correct.
<DktrKranz> 2) Target must always be "$release-proposed". "$release" or "$release-updates" are not allowed. For instance, if you want to prepare a SRU for Gutsy, target must be gutsy-proposed. You can use "dch -D $release-proposed" command to set it automatically.
<DktrKranz> 3) Version must be set in order to avoid conflicts with past, current or future versions of the package.
<DktrKranz> Versioning scheme is a bit different from the one you usually see in development releases, it is not complex but has several variants to avoid conflicts (as mentioned above).
<DktrKranz> A couple of examples now:
<DktrKranz> foo_0.1-1ubuntu1 would become foo_0.1-1ubuntu1.1 (we add ".1" to the existing version)
<DktrKranz> bar_0.2-1 would become bar_0.2-1ubuntu0.1 (ubuntu0.1 is used to avoid conflicts with a hypotetical bar_0.2-1ubuntu1 in a newer release).
<DktrKranz> If you have doubts about which version to use, you can ask ~motu-sru or ~ubuntu-sru team members for an advice, they will be happy to answer :)
<DktrKranz> Ok, let's stop here, feel free to ask if you have questions.
<DktrKranz> It seems not, so let's move on.
<DktrKranz> If you are not developers, you can help to check if a SRU candidate is good.
<DktrKranz> http://people.ubuntu.com/~ubuntu-archive/pending-sru.html is a wonderful place to start. It lists SRU candidates still lying in -proposed and which require verification from ~sru-verification team.
<DktrKranz> Again, please everybody have a look at it.
<DktrKranz> As users, you can pick up one of the package listed there and try to test if it works for you.
<DktrKranz> Just follow instruction given in TEST CASE (that's why a good TEST CASE is required: it speeds up verification phase) and attach your results in the corresponding bug report.
<DktrKranz> Your reports will improve overall quality of the SRU process, so a huge thank you for your precious comments :)
<DktrKranz> If you have questions, please fire them.
<DktrKranz> After that, Fujitsu will discuss about security updates.
<emgent> :)
<DktrKranz> <InsClusoe> DktrKranz: Looking at feisty on that page. All updates appear to be language packs. How do we test them? The launchpad page doesn't list the bugs fixed in those updates or details of changes made.
<DktrKranz> You are right, langpacks have been recently uploaded
<DktrKranz> I think they do not receive special verification, since it is a procedure put in place by our archive-admins
<DktrKranz> They are regularly scheduled for translation updates
<DktrKranz> <InsClusoe> QUESTION: What are the changes we should look for if we try these translation updates on our machines? Where are these listed?
<DktrKranz> Changes should be related to translation itself
<DktrKranz> Typos, untraslated strings, and so on. Log is kept in Rosetta.
<InsClusoe> ok.. I was looking for the word 'Rosetta' then.. :-)
<DktrKranz> Rosetta is Launchpad translation platform
<DktrKranz> https://translations.launchpad.net/
<DktrKranz> I'm not comfortable with Rosetta enough to detail how it works, it could be material for an interesting #ubuntu-classroom session :)
<InsClusoe> DktrKranz: Thanks...
<DktrKranz> Fujitsu, audience is yours!
 * Fujitsu appears.
<Fujitsu> Well...
<Fujitsu> Security updates are pushed out to fix important security issues in supported Ubuntu releases.
<Fujitsu> The preparation is very similar to SRUs, in that the changes must be absolutely minimal, and very well tested.
<Fujitsu> Unfortunately, the nature of security issues often means we need the update pushed out ASAP, so testing often can't be done as much as we'd like.
<Fujitsu> It's a messy job, but someone needs to do it, and we need as many hands on it as we can get.
<Fujitsu> The wiki page describing the procedure is at https://wiki.ubuntu.com/SecurityUpdateProcedures.
<Fujitsu> There are a couple of differences from SRUs, the main one being that there is no waiting period in -proposed (the packages don't go into -proposed at all), so no verification team.
<Fujitsu> A member of the Canonical security team reviews the patch, and publishes it immediately if it's deemed suitable.
<Fujitsu> This is another difference from the SRU procedure. Only the Canonical security team can upload to -security, so updates often block on them.
<Fujitsu> Of course, before we can fix issues, we need to identify and prioritise them.
<Fujitsu> We have the ubuntu-cve tracker for this, which reads the published list of CVEs, and allows us to mark which packages and Ubuntu releases are affected by each issue, if any.
<Fujitsu> It's quite a task to keep it up to date, unfortunately.
<Fujitsu> (it can be found at https://launchpad.net/ubuntu-cve)
<InsClusoe> Fujitsu: Broken link^?
<Fujitsu> Argh, true. ubuntu-cve-tracker, sorry.
<InsClusoe> np.. :-)
<Fujitsu> Versioning in security updates can be very hard to get right, as we normally use an identical scheme to that used in SRUs.
<Fujitsu> This means that unless very careful checking is done, SRUs can be accidentally reverted in security updates, or vice-versa.
<Fujitsu> Any questions?
<Fujitsu> < daishujin> QUESTION: Why use the same versioning scheme?
<Fujitsu> We need to maintain compatibility between the two versioning schemes so we can have SRUs upgrading over security updates (once the security update is integrated), and potentially vice-versa.
<Fujitsu> If we chose a radically different scheme, this would be much harder, and you'd end up with horrible hybrids in many packages by the end of a release's support cycle.
<Fujitsu> < daishujin> QUESTION: How often is this a problem?
<Fujitsu> Not very frequently, I don't believe, but I haven't got any numbers.
<Fujitsu> It's normally fairly easily resolvable, though it may require coordination with SRU teams to get an updated SRU out quickly.
<DktrKranz> pending-sru has "Superseded by -security" section which notes that.
<Fujitsu> Ah yes, forgot about that.
<Fujitsu> Well, that'd be the end, I guess... Any last-30-seconds questions?
<jsauer> Thanks, DktrKranz and Fujitsu
<DktrKranz> anytime :)
<DktrKranz> This is all for today. Hope to meet you here tomorrow!
 * InsClusoe thanks DktrKranz and Fujitsu for their time and effort.
<jsauer> rarely hugging after this session ;)
<eddyMul> jsauer: not true
 * eddyMul hugs jsauer
<eddyMul> :)
<jsauer> nice, ;)
<daishujin> see ya tomorrow guys
<eddyMul> wishing there's a /we IRC command. Then we can do "/we group hug"   :)
<InsClusoe> :-)
<joseee1985> test
<regel> test2
#ubuntu-classroom 2008-02-21
<dennda> Ah finally...
<dennda> Next Lesson in 01:53h?
<dennda> Is that correct?
<Unksi> in 2:53h
<dennda> oh, yes
<dennda> sorry
<Unksi> np
<warp10> Hi all!
<db-keen> warp10: hello, you're 01:28h early
<warp10> db-keen: indeed! But early is better then late, imho ;)
 * db-keen concedes (after all, he's been here for over 6 hours)
<warp10> LOL
<phoenix24> Is the firefox-session already completed ?
<asac> phoenix24: will start in 10 minutes
<phoenix24> this channel itself, I believe ?
<asac> yes
<phoenix24> Oh! asac, you'd be delivering the talk :)
<phoenix24> Nice to meet ye!
<asac> ;)
<asac> ok we will start in 5 minutes on firefox 3 extension packaging!!
<asac> maybe do the Prerequisites on https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions/Packaging now so you don't get distracted later on :)
<db-keen> asac: will questions be in #ubuntu-classroom-chat as usual?
<asac> db-keen: yes you can ask questions there
<asac> Hi all!
<daishujin> good morning!
<asac> Welcome to Ubuntu Developer Week and welcome to the firefox extension world ;)
<InsClusoe> asac:  Thank you..
<asac> i will give first some basic background and then will go on to a practicing part
<asac> lets get started
<asac> packaging extensions is a good starter task as the technical side is rather straight-forward.
<asac> However, nothing comes for free :-P and extensions also have a backdraft: the upstream world is quite different compared to other software we distribute.
<asac> One important backdraft is on the communication part with upstream
<asac> ffox extension upstreams usually don't care about properly releasing sources that include license information
<asac> Sometimes they often don't even have a homepage and don't release sources. Further, its sometimes even hard to find an appropriate upstream contact.
<asac> if we cannot find the required information we should not package it. we should rather contact the developers and ask them for clarifying licensing and so on
<asac> Thats why I created https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions
<asac> At that place we should collect the required information needed to decently maintain a package _before_ we start to package one.
<asac> So if you want an extension packaged (or want to package one), adding the required information on that page is required and comes handy later!
<asac> so much for the basics.
<asac> if you have any questions afterthis session, you can always ask on #ubuntu-mozillateam
<asac> ok, lets go for some practice ;)
<asac> please do the "Before you package an extension" section on https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions/Packaging
<asac> i'll wait a bit for those that have joined late to install the basics
<asac> its important that you need mozilla-devscript package from my ppa (see wiki page) :)
<asac> aeh mozilla-devscripts, sorry
<asac> this practice part will teach two ways of packaging ffox extensions; both using the new xpi.mk feature shipped by the new mozilla-devscripts
<asac> sorry: above should have read "please do the Prerequisites on https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions/Packaging"
<asac> any questions so far? any problems installing the packages?
<asac> or branching?
 * jetsaredim updating the sources.list
<asac> ok ... ill wait a few more minutes i guess :)
<jetsaredim> these bzr commands take a while
<asac> yes. thats known :) ... but should be pretty fast if you have bzr 1.0  or higher
<Grazieno> jetsaredim: yes
<barcc> ok
<asac> so ubufox.upstream will be our upstream source code we use to practice
<asac> we will produce a package called "myubufox" based on that :)
<asac> let me know when you are ready ;)
<Grazieno> asac: I'm ready...I think :)
<phoenix24> Ready!
<asac> yeah great.
<asac> so the first approach is to package .xpi files directly
<asac> we usually don't want to package .xpi files, but if upstream doesn't release proper sources, we can still do it
<asac> to produce an ubufox.xpi, please change to the ubufox.upstream directory and run
<asac> "sh build.sh"
<asac> now lets assume that thats the extension you found on the net that you want to package, we first have to create a proper orig.tar.gz out of it
<asac> lets assume that the package has version 0.1 ... then create a directory myubufox-0.1
<asac> and copy the ubufox.xpi into that directory
<asac> the name of the .xpi file doesn't matter much, so you can just keep it
<asac> just to ensure that you have the right directory layout, here its how it looks for me now: http://paste.ubuntu.com/4843/
<asac> if you are not yet there, let me know :)
<asac> ok ... next create an orig.tar.gz out of that
<asac>  tar cvzf myubufox_0.1.orig.tar.gz myubufox-0.1/
<Grazieno> asac: ok
<phoenix24> asac: ok!
<asac> the XPI.TEMPLATE you branched further above is a pretty good template and should work for a lot of extensions
<asac> so just copy the debian directory out of it into your myubufox-0.1 directory
<asac> like: cp -r XPI.TEMPLATE/debian myubufox-0.1/debian
<asac> my ubufox directory looks now like: http://paste.ubuntu.com/4845/
<phoenix24> yes!
<asac> ok lets look at the debian/rules ... at best open it in an editor
<asac> there are a few variables with some documentation on what they do. for basic .xpi based packages you should not need to change anything except the package name
<Grazieno> asac: phoenix24 ok!
<asac> MOZ_EXTENSION_PKG := example-extension => MOZ_EXTENSION_PKG := myubufox
<asac> for the second example later, we make use of MOZ_XPI_BUILD_COMMAND  as well, but for simple .xpi thats not needed
<asac> ok, upon request here the folder structure i pastebined above (for the logs)
<asac> $ find myubufox-0.1/
<asac> myubufox-0.1/
<asac> myubufox-0.1/debian
<asac> myubufox-0.1/debian/compat
<asac> myubufox-0.1/debian/rules
<asac> myubufox-0.1/debian/copyright
<asac> myubufox-0.1/debian/control
<asac> myubufox-0.1/debian/changelog
<asac> myubufox-0.1/ubufox.xpi
<asac> thats how it looked like before we started looking at the debian/rules file
<asac> btw, the magic in the rules file is the include include /usr/share/mozilla-devscripts/xpi.mk which makes everything else pretty trivial
<asac> you can look at that file after the session  if you are interested in makefile/cdbs wizardry ;) ... but it should not be required to understnd that file
<asac> ok, i assume that you have changed the package name in debian/rules?
<Grazieno> asac: yes!
<phoenix24> yes!
<asac> ok good ... then we need to fix debian/control
<asac> its again just the package name. for our case we use myubufox for Source: as well as for Package:
<asac> usually you would fill in a good package description, set a proper maintainer as well, but we don't need this for practice
<asac> further the section might be wrong, as there might be office extensions and so on
<asac> ok after fixing the debian/control file we are pretty much done
<asac> for me it looks like this now:
<asac> Source: myubufox
<asac> Section: web
<asac> Priority: optional
<asac> Maintainer: Yourname <your@email.tld>
<asac> Build-Depends: debhelper (>= 5), cdbs, mozilla-devscripts (>= 0.5~)
<asac> XS-Vcs-Bzr: https://code.launchpad.net/~LPID/firefox-extensions/example-extension.ubuntu/
<asac> Standards-Version: 3.7.3
<asac> Package: myubufox
<asac> Architecture: all
<asac> Depends: firefox | firefox-3.0 | firefox-2
<asac> Description: one line for short description Long descriptions can span multiple lines . and as above empty lines
<asac> well .. some linebreaks removed for the extensions
<asac> but you get the point i guess
<asac> i just changed the Source: and Package: line
<asac> ok last thing: fix the version and the package name in changelog
<asac> .e.g debian/changelog
<asac> and of course your name
<asac> are you ready?
<phoenix24> yes!
<asac> then give it a spin and produce your binary test package :)
<asac> just run: debuild -b
<Grazieno> ok
<asac> the output i get during that build is like: http://paste.ubuntu.com/4847/
<asac> at the end of the build i get some lintian warning/errors:
<asac> E: myubufox_0.1-1_i386.changes: bad-distribution-in-changes-file UNRELEASED
<asac> E: myubufox: copyright-should-refer-to-common-license-file-for-lgpl
<asac> W: myubufox: maintainer-not-full-name Yourname
<asac> W: myubufox: new-package-should-close-itp-bug
<asac> W: myubufox: wrong-bug-number-in-closes l3:#XXXXXX
<asac> the first error would be fixed by using hardy instead of UNRELEASED
<asac> and the second one, by filling the debian/copyright file with proper content
<asac> the others should be self-explanatory
<asac> but we don't need to fix them ;)
<asac> now
<asac> ok ... do you all have a myubufox_0.1-1_all.deb now?
<Grazieno> asac: yes
<asac> Grazieno: congrats!!
<asac> you win ;)
<Grazieno> asac: :)
<asac> you could install it now and it should install the extension in your firefox. you don't need to test that now, if it doesn't work then its a bug in mozilla-devscripts that you can always bug me about ;)
<asac> but it should work :)
<asac> (well maybe you need to uninstall the main ubufox package first, because they have the same extension id)
<asac> ok ... lets go on with second approach then (which should be quicker as we know how it works a bit)
<Grazieno> asac: How can I see the extension in firefox? Is it possible?
<asac> Grazieno: well ... you need to uninstall the ubufox package first
<asac> then you should see the new one
<asac> (they conflict and firefox will just display one)
<asac> ok the second approach is to use the realy ubufox sources
<asac> and we will use bzr for real :)
<asac> to start you create a package branch locally thats based on the ubufox.upstream branch you have
<asac> just do: bzr branch ubufox.upstream myubufox.ubuntu
<asac> that should create a new directory "myubufox.ubuntu"
<asac> now the same procedure as before: copy the debian/ directory from the XPI.TEMPLATE directory into it
<asac> cp -r XPI.TEMPLATE/debian myubufox.ubuntu/debian
<asac> you can also use the debian directory from the other package we created
<asac> so cp -r myubufox-0.1/debian/ myubufox.ubuntu/debian
<asac> now commit those changes to your packaging branch and push it to launchpad ;)
<asac> https://wiki.ubuntu.com/MozillaTeam/Firefox3Extensions/Packaging
<asac> ^^ thats the last step in section "Packaging Procedure"
<asac> you are still up?
<asac> ;)
<asac> or should i wait a bit ?
<asac> as we don't have a .xpi in the upstream branch anymore, we have to produce one before the package building can go on.
<asac> you can enable that by setting a proper build command in debian/rules
<asac> conventiently ubufox has a build.sh script to produce the .xpi ... so you can just enable:
<asac> #MOZ_XPI_BUILD_COMMAND = sh build.sh
<asac> =>
<asac> MOZ_XPI_BUILD_COMMAND = sh build.sh
<asac> after that edit you can commit this to your packaging branch like:
<asac> bzr commit -m "* enable sh build.sh to build the .xpi" debian/rules
<asac> ok, to build the package, just run debuild -b again
<asac> if you have that ... then we are through!
<asac> if you couldn't finish everything, but want to learn more, you can always join #ubuntu-mozillateam and ask questions
<asac> sorry for the quick pace in the end ... 1hour is so little ;) ... i tried to best to squeeze quite a bit out of it and show you that most extensions are pretty easy to package
<asac> one more question which i find important:
<asac>  jetsaredim> Q: what is the reason to package an extension vs letting people just get them from the addons.mozilla site?
<Wutz> Thanks for the lesson
<asac> thats frequently asked. but the answer is simple. The same reason why we want to package everything
<asac> we can better integrate it and quality assure it
<jetsaredim> fair enough
<Alucard> Prof. Asac: thank you very much!
<asac> and even auto-updates are not wanted in many environemtns
<asac> (like corporations)
<asac> they want to test and only get tested stuff
<asac> which is what we provide
<asac> thanks all!
<phoenix24> Thanks!
<asac> looking forward to see you all in #ubuntu-mozillateam helping to get a lot of extensions ready for hady
<asac> hardy
<Grazieno> asac: Thanks a lot!
<asac> you can make a big difference!
<barcc> asac: thanks!
 * asac hugs you all
<asac> next one please ;)
<asac>  \o/
<liw> I guess it's my turn now
<liw> I'm going to lead a session on writing scripts for automated desktop testing
<liw> I would like to have a volunteer to relay questions from the -chat channel so that I don't have to do that at the same time as talking here -- anyone?
<liw> but let's start
<liw> the first part of this session is going to be about running existing scripts
<Grazieno> liw: I can do it
<liw> Grazieno, thank you!
<liw> there is going to be a nice framework to run the tests automatically, but that isn't done yet, so we're going to concentrate on the scripts themselves, running them manually and writing them
<liw> we're using the AT-SPI framework for the scripts; it was originally written for accessibility, but provides a way for external programs to poke GUI applications and get them to do things, and to examine some of their internal state
<liw> AT-SPI only works in GNOME, not in KDE (and may work in Xfce, but I haven't investigated)
<liw> to enable it, go to System -> Preferences -> Universal Access -> Assistive Technology, then tick the "Enable..." checkbox
<liw> you may want to set up a dedicated account for this, though
<liw> or run things in kvm, or virtualbox, or another emulator
<liw> because there's a fair chance that the scripts don't work they way they're supposed to work, and they may then break things
<liw> I use kvm myself, and I am making a Qemu image file (which kvm can use) that has everything already set up to run the tests, but that's still uploading (it's amazing how long it can take to upload big files), so I won't point you at the url yet
<liw> kvm is basically qemu, but with hardware acceleration; you can run the following command to see if your CPU can run kvm: egrep '^flags.*(vmx|svm)' /proc/cpuinfo
<liw> if that returns anything, and you want kvm, upgrade to hardy, install the kvm package, do "adduser $LOGIN kvm" (where $LOGIN is your username), and log out and log back in again
<liw> oh, and I forgot: if you want to enable the assistive technologies stuff, you need to log out and back in again as well, it's not enough to just tick the checkbox (the AT-SPI services need to be started when you log in)
<liw> anyone here already have an environment where they have assistive technology enabled?
<Grazieno> liw: ok, I'll be back :)
<liw> if anyone else wants to enable it, now would be a good time, I can wait a few minutes
<Grazieno> liw: ready!
<liw> https://wiki.ubuntu.com/Testing/Automation/DogtailTutorial has instructions for enabling AT and is generally useful for this automated testing stuff, please bookmark
<liw> ok, next step is to install the python-dogtail package
<liw> (please do so now  if you want to experiment today)
<liw> also, we're going to be using a sample script for gThumb, so install that, too, if you don't have it already
<liw> https://wiki.ubuntu.com/Testing/Automation/Coverage has some scripts that have been written and collected -- there's way too few of them, since I've been tinkering with the framework to run them instead of writing new scripts, but let's hope some people here will get excited and help with the script writing (which is the more interesting part of the job) :)
<liw> eddyMul, just in case you missed things: https://wiki.ubuntu.com/Testing/Automation/DogtailTutorial is a useful link, and if you want to play with things tonight, install python-dogtail and gthumb packages
<eddyMul> liw: thanks
<liw> those wanting to try running a script, download the gthumb.tar.gz file from the Coverage page (url above) and unpack it
<liw> then, from the command line, enter the directory with the unpacked files, and run this command: LC_ALL=C python gthumb-preferences.py
<liw> magical things should now be happening
<liw> is anyone seeing magic?
<liw> or is anyone trying to see magic and failing?
<Grazieno> liw: failing..
<charliecb> hi
<liw> Grazieno, what's the error?
<Grazieno> liw: http://paste.ubuntu.com/4851/
<liw> Grazieno, weird... are you running this in hardy?
<Grazieno> liw: yes :)
<Grazieno> liw: wrong?
<liw> Grazieno, hardy is right
<eddyMul> liw: gutsy is wrong?   :(
<liw> eddyMul, I know hardy is right, but I don't know if gutsy will work or not
<eddyMul> liw: failed for me: http://paste.ubuntu.com/4852/             :(
<liw> ok, this is a bit disturbing, but I think I'll want to continue with the session -- I'd like to help you guys get this working, but we can perhaps do that later?
<liw> is that ok?
<Grazieno> liw: yes!
<eddyMul> liw: yes. carry on.
<liw> I should'v emade a movie about how the gthumb-preferences.py script runs and opens gthumb and toggles various preferences
<liw> you'll have to just believe me that it does...
<liw> the crucial bit here would have been to get it to work so that we can progress to writing new scripts
<liw> but well, we'll fix that later
<Grazieno> <jimcooncat>QUESTION: I see dogtail can work with GTK-enabled OpenOffice; is this the default in gutsy?
<liw> the way we determine that a script worked is that it exits with a zero exit code -- this will hide some problems, but we'll worry about those at a later stage -- if a scipt crashes, it will return non-zero, so we'll notice that
<liw> jimcooncat, I don't know if that is the default in gutsy, sorry
<heno_> It is, yes
<jimcooncat> thanks, this will be very useful
<liw> but more generally speaking, AT-SPI / dogtail should be able to work with any gtk+ application, with few exceptions
<heno_> I've run dogtail scripts on openoffice
<liw> oh, and to see the exit code of a script, run this right after the script: echo $?
<heno_> openoffice also works fairly well with Orca the screen reader
<liw> $? is the shell's charming way to express "exit code of the previous command2
<heno_> and that relies on AT-SPI
<heno_> (sorry to interrupt)
<liw> yeah, at-spi (and atk from -chat) is all part of the assistive technology stuff, and it's meant for screenreaders and such aids, and the way we're using it for testing is really an afterthought, but it works (really! it does!)
<liw> ok, my qemu image upload finished, so you should be able to download http://people.ubuntu.com/~liw/autoguitest/autoguitest.qemu.lzma for a working hardy i386 basic gnome setup
<liw> uncompress with unlzma, and run with: kvm -m 512 -hda autoguitest.qemu -snapshot
<liw> the -m 512 is the amount of emulated memory, and -snapshot means that any changes you make won't be writte into the image (also meaning you will lose them once you quit kvm)
<liw> but continuing to writing scripts
<liw> er, not yet
<liw> the username is "tomjon", the password is "password1" (the industry standard password!)
<liw> and now, writing scripts
<liw> the easy way of writing scripts is by using the dogtail-recorder program (part of python-dogtail) and use the program you want to write a test for with the keyboard only
<liw> dogtail seems to be missing almost all mouse events, but gets keyboard events reliably, so it's best to stick to keyboarding
<liw> so: start the program you want to write a script for, start dogtail-recorder, click on "record", do stuff, click on "stop", and then on "save", and you have a script
<liw> this sounds too easy and wonderful to be true
<liw> and it is
<liw> the scripts pretty much always need some manual tweaking
<liw> http://paste.ubuntu.com/4837/ has one example script
<liw> straight from dogtail-recorder
<liw> the first problem is that this script does not actually start the program, it assumes the program is already running
<liw> we can fix this by replacing the first two "focus...." lines with "run('gcalctool')"
<liw> http://paste.ubuntu.com/4836/ -- this is the script after editing -- there's more changes, I'll go through them next
<liw> I find that it is best to write the scripts such that they are independent: they don't assume the program is already running, or anything else, except possibly that there aren't other programs running at the same tiem that might interfere (jimcooncat, hi), because those other programs are going to make things very complicated if we allow for them
<liw> so, at least for now, we're keeping things simple
<liw> the other problem with the original script in my pastebin is that I messed up while keyboarding and some silly and wrong stuff got recorded
<liw> basically: I was driving the app with the keyboard, but making assumptions about the order of things in menus, which is dangerous, if we want to keep the scripts running from release to release
<liw> and we want to be able to run the scripts from release to release, if possible
<liw> less work for testers... :)
<liw> so, I removed some useless keyboarding from the beginning of the script
<liw> the final difference is that dogtail-recorder inserts focus.something stuff in various places, and it is meant to do that
<liw> those focus things affect dogtails's idea of what has focus, not the window manager's
<liw> unfortunately, when I run the scripts, the focus setting doesn't really work, and I'm not entirely sure why, but luckily it is OK to just remove them, at least as long as we stick to an application with one window (and no dialog windows)
<liw> so the new version of the script is much shorter, and just toggles the various settings in the View menu of gcalctool
<liw> any questions about this so far?
<liw> those interested in danger and excitement may want to save http://paste.ubuntu.com/4836/ to foo.py and run it and see if it works
<Grazieno> liw: it's ok for me
<jimcooncat> So I can intersperse python code with the dogtail commands?
<liw> oh, right: the dogtail scripts are pure Python code, which calls the dogtail Python library
<liw> so if you know what you're doing, you can add any Python stuff in there that you wish
<pranith> hello
<pranith> is this where the bughelper session going to be held?
<liw> getting scripts to work is sometimes a bit of a hassle: I haven't figured out a way to do it systematically yet, so that things always work the first time, but a little tweaking is usually all that is required
<liw> it's best to keep scripts fairly small -- this means that when they break, or when they find a problem, it is easier to see what happens
<liw> a 1000 line script that tests all of an application is harder to debug than a hundred 10-line scripts that each test a small part of the application
<pixelpapst> pranith: you're interrupting a running session. join #ubuntu-classroom-chat and i'll fill you in
<pranith> oops, sorry everyone
<liw> if you write any scripts, we would like to ask you to upload them to https://wiki.ubuntu.com/Testing/Automation/Coverage and we can hopefully include them in the automatic desktop testing suite and eventually run them automatically as part of the Ubuntu release process
<liw> if you can attach a small text file that explains what the tests are about (or include that in comments in the script itself), even better, but as long as you get scripts done, we're happy :)
<liw> so, any questions now?
<allinsane> can't get dogtail to run do they have an IRC?
<liw> #dogtail on this IRC network, but I don't know how active that is
<jimcooncat> Can dogtail read text from a widget back into a python variable?
<Grazieno> <phoenix24_> QUESTION: Where can I get the schedule for the #ubuntu-classroom ?
<liw> jimcooncat, in theory, yes, through the at-spi interfaces, but I'm not sure how to do that
<liw> phoenix24_, https://wiki.ubuntu.com/UbuntuDeveloperWeek
<liw> ok, I think we're about done, then ... ahead of time, even (my keyboard is smoking and my fingers are numb...)
<jimcooncat> liw, what kinds of script would you like to see on your wiki page?
<liw> jimcooncat, any script that verifies that some part of a GUI application in Ubuntu works
<liw> jimcooncat, anything that interests you is good, and we're most interested in stuff that is included in the default installation
<liw> those who had trouble getting dogtail to work: I am goign to have to leave in a few minutes, and I'm at fosdem over the weekend, but e-mail me at lars@canonical.com or ask me on irc on Monday, and I'll help you as best I can
<liw> thank you, everyone
 * liw bows and exits gracefully
<Grazieno> liw: very thanks!
<barcc> liw: thanks
<Grazieno> a few minutes until Brian Murray and Markus Korn with Bughelper
<bdmurray> Grazieno: Shall we start now?
<thekorn> I'm ready :)
<bdmurray> Hello thekorn and I devlop the bughelper suite and python-launchpad-bugs and wanted to tell you about how they can help you work with bug reports.
<Grazieno> bdmurray: yes, sure!
<bdmurray> If you want to tryout the examples we provide in our session, please install bughelper and python-launchpad-bugs. Some of the examples will only work with the latest versions of this tools.
<bdmurray> thekorn has setup a ppa for the latest version of them and you can get them by adding     *
<bdmurray> thekorn has setup a ppa for the latest version of them and you can get them by adding           deb [WWW] http://ppa.launchpad.net/bughelper-dev/ubuntu hardy main
<bdmurray> to your /etc/apt/sources.list, and replace 'hardy' with the version of ubuntu you use
<bdmurray> Then you can should update via 'sudo apt-get update' and install bughelper and python-launchpad-bugs
<thekorn> pranith asked: 'what all packages do we need to install to get started?'
<bdmurray> So what is python-launchpad-bugs?  It is a python interface to work with bugs, and blueprints to a degree, in Launchpad.
<thekorn> sorry ;)
<bdmurray> You should install bughelper and python-launchpad-bugs to get started.
<bdmurray> Bughelper is a suite of utilies that uses python-launchpad-bugs to help you find specific bugs in Launchpad.
<bdmurray> We'll start off talking about the bughelper suite and then move on to python-launchpad-bugs.
<bdmurray> The bughelper suite has 3 main applications - buginfo, bugnumbers and bughelper
<bdmurray> buginfo is designed for reporting information about one specifc bug
<bdmurray> for example 'buginfo --title 38442' will return the bugs title
<bdmurray> While bugnumbers is designed for returning a list of bugs based off a query in launchpad
<bdmurray> Starting points for a query include '-p' for a package in Ubuntu, '-l' for a url of a search in Launchpad
<bdmurray> Or now you can search a whole distribution using '-D' or an upstream project using '-P'
<bdmurray> Using those starting points you can then filter using features in Launchpad (bug status and importance) and some not in Launchpad
<bdmurray> some features not in Launchpad are querying on the quantity of duplicates, subscribers, comments, attachments
<bdmurray> in addition to the date or author of the last comment or the bug reporter
<bdmurray> For example lets say I'm the gdm maintainer and I know Brian Murray reports some useful bug reports I could find all the bugs he's reported using 'bugnumbers -p gdm --reporter=brian-murray' or if I wanted just the new ones I could add that as a filter too so 'bugnumbers -p gdm --reporter=brian-murray --status New'
<bdmurray> Another example is xorg bug reports which should always contain 2 attachments /etc/X11/xorg.conf and /var/log/Xorg.0.log. We could look for New bug reports with more than 1 attachment using 'bugnumbers -p xorg --na ">1"' to find "more complete" bug reports that might be worth triaging first.
<bdmurray> I run reports on busy packages for bugs with more than 2 duplicates, more than 5 subscribers and more than 5 comments at http://people.ubuntu.com/~brian/reports/
<bdmurray> Additionally, you can modify the output of bugnumbers - formats available include just the bug numbers, urls, moinmoin wiki markup, html to name a few
<bdmurray> You can also check out statistics for your package via 'bugnumbers -p gnome-power-manager --stats -C' where -C includes closed bug reports
<bdmurray> Are there any questions about buginfo or bugnumbers?
<phoenix24_> bdmurray: QUESTION: Do the "bughelper python-launchpad-bugs" support Proxy Server ?
<bdmurray> thekorn: Do you know the answer to that?
<thekorn> phoenix24_, I did not try it with the latest code,
<thekorn> but we had a bugreport on this in the past
<thekorn> but I'm not sure
<Grazieno> bdmurray: I think does not works
<bdmurray> Okay, we'll look into that then.  Anything else?
<yuriy> bdmurray: QUESTION: could you elaborate on the usage of -l? what urls can you/ are you supposed to give it?
<bdmurray> yuriy: you can give it any valid search in Launchpad.  Let's say we wanted to find bugs tagged apport-bug with more than 2 attachments.  We could use 'bugnumbers -l <lpsearch> --na ">2"'
<bdmurray> It'd be useful to use a url search in this case because those bugs be reported about multiple packages.
<bdmurray> So your starting point really depends on the scope of bug reports you want to find.
<yuriy> bdmurray: so you would just search whatever you want on launchpad, then copy/paste the resulting URL?
<bdmurray> yuriy: that's correct the advantage here is that you could have it then output into html or moinmoin markup or add an additional filter that doesn't exist in launchpad
<bdmurray> Does that help?
<yuriy> bdmurray: yeah, thanks
<yuriy> bdmurray: QUESTION: is there API documentation online for python-launchpad?
<bdmurray> yuriy: yes, we'll get to that shortly
<bdmurray> moving on
<bdmurray> bughelper, the application, searches bug reports and attachments for a specific string and provides with a clue about that bug
<bdmurray> clue files use a separate bzr branch bughelper-data and are stored on your local disk in ~/.bughelper/packages
<bdmurray> this is a separate project in Launchpad - https://code.launchpad.net/bughelper-data/ and anyone in the bugsquad can add clues for packages so feel free to add clues for your package
<bdmurray> et's have a look at '~/.bughelper/packages/bughelper.info' as an example
<bdmurray> this file is also online at http://tinyurl.com/2zwm7a
<bdmurray> as you can see clue-file are in a xml format and can contain multiple clues
<bdmurray> you can combine operations by using logical operators like 'and' or 'or'
<bdmurray> this is done in the "contains" portion of the clue file
<bdmurray> Regular Expressions are also supported as you can see in the first clue, this clue matches all bugs with 'importance' set to 'Undecided' and which are tagged with 'xpath' or 'commandline'
<bdmurray> When a bug with those attributes are found we'll be presented with the hint in <info>
<bdmurray> This can be useful for finding duplicate bug reports or managing bug workflow
<bdmurray> So a crash report might have a specifc string in it and we can search all bug reports in a package for that string
<bdmurray> Or the kernel team wants confirmed or triaged bugs assigned to a specific team
<pranith> bdmurray, QUESTION: can you give us an example so that we can see it live?
<bdmurray> Here is the output of a matched clue:
<bdmurray> http://launchpad.net/bugs/191834 [update-manager (Ubuntu): New/Undecided] - This is expected when someone is running a development release of Ubuntu
<bdmurray> We are presented with a link to the matched bug report and a hint as to what the issue might be
<bdmurray> pranith: Is that what you are looking for?
<bdmurray> Writing clue files is a way for us to easily share our knowledge with other bug triagers
<pranith> bdmurray, how do i get this bug report using bughelper?
<pranith> bdmurray, ok
<pranith> bdmurray, i got it now
<bdmurray> pranith: via 'bughelper -p <package>'
<bdmurray> you can add additional filters too like if you only wanted to search new bugs for a specific string
<bdmurray> that would be 'bughelper -p <package> --status New'
<pranith> bdmurray, thanks, i got it
<bdmurray> We have time for one more question about bughelper before moving on to python-launchpad-bugs
<bdmurray> I'll hand it over to thekorn then
<thekorn> ok, let's have a deeper look at
<thekorn> == python-launchpad-bugs ==
<thekorn>  
<thekorn> python-launchpad-bugs allows you to access bugs.launchpad.net via python. This python module is used by many tools like apport, ubuntu-dev-tools and of course bughelper and bugnumbers.
<thekorn>  
<thekorn> Let me give you a short "Howto" on using python-launchpad-bugs. This requires some basic understanding of python.
<thekorn>  
<thekorn> Let's start a python session and do some general preparation:
<thekorn>     >>> import launchpadbugs.connector as Connector
<thekorn>     >>> from launchpadbugs.basebuglistfilter import URLBugListFilter
<thekorn>  
<thekorn> Ok, so far so good, let's get a list of all open bugs in the bughelper project
<thekorn>     >>> BugList = Connector.ConnectBugList()
<thekorn>     >>> bl = BugList("https://bugs.launchpad.net/bughelper/+bugs")
<thekorn> Each member of this list has attributes like 'bugnumber', 'url', 'status' and 'importance'.
<thekorn>  
<thekorn> Getting filtered lists is also very easy:
<thekorn>     >>> bug_filter = URLBugListFilter()
<thekorn>     >>> bug_filter.add_option("status", ("New","Confirmed"))
<thekorn>     >>> bug_filter.add_option("importance", ("Medium",))
<thekorn>     >>> bl = BugList(bug_filter("https://bugs.launchpad.net/bughelper/+bugs"))
<thekorn> It's also possible to use any python functions as a filter, but this would go too far right now.
<thekorn>  
<thekorn> any questions so far?
<pranith> thekorn, this is how the bughelper gets the list of bugs?
<thekorn> pranith, yes bughelper/bugnumber is using python-launchpad-bugs to get buglists etc
<thekorn>  
<thekorn> Okay, that's all about bug lists for now, for more information please visit http://tinyurl.com/yrmze9
<thekorn>  
<thekorn> yuriy, ^ this is one part of our API documentation
<thekorn> Now, let's have a look on how to handle bugreports with python-launchpad-bugs:
<rzr> hi there
<thekorn>     >>> Bug = Connector.ConnectBug()
<thekorn>     >>> b = Bug(123456)
<thekorn> The argument of Bug() can either be a bug number, an url of a bugreport or an element of a BugList-object
<thekorn>  
<thekorn> There is a huge amount of attributes of a bug-object. You can access almost all information of a bugreport.
<thekorn> Let's have a look at some examples:
<thekorn>     >>> b.url
<thekorn>     'https://bugs.launchpad.net/ubuntu/+source/xine-lib/+bug/123456'
<thekorn>     >>> print b.subscriptions
<thekorn>     set([<user ken-paulsen (Valyander)>, [...], <user kubuntu-sujee (LinuxLover)>])
<thekorn>     >>> print b.comments
<thekorn>     [<Comment #1 by kubuntu-sujee on 2007-07-03 07:17:39 UTC>,[...],<Comment #6 by bersace on 2007-09-30 22:04:49 UTC>]
<thekorn> For a list of all attributes of a Bug-object and some examples on using these attributes have a look at http://tinyurl.com/2mboze
<thekorn>  
<thekorn> So far, we have only read bugs, but with python-launchpad-bugs you can also change bugreports in a very easy way!
<thekorn> First of all, only registered user can change bugreports in launchpad, so let's authenticate with our account data:
<thekorn>     >>> Bug.authentication = {"password":"<your-password>","email":"<your-login-email>"}
<thekorn> There is also another possibility of authentication: you can use a mozilla cookie-file (this for example works for cookies created by epiphany or firefox < 3.0)
<thekorn>     >>> Bug.authentication = "/path/to/the/cookiefile/cookie.txt"
<thekorn>  
<thekorn> Now I want to show you, as an example, how to change the status of a bug:
<thekorn>     >>> demo = Bug(193948)
<thekorn>     >>> demo.status
<thekorn>     'New'
<thekorn>     >>> demo.status = "Invalid"
<thekorn>     >>> demo.commit()
<thekorn> Until you call the 'commit()'-method all changes are local, with 'commit()' you try to commit all changes you did locally to launchpad.
<thekorn>  
<thekorn> yuriy> thekorn: QUESTION: can you authenticate using an ssh key?
<thekorn> no, py-lp-bugs do not support this
<thekorn>  
<thekorn> Like this you can for example change the description, add comments or attachments, subscribe to a bug or change the tags.
<thekorn>  
<thekorn> Let's have a look at two more complex examples.
<thekorn> You can get this scripts here: https://wiki.ubuntu.com/BugHelper/Dev/python-launchpad-bugs/Examples
<thekorn> These two scripts show you how to use python-launchpad-bugs to do things you can't do in launchpad itself.
<thekorn>  
<thekorn> Let's say you are a developer of an upstream project in launchpad. When you create a package of your tool and build it for ubuntu, bugs in ubuntu are closed by the (LP: #123456) syntax, but upstream bugs were not. The first example also closes this upstream bugs in your project and adds a comment containing the changelog-entry.
<thekorn>  
<thekorn> I wrote the second example few days ago when we had all these python-central bugreports. This example returns you a list of bugs created in ubuntu after 2008-02-18 and filters this list by the following criteria:
<thekorn>     * 'pycentral' or 'python-central' in the content of the bugreport (that's no magic, launchpad can do this :))
<thekorn>     * an attachment called 'DpkgTerminalLog.gz' which contains 'pycentral' or 'python-central' (this is magic! no way to do this in launchpad)
<thekorn>  
<thekorn> <RainCT> QUESTION: Since the last python-launchpadbugs update I get Â«AssertionError: Parsing of this page (https://bugs.launchpad.net/ubuntu/+bugs?field.searchtext=[.........]) is not supported by python-launchpad-bugsÂ» when I run some scripts I had that used it... What changed?
<thekorn> that's simple you need either the latest version in hardy, or the latest versions of py-lp-bugs from the team PPA
<thekorn> because the way launchpad presents the data changes with almost evry update
<thekorn> but it should be fixed with the latest version of py-lp-bugs
<thekorn>  
<thekorn> RainCT, I hope this helps
<thekorn> as an explanation
<thekorn> let's move on
<thekorn>  
<thekorn> As a last example I want to show you how to create a bugreport with python-launchpad-bugs, it's only one line of code!
<thekorn>     >>> b = Bug.New(
<thekorn>     ...    product = {"name":"buglog-data"},
<thekorn>     ...    summary = "this class is almost over",
<thekorn>     ...    description = "UDW rocks! - but we need more time to show all features of bughelper and py-lp-bugs")
<thekorn> This creates a new bugreport in the 'buglog-data'-project, if you would like to file a bugreport in ubuntu use
<thekorn>     'product = {"target": "ubuntu", "name": "my-package"}'
<thekorn>  
<thekorn> Ok, that's all about python-launchpad-bugs for now, time for some questions!
<thekorn> no questions?
<bdmurray> I realize this is a lot to absorb and think about
<mruiz> go go pedro_ !
<thekorn> yeah,
<thekorn>  
<thekorn> If you would like to use bughelper and/or python-launchpadbugs and have any questions, or even better if you want to help us improving this two packages, this are ways to get in with us:
<dholbach> thanks thekorn, thanks bdmurray - you guys ROCK! :)
<forsaken_> do other bug trackers have an API?
 * thekorn hugs dholbach 
<thekorn>     * bughelper has a separate mailing list, bughelper@l.u.c
<thekorn>     * browse https://launchpad.net/python-launchpad-bugs and https://launchpad.net/bughelper to file bugreports or get the code
 * dholbach hugs thekorn back
<thekorn>     * for more information check out our wiki pages at https://wiki.ubuntu.com/BugHelper
<thekorn>     * and last but not least ping us in #ubuntu-bugs
<pranith> thekorn, bdmurray thanks for the class. it was really informative
<thekorn> DONE!
<phoenix24_> Thanks!!
<barcc> thanks
<bdmurray> Thanks for coming to our class.
<thekorn> thanks for joining our session!
<cody-somerville> woot :)
<pedro_> Hello, are we ready ?
<dholbach> Next up is Pedro Villavivencio, member of the QA and the Desktop mafia!
<dholbach> He promised to plug https://wiki.ubuntu.com/5-A-Day a couple of times, thanks a lot for that pedro_ :-)
<dholbach> pedro_: the stage is yours :)
<pedro_> thanks dholbach!
 * mruiz waves
<pedro_> hello everybody
<Iulian> Hi there!
<pedro_> how many people we have here, can you raise your hand?
<sourcercito> howdy
<phoenix24_> Hi pedro_ !
<phoenix24_> +1
<Iulian> I am
<mruiz> _0/
<fvenegas_> hi pedro!
<forsaken_> +1
<barcc> raise
<Grazieno> +1
<soneil> hand
<daishujin> +1
<pedro_> good! ok i'll going to introduce you into the triage world
<rzr> \o_
<pedro_> Iulian: offered himself to moderate the questions
<pedro_> he's also a member of the bugsquad :-)
<pranith> +1
<pedro_> ok so what's "TRIAGE" all about
<andres> _o/
<InsClusoe> +1
<pedro_> we often explains that the "triage" is very similar to the process that people do at the hospitals and i'm referring to the process of separating the very badly wounded from those who are lightly wounded
<pedro_> for us it's the process of separating and identifying bugs that are most severe and useful for the developers to fix
<rzr> does this mean separating the injured part of body  ?
<pedro_> a bug became "triaged" when it have all the information required and it have an status and an importance
<pedro_> one of the teams that do this at Ubuntu is the BugSquad team
<pedro_> https://launchpad.net/~bugsquad
<pedro_> it's an open team and everybody can join
<pedro_> and you may also want to have a look to https://wiki.ubuntu.com/BugSquad/GettingInvolved if you have a doubt about it
<pedro_> we also have a mailing list (ubuntu-bugsquad) and a channel #ubuntu-bugs
<pedro_> ok, how the bugs are get reported into Ubuntu
<pedro_> One of the ways of reporting a bug to Ubuntu is using the "Help-> Report a problem" menu  entry on the application you're having issues with
<pedro_> for example if you going to gedit now,  you'll see that menu there
<rzr> what about command lines applications ? can't we use reportbug like on debian ? I tried once on ubuntu
<pedro_> rzr: yes you can i'm going to there
<rzr> ok
<pedro_> rzr: questions at #ubuntu-classroom-chat please :-)
<pedro_> ok if you want to report a bug with the command line you can use this command:
<pedro_> apport-cli -f -p PACKAGE , where PACKAGE is the name of the package you're having problems
<pedro_> example : apport-cli -f -p gedit
<pedro_> if you don't know the name of the package and the program is running you can try to report the bug with his PID like:
<pedro_> apport-cli -f -P PID
<pedro_> Both process will collect information about the version of Ubuntu the reporter is using, the application and the version of it
<pedro_> both ways are extremely recommended :-)
<pedro_> Another way of report bugs to Ubuntu is trough the Launchpad website
<pedro_> if you go to https://bugs.launchpad.net/ you'll see a red button that say something like "report a bug"
<pedro_> then you'll be asked for a summary, a description and you'll be asked to select a package if you know it
<pedro_> most of the time the people that report bugs this way, don't really know which package is the one containing the bug
<pedro_> so they select "Ubuntu"
<pedro_> which leads to having lot of reports without a package; you can see a tiny list here http://tinyurl.com/32l4gd
<pedro_> When you Don't have to file a bug report:
<pedro_> when it's a support request, like "i don't know how to do this", you can ask that at https://answers.launchpad.net/ubuntu
<pedro_> when it's a policy discussion or you have development ideas, this should be discussed at the ubuntu-devel-discuss mailing list
<pedro_> and of course when the bug is already filed
<pedro_> Since we most of the time didn't get too many good quality reports, we need to improve them
<pedro_> There's a few things you can do for improving a bug report
<pedro_> as i mentioned we get a lot of reports without a package and this is a really good task for new brave triagers
<pedro_> because most of the time those bugs are easy to reassign to the right package
<pedro_> we also have a documentation about it here: https://wiki.ubuntu.com/Bugs/FindRightPackage
<pedro_> so if you want to start triaging that's a really good first step
<pedro_> another way of improve a bug report is asking or documenting the steps on how to reproduce the bug
<pedro_> sometimes you'll find reports with a summary that say "I clicked here and it doesnt work"
<pedro_> what we need is they to answers questions like:
<pedro_> How can the problem be reproduced?
<pedro_>  What actually happens when you follow these steps?
<pedro_> What would you expect to happen when you follow them?
<pedro_> All of them in much detail as possible
<Iulian>  <mirrado> QUESTION: Is there any command line utility to list all bugs related to a especific package? I mean something that could help in identifying duplicated bugs, etc
<pedro_> mirrado: yes, there's bughelper, bdmurray and thekorn gave a talk a couple of minutes ago about it :-)
<pedro_> Another thing that we should worry about is to see if the bug report has a descriptive summary
<pedro_> if not we should edit it
<pedro_> as i said , we find a lot of bugs with things like "Doesn't work"  or " I don't know what i was doing"
<Iulian> <eddyMul> QUESTION: can any registered LP user change a bug's title/summary?
<pedro_> so if we ask for steps on how to reproduce we can improve a lot the summary and the developers can read it and have a really good idea of what's going on
<pedro_> eddyMul:  yes basically anyone
<pedro_> for change the summary and the title you have to do the following
<pedro_> on the launchpad page of a bug for example https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/194052
<pedro_> on the left side there's a column that say "Edit description/tags"
<pedro_> if you click there you'll be redirected to the edit form and there you can edit all that
<pedro_> if you're editing the summary or the description please make sure it's really consistent
<pedro_> for example a description like "rhythmbox hangs when click on a previous podcast"
<pedro_> is way better than one like "just hanged"
<pedro_> it doesn't matter if it's too long :-)
<pedro_> another thing you should take care of when you do triaging is the status of the bug
<pedro_> all the status on Ubuntu are described here: https://wiki.ubuntu.com/Bugs/Status
<pedro_> and currently we have 9 status New, Incomplete, Invalid, Confirmed, Triaged, In Progress, Won't Fix, Fix Committed, and Fix Released
<pedro_> some of them may confuse people but i'll try to explain them and if you have a question about them just ask
<pedro_> New: When a bug is first reported the status of it is New meaning that no one has touch it yet and these kind of bugs are a good candidates for new triagers
<pedro_> Incomple: means that the bug is missing some information, like steps to reproduce the bug
<pedro_> s/Incomple/Incomplete
<pedro_> Confirmed: means that someone than the original report has the same issue (was able to reproduce the bug) or the that the bug has a minimum of debugging information on it
<pedro_> triaged: means that the bug has enough information for a developer to start working and fix the problem
<pedro_> the Triaged status can only be set by a member of the ubuntu-bugcontrol team
<pedro_> Progress: means that a developer or another person is working on a fix for it
<pedro_> Fix Committed: means that there's a fix for the bug committed on a development branch but it's not yet available on a Ubuntu official package
<Iulian> <InsClusoe> QUESTION: So many people log bugs saying functionality is this way. Should be that way. What would be correct status for such 'bugs'?
<Iulian> <InsClusoe> QUESTION: (continue) Should status be invalid or should it be new and have importance set to 'wishlist'?
<pedro_> InsClusoe: it depends if that functionality is not working as it should it's a valid bug
<Iulian> <eddyMul> QUESTION: does the bug status suggest an "evolution" of the bug? Can I start filing with a bug with "Work In Progress" instead of New? (e.g when I'm submitting a patch)
<pedro_> InsClusoe: if they're asking for a new one , it should be Wishlist , but Wishlist is an Importance not a bug status :-)
<pedro_> eddyMul: no, better to set it as New and select the "patch" check box when you submit the patch to it
<pedro_> then a developer will take a look to it
<Iulian> <InsClusoe> QUESTION: Who can edit importance of a bug?
<pedro_> if the patch needs work he'll set it as "In Progress"
<pedro_> InsClusoe: any member of the ubuntu-bugcontrol team, if someone has been doing a good work triaging bug he can apply to the ubuntu-bugcontrol team
<pedro_> which gives you a few more permissions that just edit the importance of a bug :-)
<pedro_> ok so Fix Released
<pedro_> means that there's a official package available on Ubuntu that fix the problem
<pedro_> Won't Fix: means that the developers of the same determined that will not fix the issue
<pedro_> and last one the scary Invalid status
<pedro_> a bus is marked as Invalid when it doesn't have enough information to determine where the bug is or that the report isn't a bug itself
<pedro_> for asking all these things we have a page with stock responses that are really useful
<pedro_> http://wiki.ubuntu.com/Bugs/Responses
<pedro_> sometimes it's hard for new triagers what to ask on some reports
<pedro_> the stocks responses will help you with that
<pedro_> we also have debugging procedures that may help you to ask for files the reporter can submit in order to see where's the bug: https://wiki.ubuntu.com/DebuggingProcedures
<Iulian> <InsClusoe> QUESTION: I feel a bug needs to be looked at by the bugcontrol team. Can I subscribe them to the bug?
<pedro_> InsClusoe: best way is to announce the bug at #ubuntu-bugs if you don't get attention in a few hours you can send an email to the bugsquad list
<Iulian> <barcc> QUESTION: there are some reports "xy doesn't work" with answers "me too,me too,..." without providing more information. how is the correct status Incomplete or Confirmed?
<pedro_> barcc: that's one of the painful bugs we have to face the "me too" ones... if the bug doesn't have the enough information but lot of "me too" the status should be Incomplete
<pedro_> it doesn't matter if you have 10000 "me too" but there's no enough information
<pedro_> it should incomplete anyways
<pedro_> One of the fun things we do as a BugSquad are the Hug Days
<pedro_> A Hug or Bug Day it's a complete day where the BugSquad focus on a package or task
<pedro_> we celebrate the Hug days twice a week, that means Tuesdays and Thursdays
<pedro_> today we're running the GNOME Power Manager one and last Tuesday we had a Printing one
<pedro_> you can see both pages and progress here:
<pedro_> https://wiki.ubuntu.com/UbuntuBugDay/20080221
<pedro_> https://wiki.ubuntu.com/UbuntuBugDay/20080219
<pedro_> of course you can always join the #ubuntu-bugs channel and discuss bugs there
<pedro_> everyday everyhour
<pedro_> if you take a look to http://planet.ubuntu.com
<pedro_> you'll see a few posts in there with a "5"
<dholbach> YES YES YES :)
<pedro_> :-)
<Iulian> 5-a-day r0cKz!
<pedro_> that's a new and really funny way to work on bugs
<pedro_> 5-a-day means everybody  have to do 5 bugs a day!
<pedro_> https://wiki.ubuntu.com/5-A-Day
<dholbach>  https://wiki.ubuntu.com/5-A-Day#Log for how to join up
<pedro_> there's a stats page http://daniel.holba.ch/5-a-day-stats/ and we really like to see your name on it
<pedro_> so if you have any questions on how to do more specific triage or a question on what to do with a bug, feel free to ask at #ubuntu-bugs or in our bugsquad mailing list everytime everyhour 24x7 :-)
<dholbach> thanks a lot for plugging 5 a day and thanks for your great talk pedro_! :-)
<pedro_> thanks for the attention :-)
 * dholbach hugs pedro_
<InsClusoe> pedro_: Thanks a lot.
<Iulian> Thanks all!
<barcc> thanks
 * pedro_ hugs dholbach back
<dholbach> :-)
<pedro_> let's squash some bugs at #ubuntu-bugs!
<Iulian> <yuriy> QUESTION: I run derivative X with desktop Y, but all the bugs on those bugday pages are about gnome, how can I participate?
<pedro_> yuriy: may you ask it on #ubuntu-bugs, there's another talk here :-), thanks.
<phoenix24_> Thanks pedro_ !
<dholbach> ROCK ON! :)
<dholbach> Next up is "Debdiffs And How To Get Them Submitted" :)
<dholbach> How are you all doing?
<daishujin> Great!
<dholbach> How's Ubuntu Developer Week coming on this week for you? :)
 * mruiz hugs pedro_ 
<charliecb> fine
<daishujin> very interesting
<Grazieno> dholbach: very cool for me!
<dholbach> ROCK ON! That's what I like to hear :-)
<InsClusoe> dholbach: I am loving it.
<holloway> we want more, we want more \o/
<dholbach> Ok, let's talk debdiffs.
<mirrado> Amazing
<dholbach> hehe :-)
<mirrado> :)
<dholbach> Debdiffs are your way to make other developers happy. In this session we'll try to create one and I'll tell you how you'd submit it
<dholbach> This time I thought we're going to try to fix a real bug
<dholbach> I picked a 'bitesize' one, which generally are bugs that are suited for new contributors
<dholbach> all those bugs are linked from http://wiki.ubuntu.com/MOTU/TODO and http://wiki.ubuntu.com/MOTU/TODO/Bugs
<dholbach> but first we need to set up our working environment
<dholbach> please all edit your ~/.bashrc (or .zshrc if you use zsh) file and add something along the lines of:
<dholbach> export DEBFULLNAME='Daniel Holbach'
<dholbach> export DEBEMAIL='daniel.holbach@ubuntu.com'
<dholbach> then save it and run   source ~/.bashrc
<dholbach> these two variables will be used by a couple of tools we're going to need
<dholbach> everybody all set?
<Grazieno> dholbach: or . .bashrc :)
<dholbach> Grazieno: I don't understand
<Grazieno> dholbach: in your home, do only '. .bashrc'
<dholbach> right
<dholbach> anyway... all set? give a quick '+1' too
<TuxCrafter> + 1/2
<Grazieno> +1
<rzr> pedro_: thx, sorry for disturbing ... my RTFM list is overloading :)
<barcc> +1
<mirrado> +1
<Iulian> +1
<dholbach> ok perfect
<dholbach> we need a few tools next, please run:
<dholbach>    sudo apt-get install devscripts build-essential wget fakeroot patchutils debhelper
<charliecb> +1
<rzr> +0.42
<mirrado> +1
<dholbach> devscripts contains packaging tools which make the job much easier
<dholbach> build-essential is a meta-package which pulls in stuff like gcc, make and so on
<dholbach> fakeroot is interesting too, because it simulates an environment where we work as 'root'
<dholbach> ok... let's get working on https://bugs.launchpad.net/ubuntu/+source/xnetcardconfig/+bug/181494 together
<dholbach> I don't know how tricky it's going to be, let's just all start working on it and let's see where we end up :)
<dholbach> if you have questions or I'm too quick, please let me know on #ubuntu-classroom-chat
<dholbach> the problem seems to be that xnetcardconfig depends on xsu which is going to be removed soon
<dholbach> This seems to confirm it:
<dholbach>    apt-cache show xnetcardconfig
<dholbach> ok, let's dive into the problem :-)
<dholbach>    apt-get source xnetcardconfig
<dholbach> oh... I forgot:
<dholbach> you might have to add a deb-src line to your /etc/apt/sources.list first
<dholbach> for hardy that'd be  "deb-src http://archive.ubuntu.com/ubuntu hardy main restricted universe multiverse"
<dholbach> and please run    sudo apt-get update   afterwards
<dholbach> then the    apt-get source    run is going to work :)
<dholbach> <charliecb> QUESTION: what means -> Conflicts: menu (<< 2.1.12)
<dholbach> charliecb: the package xnetcardconfig conflicts with the package menu (if it is older than 2.1.12)
<dholbach> that means they're not installable at the same time
<dholbach> the main reason for using conflicts is that no two packages can install the same file at the same time
<dholbach> that's also the main reason breaking upgrades :)
<dholbach> so you need to be very careful if you move files from one package to another
<dholbach> OK, apt-get source downloaded the following files for us
<dholbach> xnetcardconfig_0.2.0-1.dsc  and  xnetcardconfig_0.2.0-1.tar.gz
<dholbach> which is REALLY weird
<dholbach> does somebody see a problem with those two files?
<dholbach> OK, the version number 0.2.0-1 indicates that:
<dholbach>  - the upstream version of xnetcardconfig is 0.2.0 (what the upstream author release on their homepage)
<dholbach>  - it's the first debian revision of it
<dholbach> <rzr> no patches
<dholbach> rzr: Exactly.
<dholbach> if you package upstream software, you take the tarball you download from their webpage and rename it to
<dholbach> <software>_<version>.orig.tar.gz
<dholbach> this result in the debian/ubuntu packaging tools moving all the changes we apply to make it build properly into <software>_<upstreamversion>-<ubunturevision>.diff.gz
<dholbach> there's no .diff.gz here, although the 0.2.0-1 version indicates that
<dholbach> does that make sense for everybody?
<dholbach> Ok, let's move on then :)
<InsClusoe> yes
<dholbach> cd xnetcardconfig-0.2.0/
<dholbach> let's fix the obvious problem first: xsu depends
<dholbach> for those of you who have read the link on the bug report: http://packages.qa.debian.org/x/xsu/news/20040720T150036Z.html suggests to use 'gksu' instead
<dholbach> let's take a look at debian/control
<dholbach> it's the file that specifies (among other things): what is needed to build the package and what is needed to install and use the package
<dholbach> let's, as a first measure, replace xsu with gksu
<dholbach> <charliecb> QUESTION: isn't the name for the package wrong? it must be xnetcardconfig_0.2.0-1.orig.tar.gz? or not?
<dholbach> charliecb: I'd agree with xnetcardconfig_0.2.0.orig.tar.gz - the debian maintainer might have overlooked it
<geser> it was never in Debian, it got synced from some other source during for hoary and never touched since Dec 2005
<dholbach> everybody welcome geser - he's a great guy and always digs up these facts from somewhere - he's awesome!
<dholbach> thanks geser
<dholbach> ok, that's done now, let's document our change
<dholbach> let's run      dch -i         to add a new changelog entry and increment the version number
<dholbach> dch is a nifty tool from devscripts
<dholbach> a few things we need to make sure here:
<dholbach>  - get the version right, which might be a bit controversial here :-)
<dholbach>  - upload to the right Ubuntu version
<dholbach>  - document our changes right
<dholbach> as the version is wrong already, I suggest we just use 0.2.0-1ubuntu1 and go from there
<dholbach> <charliecb> QUESTION: changelog has to look like this: xnetcardconfig (0.2.0-1ubuntu1) gutsy; urgency=low
<dholbach>    * removed dependence for xsu , add dependence for gksu
<dholbach> charliecb: nearly
<dholbach> we can't upload to gutsy, it's released already
<dholbach> but if we replace gutsy with hardy, I think it looks OK already
<dholbach> although I prefer to use changelog entries like
<dholbach>   * debian/control: replaced xsu dependency with gksu.
<dholbach> or something
<dholbach> it's important to point out which files you changed, so the next person who works on the package knows what happend and why
<dholbach> who's done with that part of the story? quick +1 please?
<charliecb> +1
<Iulian> +1
<barcc> +1
<dholbach> party on
<Grazieno> +1
<mirrado> +1
<dholbach> what do we do now? is that all?
<holloway> we need a new source package?
<dholbach> before that
<mirrado> we need to change the reference to the package mantainer in debian/control
<dholbach> mirrado: good point, but even before that
<charliecb> test the package with pbuilder?
<dholbach> all good points, but something else
<InsClusoe> get gksu
<InsClusoe> ?
<dholbach> if there's a dependency on xsu, it might be used somewhere in the code somewhere - we need to fix that reference
<dholbach>  grep -r xsu *
<dholbach> seems that we need to get   xnetcardconfig.in   a proper treatment
<dholbach> this line is the offending one:
<dholbach>       (xsu -c "$0" -u root -i "@PREFIX@/share/pixmaps/xnetcardconfig.png" -t "Configure network" -d -m "Network configuration requires^superuser priveleges.") >/dev/null 2>&1 || {
<Grazieno> sed -i 's/xsu/gksu/g' xnetcardconfig.in
<dholbach> just replacing 'xsu' with 'gksu' is not going to work
<dholbach> if you look at the manpage of gksu, you'll find out that there is no '-c' or '-i'
<dholbach> as I read the manpage, something like
<dholbach>      (gksu -c "$0" -D /usr/share/applications/xnetcardconfig.desktop) >/dev/null 2>&1 || {
<dholbach> might work
<dholbach> it's something we need to test in the end
<Grazieno> hum..
<dholbach> Grazieno: you have a question?
<Grazieno> dholbach: no
<dholbach> ok good
<dholbach> let's document that change too, please run
<dholbach>     dch -e
<dholbach> something like this will do:
<dholbach>   * xnetcardconfig.in: replaced usage of xsu with gksu.
<dholbach> now we come to mirrado's point
<dholbach> mirrado: care to explain?
<dholbach> <charliecb> QUESTION: why  /usr/share/applications/xnetcardconfig.desktop ? who creates that file?
<mirrado> we need to substitute the mantainer field with XSBC-original-mantainer tag
<dholbach> charliecb: I'll make it short becaues it's not really relevant to the topic of the session... as I read the gksu manpage you can pass it the location of a Desktop file, where it get description of the program from (instead of the strings that were passed to xsu call before)
<dholbach> charliecb: I saw it in gksu's manpage and found that the .desktop file in the tarball is available at ./xnetcardconfig.desktop
<charliecb> ok. thanks
<dholbach> charliecb: and grepping for .desktop in the source I found out that it's installed to "/usr/share/applications/xfld-xnetcardconfig.desktop" - thanks for prodding me, I was wrong :-)
<dholbach> if you want to update the line in xnetcardconfig.in, it's now:
<dholbach>   (gksu -c "$0" -D /usr/share/applications/xfld-xnetcardconfig.desktop) >/dev/null 2>&1 || {
<dholbach> mirrado is completely right in what he says, we need to follow https://wiki.ubuntu.com/DebianMaintainerField
<dholbach> our friends at Debian asked us to preserve the debian maintainer in debian/control, but set a different maintainer address so that Ubuntu users are not going to mail them if the Ubuntu package is broken :)
<dholbach> we'll replace this:
<dholbach>    Maintainer: Benedikt Meurer <bm@os-cillation.de>
<dholbach> with
<dholbach>    XSBC-Original-Maintainer: Benedikt Meurer <bm@os-cillation.de>
<dholbach>    Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
<dholbach> ok, let's document that too :)
<dholbach> 'updated Maintainer field' should be fine
<dholbach> now we'll do what holloway suggested: a new source package
<mirrado> We need to register in the changelog our changes in the xnetcardconfig.in
<holloway> debuild -S :)
<dholbach> mirrado: exactly
<geser> dpkg-source: error: syntax error in ./xnetcardconfig-0.2.0/debian/control at line 14: duplicate field Conflicts found
<dholbach> holloway: exactly
<dholbach> geser: good point - let's take a look at it
<dholbach> geser is right - there are two Conflicts statements, let's merge them
<dholbach> also let's document it
<charliecb> i don't see conflicts when i run "debuild -S"
<dholbach> charliecb: that's because you're on gutsy - the hardy build will fail
<charliecb> ok
<dholbach> you should get    E: xnetcardconfig source: debian-control-with-duplicate-fields conflicts: 13, 15   though
<dholbach> <Iulian> QUESTION: Standards-Version shouldn't be 3.7.3 ?
<dholbach> Iulian: good question - can you explain what Standards-Version means?
<Iulian> It's the Standards-Version from the debian policy.
<dholbach> exactly
<dholbach> so if you put standards version 3.7.3 in there, you're saying "this package complies to version 3.7.3 of the debian policy"
<dholbach> which is something I wouldn't testify right now :)
<Iulian> Right :)
<dholbach> changing the Standards-Version is a good thing if it's a package that you maintain
<dholbach> if it's a package we inherit from debian or some other place, we try to only introduce minimal changes that have a bigger effect
<dholbach> so changing just the standards-version is probably not something we'd do
<dholbach> Iulian: but a lot of people still do it - so the question is definitely justified :)
<dholbach> alrighty
<dholbach> did the    debuild -S   command work for everybody now that we merged the Conflicts fields?
<dholbach> +1?
<charliecb> +1 (with gutsy)
<dholbach> anybody else?
<Iulian> +1
<mirrado> +1
<barcc> +1
<dholbach> ahhh, here we go
<dholbach> now
<dholbach>   cd ..
<dholbach>    debdiff xnetcardconfig_0.2.0-1.dsc xnetcardconfig_0.2.0-1ubuntu1.dsc
<Grazieno> +1
<dholbach> This command will print out the diff the between the two source packages (0.2.0-1 and 0.2.0-1ubuntu1)
<charliecb> +1
<dholbach> can you all put your debdiff up at http://paste.ubuntu.com and paste the link here?
<charliecb> http://paste.ubuntu.com/4869/
<Grazieno> http://paste.ubuntu.com/4868/
<barcc> http://paste.ubuntu.com/4870/
<dholbach> Grazieno: you don't mention that you drop the xsu depends and don't mention which files you changes, but apart from that: very good
<Iulian> http://paste.ubuntu.com/4871/
<mirrado> http://paste.ubuntu.com/4872/
<dholbach> charliecb: you did not mention the change in xnetcardconfig.in, other than that: good work
<dholbach> barcc: good work :)
<dholbach> Iulian: you didn't change xnetcardconfig.in and your changelog is a bit sparse
<dholbach> mirrado: your changelog does not list all the changes either, other than that: good work
<dholbach> WOW, I'm amazed - well done everybody!
<dholbach> so what would be next:
<mirrado> I'm correcting it right now.
<dholbach>  - what charliecb mentioned above: test building it with pbuilder (http://wiki.ubuntu.com/PbuilderHowto)
<dholbach>  - testing if our suggested xsu fix really works
<dholbach>  - then we'd add a    (LP: #181494)   to the bug report, so the bug will automatically closed once our patch gets uploaded
<dholbach> then we'd run:
<dholbach>    debdiff xnetcardconfig_0.2.0-1.dsc xnetcardconfig_0.2.0-1ubuntu1.dsc > debdiff
<dholbach> and attach the resulting debdiff file to the bug report
<dholbach> and subscribe ubuntu-universe-sponsors to the bug report to get the fix uploaded
<dholbach> https://wiki.ubuntu.com/SponsorshipProcess has more information on how to get it uploaded :)
<dholbach> fixing this bug will actually two bugs:
<dholbach> Once https://bugs.edge.launchpad.net/ubuntu/+source/xnetcardconfig/+bug/181494 is done
<dholbach> https://bugs.edge.launchpad.net/ubuntu/+source/xsu/+bug/181495 can be fixed too :)
<charliecb> dholbach: isn't it enough to attach the diff to https://bugs.launchpad.net/ubuntu/+source/xnetcardconfig/+bug/181494 ???
<dholbach> so I hope somebody of you will walk through all the additional steps I mentioned so we get those two bugs ironed out :)
<dholbach> charliecb: the sponsoring process requires that the sponsors team is subscribed to the bug
<dholbach> charliecb: if you look at the bug you will notice that just three people are subscribed to it right now
<dholbach> having the sponsors team on it will make sure you don't block on just one person, but it will be dealt with by a bigger team
<dholbach> any last questions? :)
<charliecb> no. thanks for the nice lesson, dholbach!!
<Iulian> All good here.
<dholbach> rock on!
<mirrado> http://paste.ubuntu.com/4874/
<Iulian> The next package will be much better than this one.
<mirrado> Is it correct now?
<dholbach> tomorrow we'll have a MOTU Q&A session - if anything came up in your mind after this session, bring your questions to that session instead :)
<Iulian> Okies
<Iulian> Thank you dholbach!
<Grazieno> dholbach: thanks, really!
<dholbach> mirrado: better, I'd just mention the other changes to debian/control too: maintainer field change and merge of the two conflicts lines
<dholbach> mirrado: other than that: good work
<dholbach> thanks everybody: you guys ROCK
<Iulian> That was awesome!
<mirrado> Thanks dholbach :)
<dholbach> and I'd like to welcome you all to working with the MOTU team - it's big fun!
<dholbach> http://wiki.ubuntu.com/MOTU/GettingStarted
<barcc> you ROCK!
<dholbach> have a great day everybody and see you tomorrow!
 * Iulian hugs dholbach
 * dholbach hugs Iulian back
 * dholbach waves
<ewook> yay, hugging! :)
<rZr> so who fix https://bugs.edge.launchpad.net/ubuntu/+source/xnetcardconfig/+bug/181494 ?
<phoenix24_> :wq
<nrpil> rZr: good question!
<rZr> nrpil: then I shouldnt have ask :)
<rZr> ..ed it
<rZr> will do then
<nrpil> rZr: how do you fix it ?
<rZr> nrpil: test it and join the debdiff like said ?
<rZr> nrpil: did i miss something ?
<nrpil> rZr: i don't know, i'm learning
<phoenix24_> I get the same "debuild -S" error, geser showed.
<phoenix24_> How do i correct it. ?
<phoenix24_> resultant build.. fails.
<civija> phoenix24_: please post error message on paste.ubuntu.com
<phoenix24_> civija: http://paste.ubuntu.com/4878/
<civija> now paste control file
<civija> it looks like you have duplicate Confilcts field
<geser> phoenix24_: when you look at debian/control you will see two lines starting with Conflicts
<geser> put the values from both lines into one field, seperated with ','
<phoenix24_> done.
<geser> you should end with something like that (don't remember the exact field values): Conflicts: dhcp-client, menu (<< 2.11.2)
<geser> order doesn't matter
<phoenix24_> Conflicts: dhcp-client , menu (<< 2.1.12)
<rZr> I plan to upload a package to my personnal package archive
<charliecb> does anybody know, why a package from debian/sid is not in ubuntu hardy?
<rZr> charliecb: i never was in debian
<rZr> it not I :)
<geser> phoenix24_: looks ok
<rZr> I'll sumbit it to debian also
<phoenix24_> geser: now build it again ?
<phoenix24_> and document it using, dch -e ?
<geser> phoenix24_: yes and yes
<kdub432>  /join #svn
<geser> phoenix24_: dch (without -e) should automatically add a new bullet
<kdub432> oops, sorry everyone
<geser> charliecb: my guess is that it entered Debian after the automatic sync stopped and nobody filed a sync request for it
<rZr> <geser> charliecb: my guess is that it entered Debian ?
<rZr> are you sure ?
<charliecb> rZr: sure for what?
<geser> rZr: as I don't know which package charliecb is talking about I can only guess
<geser> charliecb: which package are you missing?
<rZr> xnetcardconfig-0.2.0 ?
<phoenix24_> geser: after rebuild, I get another error : http://paste.ubuntu.com/4879/
<charliecb> rZr: libjogl-jni
<rZr> ok my mistake
<charliecb> rZr: how can i find out the upstream date from this package?
<geser> phoenix24_: only the signing failed (which is only important for uploading), you should have a new source package
<phoenix24_> ok
<geser> charliecb: when you look at https://wiki.ubuntu.com/HardyReleaseSchedule you will that DebianImportFreeze (stop of automatic syncing) was on Dec 13th and when you look at http://packages.qa.debian.org/libj/libjogl-java.html you will see that the first upload got accepted on Dec 19th
<phoenix24_> geser: My debdiff output, http://paste.ubuntu.com/4880/
<charliecb> geser: thanks. thats the answer
<geser> phoenix24_: the changes look nearly good: it was noted that the filename of the .desktop file is different (xfld-xnetcardconfig.desktop I guess)
<geser> phoenix24_: and you called dch -i to often, you should have only one new entry (-1ubuntu1) instead of three
<rZr> this apps seems obsolete anyway
<phoenix24_> ok, is that why I got -1ubuntu3 instead of -1ubuntu1 packaged?
<geser> -i = increment
<geser> dch -e = edit
<kdub432> im confused. is a debdiff analogous to standard patches, except that they are for debian packages?
<phoenix24_> geser: thanks a lot!
<geser> kdub432: you can unpack the old source package and the new one to different dirs and run diff on them or if you are lazy use debdiff
<kdub432> and where are debdiffs submitted to?
<geser> kdub432: to LP (Launchpad), file a bug if none exists, attach the debdiff and subscribe ubuntu-universe-sponsors (or ubuntu-main-sponsors if the source package is in main)
<kdub432> thanks geser. im coming up on a 10 day break from classes, hopefully thats enough time to sort this whole motu thing out...
#ubuntu-classroom 2008-02-22
<hax0r111> hi
 * pitti waves
 * InsClusoe waves back..
 * db-keen stands aghast to be in the presence of InsClusoe
<InsClusoe> db-keen: Pls don't say such things and embarass me...
 * pitti rings the schoolbell
<pitti> welcome!
<pitti> so, who is here to learn about patching packages?
<pitti> and how has the week been so far for you?
<db-keen> +1
<AstralJava> o/
<rbr_> I'm no programmer, just curious
<grazieno> +1
<AstralJava> Haven't had much time to follow other lessons, but plan to do so today. Great sessions ahead. :)
<pochu> hey hey
 * warp10_ raises an hand
<pitti> cool, relatively quiet
<pitti> Welcome to the hands-on training session about how to patch Ubuntu source packages!
<pitti> This assumes that you already know what a patch is and how to handle .patch files in general (i. e. for upstream authors). Also, you should have a rough idea what an Ubuntu source package is.
<pitti> The purpose of this session is to teach you how to put a patch into an Ubuntu source package, since unlike rpm this is not very consistent still.
<pitti> While I do some introduction, please install some packages and sources on your box which we will need for the training:
<pitti>   sudo apt-get install dpatch cdbs quilt patchutils devscripts debhelper fakeroot
<pitti>   mkdir training; cd training
<pitti>   apt-get source cron udev pmount ed xterm
<pitti>   wget http://people.ubuntu.com/~pitti/scripts/dsrc-new-patch
<pitti>   chmod 755 dsrc-new-patch
<pitti> I deliberately picked the smallest packages I could find
<pitti> this can run in the background while I continue
<pitti> if anyone has any question, or I'm totally uncomprehensible (sorry for my English, I'm German), please do not hesitate to interrupt and ask *immediately*
<pitti> Also, don't bother trying to take notes, we'll sort that out at the end. You can fully concentrate on the discussion and examples.
<pitti> ok everyone?
<warp10> +1
<pitti> Let's begin with a little bit of history:
<grazieno> ok!
<AstralJava> Almost set.
<dargol> done
<pitti> == Why use separate patches ==
<pitti> In earlier times, people just applied patches inline (i. e. directly in the source code tree). However, this makes it very hard to extract patches later to modify them, send them upstream, etc. Also this means that new upstream versions are a pain, since they generate a lot of rejections when applying the package diff.gz to them.
<pitti> With split-out patches it is much easier to send them upstream, keep track of them, develop them, etc., since you always see which changes belong together.
<pitti> The ideal state is an unmodified tarball from upstream, plus clean and separate patches, plus the packaging bits in debian/. That means that lsdiff -z <sourcepackage>.diff.gz only contains debian/.
<pitti> The first attempts to split-out patches were pretty trivial: storing patches in debian/patches/, and adding some patch/patch -R snippets to debian/rules. This worked for small patches, but provided no tools for editing these patches, updating them for new upstream versions, etc.
<pitti> (debian/rules is the central script for building a package, in case you don't know)
<pitti> Thus several standard patch systems were created which are easy to deploy and provide tools for patch juggling and editing.
<pitti> --
<pitti> What I would like to do now is to introduce the most common patch systems and show some hands-on demo how to add a new patch and how to edit one.
<pitti> For this, I will point at a source package from the current gutsy or hardy archive, quickly explain the patch system, and show how to apply some (braindead) modifications to it.
<pitti> I recommend you to do the same steps in a terminal, so that you get a feeling for the process and can immediately ask questions.
<pitti> is everyone fine with this approach?
<dargol> k
<warp10> yep!
<AstralJava> Sure.
<bobbo> +1
<pitti> = cron: inline patches ==
<pitti> No patch system at all, nothing much to say about this. So this is an example of the "old" style of packaging, a counter-example
<pitti> You directly edit the files in the source tree.
<pitti> This is convenient for a simple and quick change, but will bite back for new upstream versions (see above) and is inconvenient for submitting patches upstream, or reviewing for merges.
<pitti> if you do 'lsdiff -z <package>.diff.gz' and you see changes which are not in debian/, then you probably have such a package
<pitti> i. e. in this case lsdiff -z cron*.diff.gz
<pitti> (you can also take a look at it to see how all patches are lumped together)
<pitti> so, I think I do not need to say anything else about cron, unless someone has a question
<pitti> == udev: separate patches, but no standard patch system ==
<pitti> This case is the most complicated one since you have to do all the hard work manually.
<pitti> In order to make you understand what a patch system does, and to give you a fallback method that will *always* work with any patch system, I handle this first.
<pitti> The good news is that you will seldomly be required to actually do this procedure, since for many packages there are nice tools which make things a charm.
<pitti> The bad news is that it may seem utterly complicated for people who never did it before, but I would like you to understand what's actually going on behind the curtains of the tools.
<pitti> BTW; when I'm too fast, don't hesitate to ping
<pitti> So please do not desperate if you do not fully understand it at first; there's written documentation and you can always take your time to grok it.
<pitti> The general approach, which you can print out and hang over your desk :) is:
<pitti> 1. copy the clean source tree to a temporary directory /tmp/old
<pitti> 2. apply all patches up to the one you want to edit; if you want to create a new patch, apply all existing ones (this is necessary since in general patches depend on previous patches)
<pitti> 3. copy the whole source tree again: cp -a /tmp/old /tmp/new
<pitti> 4. go into /tmp/new, do your modifications
<pitti> 5. go back into /tmp and generate the patch with
<pitti>   diff -Nurp old new > mypatchname.patch
<pitti> 6. move the newly generated patch to <original source dir>/debian/patches/mypatchname.patch
<pitti> in general we want the following diff options:
<pitti> -N -> include new files
<pitti> -u -> unified patches (context diffs are ugly)
<pitti> -r -> recursive
<pitti> -p -> bonus, you can see the name of the affected function in the patch
<pitti> does anyone have a question about the principle method?
<pitti> (I'll do a hands-on example now)
<AstralJava> All good here.
<warp10> here too
<bobbo> same here
<pitti> so, open a shell, ready your fingers :)
<pitti> udev example 1, let's create a new patch 92_penguins.patch:
<pitti> cd udev-* # -113 on gutsy, -117 on hardy
<pitti> -> now we are in our original source tree where we want to add a new patch
<pitti>   cp -a . /tmp/old
<pitti> -> create a copy of the clean sources as reference tree
<pitti>   pushd /tmp/old
<pitti> -> go to /tmp/old; 'pushd' to remember the previous directory, so that we can go back conveniently
<pitti>   debian/rules patch
<pitti> -> apply all already existing patches; of course we could use the 'patch' program to do it manually, but since debian/rules already knows how to do it, let's use it. The actual name for the patch target varies, I have seen the following ones so far: patch, setup, apply-patches, unpack, patch-stamp. You have to look in debian/rules how it is called.
<pitti>   cp -a . /tmp/new; cd ../new
<pitti> -> copies our patched reference tree to our new work directory /tmp/new where we can hack in
<pitti> that's the preparatory part
<pitti> let's do a braindead modification now
<pitti>   sed -i 's/Linux/Penguin/g' README
<pitti> -> changes the README file; of course you can use your favourite editor, but I wanted to keep my examples copy&pasteable
<pitti> and now we create a patch between the reference and our new tree:
<pitti>   cd ..
<pitti> -> go back to /tmp, i. e. where our reference tree (old) and hacked tree (new) is located
<pitti>   diff -Nurp old new > 95_penguins.patch
<pitti> -> generate the patch (Ignore the 'recursive directory loop' warnings)
<pitti>   popd
<pitti> -> now you should be back in your original source tree (when you did the pushd)
<pitti>   rm -rf /tmp/old /tmp/new
<pitti> -> clean up the temporary trees
<pitti>   mv /tmp/95_penguins.patch debian/patches
<pitti> -> move the patch from /tmp to the source tree's patch directory, where it belongs.
<pitti> *uff* :)
<pitti> Now take a look at your shiny new debian/patches/95_penguins.patch.
<pitti> and give a ping when you are ready
 * warp10 is ready
<snewland> ping
<bobbo> +1
<pitti> great, that goes very smoothly today :)
<pitti> if you do 'debian/rules patch', you'll see that the patch applies cleanly
<pitti> warp10, AstralJava, dargol, db-keen: caught up?
<warp10> pitti: sure!
<db-keen> yep
<dargol> yep
<AstralJava> Yeah, sorry was AFK for a bit.
<pitti> awesome
<pitti> so, obviously that's not the end of the wisdom, but if you do these steps a couple of times, you should get a feeling for how to create the most complicated patch conceivable
<phoenix24> +1
<pitti> so this procedure is the life safer if anything else fails
<pitti> questions so far?
<AstralJava> Nope. :)
<pitti> (just drop them into #-chat)
<pitti> Pretty much work, isn't it? Since this happens pretty often, I created a very dumb helper script 'dsrc-new-patch' for this purpose.
<pitti> First, let's bring back udev to the previous state by removing the source tree and re-unpacking the source package:
<pitti>   cd ..
<pitti>   rm -r udev-*
<pitti>   dpkg-source -x udev_*.dsc
<pitti> Then, using my script, above steps would reduce to:
<pitti> cd udev-*
<pitti>   ../dsrc-new-patch 95_penguins.patch
<pitti> ^ this now does all the preparation for you and drops you into a shell where you can edit the code
<pitti>   sed -i 's/Linux/Penguin/g' README
<pitti>   <press Control-D to leave the subshell>
<pitti> that looks slightly better, doesn't it?
<pitti> look at debian/patches/95_penguins.patch, it should look exactly like the one created manually
<pitti> If you like the script, please put it into your ~/bin, so that it is in your $PATH
<pitti> but I had to torture you with the close-to-the-metal method for the sake of understanding.
<pitti> You might have noticed that we applied all previous patches before creating our's. Does someone have an idea why this is done?
<warp10> some patches could depend on other patches
<pitti> which means?
<AstralJava> They need to be applied in order.
<AstralJava> correct order, that is.
<dargol> they coud only aply to the patched source
<pitti> i. e. patch 22 can change the same file that patch 7 did, and patch 22 might not even apply to the pristine upstream source.
<pitti> dargol: exactly
<pitti> That's why you will commonly see numeric prefixes to the patch files, since they are applied asciibetically in many patch systems (including the application of patches in udev).
<pochu> with that script I won't need dpatch-edit-patch anymore ;)
<pitti> pochu: oh, you do
<pitti> we'll get to that later
<pochu> oh
<pitti> dsrc-new-patch is a hack which mostly works for packages without a real patch system, but split-out patches
<pitti> like udev
<pitti> (which is really a bug we should fix)
<pitti> but makes a nice example :-P
<pitti> Since above procedure is so hideously complicated, patch systems were invented to aid you with that.
<pitti> Let's look at the most popular ones now (they are sufficient to allow you to patch about 90% of the archive's source packages; for the rest you have to resort to the manual approach above).
<dargol> exit
<pochu> ah, found it
<dargol> (sorry)
<pitti> dargol: ?
<pitti> ok
<pitti> == pmount: cdbs with simple-patchsys ==
<dargol> (wrong place)
<pitti> cdbs' simple-patchsys.mk module matches its name, it has no bells and whistles whatsoever.
<pitti> However, it is pretty popular since it is sufficient for most tasks
<pitti> and long ago I wrote a script 'cdbs-edit-patch' which most people can live with pretty well.
<pitti> This script is contained in the normal cdbs package.
<pitti> You just supply the name of a patch to the script, and depending on whether it already exists or not, it will create a new patch or edit an existing one.
<pitti> (dsrc-new-patch can currently *not* edit existing patches, mind you; patches welcome :-)
<pitti> but real patch systems can do that of course
<pitti>   cd pmount-*
<pitti> everyone please look in debian/patches, debian/rules to get a feeling how it looks like
<pitti> i. e. in debian/rules you simply include simple-patchsys.mk, and that'll do all the magic
<pitti> and debian/patches looks pretty much like udev
<pitti> so, let's mess up pmount a bit
<pitti> and add a new patch
<pitti>   cdbs-edit-patch 07-simple-readme.patch
<pitti>   echo 'This should document pmount' > README
<pitti>   <press Control-D to leave the subshell>
<pitti> easy, isn't it?
<pitti> this will take care of applying all patches that need to be applied, can change patches in the middle of the stack, and also create new ones
<pitti> Editing an already existing patch works exactly the same way.
<pitti> so I won't give a demo
<pitti> BTW, "cdbs-edit-patch" is slightly misleading, since it actually only applies to simple-patchsys.mk. You can also use other cdbs patch system plugins, such as dpatch or quilt.
<pitti> questions?
<AstralJava> Nothing at the moment, no. :)
<pitti> (sorry, some #-chat action going on)
<AstralJava> All good, all good. :)
<pitti> == ed: dpatch ==
<pitti> dpatch is a pretty robust and proven patch system which also ships a script 'dpatch-edit-patch'
<pitti> packages which use this build-depend on 'dpatch', and debian/rules includes 'dpatch.mk'
<pitti> The two most important things you should be aware of:
<pitti>  * dpatch does not apply debian/patches/*, but instead applies all patches mentioned in debian/patches/00list, in the mentioned order. That means that you do not have to rely on asciibetical ordering of the patches and can easily disable patches, but you have to make sure to not forget to update 00list if you add a new patch.
<pitti> (forgetting to update 00list is a common cause of followup uploads :-) )
<pitti>  * dpatch patches are actually scripts that are executed, not just patches fed to 'patch'. That means you can also do fancy things like calling autoconf or using sed in a dpatch if you want.
<pitti> using dpatch for non-native patches is rare, and normally you do not need to worry about how a .dpatch file looks like
<pitti> but I think it's important to mention it
<pitti> so if you ever want to replace *all* instances of Debian with Ubuntu in all files, write a dpatch with a small shell script that uses sed
<pitti> instead of doing a 300 KB static patch which won't apply to the next version anyway
<pitti> The manpage is very good and has examples, too, so I will only give one example here:
<pitti> This will edit an already existing patch and take care that all previous patches are applied in order:
<pitti>   cd /whereever/you/unpacked/the/source/ed-0.7
<pitti> (if you are still in the pmount directory: cd ../ed-0.7)
<pitti>   dpatch-edit-patch 05_ed.1-warning-fix
<pitti>   <edit stuff, press Ctrl+D>
<pitti> so that's exactly like cdbs-edit-patch
<pitti> ok, now we edited a patch, that's pretty easy, right?
<pitti> now let's create a new one; this is different from cdbs-e-p
<pitti>   dpatch-edit-patch foo 07_ed.1-spelling-fixes
<pitti>   <edit stuff, press Ctrl+D>
<pitti>   echo foo.dpatch >> debian/patches/00list
<pitti> ^ this is the new bit; you have to explicitly add a new patch to that 00list index file
<pitti> This will create a new patch foo.dpatch relative to the already existing 07_ed.1-spelling-fixes.dpatch.
<pitti> If your patch is very confined and does not depend on other patches, you can leave out the second argument.
<pitti> BTW, you even have bash commandline completion for dpatch-edit-patch!
<pitti> alright?
<bobbo> yeah
<warp10> y
<dargol> k
<AstralJava> Fine here. :)
<pitti> db-keen, phoenix24: ok?
<phoenix24> Yep!
<pitti> == xterm: quilt ==
<pitti> quilt is the other non-dumb standard patch system. Like dpatch, it has a list of patches to apply in patches/series (to use debian/patches, packages need to add a sylink).
<pitti> or set $QUILT_PATCHES to debian/patches
<pitti> It is non-trivial to set up and has a lot of advanced commands which make it very flexible, but not very easy to use.
<pitti> nontrivial to set up for Debian source packages, that is
<pitti> (it's not hard either, but more work than simple-patchsys, and even dpatch)
<pitti> it's not that widespread, but common enough to handle it here, and it apparently gains more popularity
<pitti> I will only show a small example here
<pitti>   cd /whereever/you/unpacked/the/source/xterm-229
<pitti> if you followed me exactly, that should be cd ../xterm-229
<pitti>   export QUILT_PATCHES=debian/patches
<pitti> This is necessary because the default patch directory for quilt is ./patches. But for Debian-style source packages we want to keep them in debian/patches, because that's the convention.
<pitti> Now let's edit the already existing patch 901_xterm_manpage.diff:
<pitti>   quilt push 901_xterm_manpage.diff
<pitti> this will apply all patches in the stack up to the given one
<pitti> apply inline right in the source tree, that is
<pitti> unlike quilt, cdbs-edit-pattch, and dpatch-edit-patch, quilt doesn't create temporary directories with a copy, but remembers old versions of the files and uses the normal working tree
<pitti> a bit like version control (svn, bzr, etc.)
<pitti> now let's edit a file that is already touched by the original patch
<pitti>   sed -i 's/Copyright/Copyleft/' xterm.man
<pitti> let's commit the change:
<pitti>   quilt refresh 901_xterm_manpage.diff
<pitti> ^ updates the patch file with your recent changes
<pitti>   quilt pop -a
<pitti> ^ unapplies all patches to go back to pristine source tree
 * pitti waits a bit for people to catch up and finish the example on their keyboards
<pitti> ok everyone?
<dargol> done
<bobbo> yep, done
<AstralJava> Done.
<warp10> y
<pitti> look at debian/patches/901_xterm_manpage.diff to see the effect
<cprov-out> #join ubuntu-classroom-chat
 * pitti hands cprov-out a slash
<cprov-out> sorry ...
<pitti> Finally, let's add a new patch to the top of the stack:
<phoenix24> Done1
<cprov-out> pitti: thanks ;)
<pitti>   quilt push -a
<pitti> '-a' means 'all patches', thus it applies all further patches after 901_xterm_manpage.diff up to the top
<pitti>   quilt new muhaha.diff
<pitti> register a new patch name (which we want to put on top of the patch stack)
<pitti>   quilt add README
<pitti> you have to do that for all files you modify, so that quilt can keep track of the original version
<pitti> this tells quilt to keep track of the original version of README
<pitti>   sed -i '1 s/^/MUHAHA/' README
<pitti> modify the source
<pitti>   quilt refresh
<pitti> update the currently edited patch
<pitti>   quilt pop -a
<pitti> this will finally create debian/patches/muhaha.diff with the changes to README
<pitti> as I already said above, quilt has a patch list, too
<pitti> in debian/patches/series
<pitti> which is much like debian/patches/00list for dpatch
<pitti> except that you don't edit it manually usually
<pitti> if you push -a, then the patch will land on top of the patch stack, and will automatically be put at the end of series
<pitti> of course you can create the patch in other levels of the patch stack
<pitti> sometimes, when you pull changes from upstream CVS, it's better to put them at the bottom of the stack
<pitti> i. e. upstream changes shuold generally come *before* distro-specific changes
<pitti> someone has an idea why this is done?
<pitti> or, rather, should be done
<dargol> same as before, upstream changes are only guarantied to work on original source
<pitti> first that
<pitti> and second, it forces you to port your local patches to the updated source
<pitti> so that, when you update to a new upstream version which incorporates the patch, it's much easier
<pitti> i. e. the closer to upstream a patch is, the more stable are your distro patches
<pitti> ok, that was the hard bit :)
<pitti> == A glimpse into the future ===
<pitti> As you saw, Debian source packages do not have any requirements wrt. structure, patch systems, etc.
<pitti> other source package systems like SRPM are much stricter wrt that.
<pitti> This of course means more flexibility, but also much more learning overhead.
<pitti> As a member of the security team I can tell tales of the pain of a gazillion different source package layouts... :)
<pitti> there has been an attempt to teach an official patch system to dpkg itself ("dpkg 2.0", aka. "Wig&Pen format")
<pitti> but unfortunately development on it has ceased
<pitti> Therefore some clever people sat together the other day to propose a new design which would both give us a new and unified source package and patch system that uses bzr (with a quilt-like workflow).
<pitti> This would also integrate packages and patches much better into Launchpad and revision control in general.
<pitti> Please take a look at https://wiki.ubuntu.com/NoMoreSourcePackages if you are interested in this.
<pitti> --
<pitti> so, thanks a lot for your attention!
<pitti> I hope it was a bit useful for you
<pitti> we have five more minutes for Q+A
<pitti> https://wiki.ubuntu.com/PackagingGuide/PatchSystems is some written documentation about patch systems
<pitti> a nice reference about what I explained here
<AstralJava> Can't come up with any questions really at this point, but thanks very much Martin for this session! :) Highly beneficial to over the steps in correct order and manner. :)
<pitti> warp10| QUESTION: If I need to apply a patch to a brand new package, or to fix a bug, or whatever, and a patchsystem has not been deployed yet, which (or how) should I choose?
<pitti> that's mostly a matter of taste
<pitti> if adding a patch system is actually justified in terms of keeping the delta to Debian low, then I'd give the following guidelines:
<pitti>  * if the package already uses cdbs, simply include simple-patchsys.mk and add the patch
<pitti> no question with this, that's unintrusive
<pitti>  * if the package doesn't use cdbs, and you get along with dpatch, use that
<pitti> (please ask questions here now)
<pitti> ETA for NoMoreSourcePackages is currently undefined
<pitti> right now we try to push forward the complete bzr import of ubuntu packages
<pitti> which is a first step
<pochu> QUESTION: do you know where to find some good documentation regarding working with .rej files? (as we don't have time now to explain it)
<pitti> I don't know docs, sorry
<pitti> because at that point it's really common sense and experience
<pitti> if there was a programmatic way how to resolve them, we wouldn't need them in the first place :)
<pitti> cdbs-edit-patch and dpatch-edit-patch will deal with it
<pitti> i. e. if a patch doesn't apply, they give you the .rej, you resolve them manually and Ctrl+D
<pochu> that's what I mean, how to resolve them
<pitti> make sure to delete the .rej after resolving
<pitti> they deliberately don't ignore .rej files
<pitti> just to make sure you don't accidentally overlooked them
<pitti> ok, my time is up
<dargol> thank you for the class!
<pochu> thanks pitti
<bobbo> thanks pitti
<pitti> please continue questions to me personally or in -chat
<AstralJava> Thanks again, that was super. :)
<pitti> thanks everyone!
<warp10> thank you pitti, that was very interesting :)
<cprov-out> pitti: great, thank you.
<phoenix24> thanks pitti!!
<cprov-out> right, about time to start PPA session ...
<cprov-out> Who is here for the PPA session (take 2) ?  (say +1)
<grazieno> +1
<Iulian> +1
<AstralJava> o/
<phoenix24> +1
<warp10> +1
<barcc> +1
<db-keen> +1
<snewland> I will sit this one out, sorry
<txwikinger> +1
<cprov-out> well, I guess, we have to continue with a smaller audience that the last session ... np
<cprov-out> so questions can be asked in #ubuntu-classroom-chat ...
<cprov-out> In the last session, we have started with the 3W approach (WHAT - WHERE - WAIT) to teach people how to use PPAs. See the session transcription in  https://wiki.ubuntu.com/MeetingLogs/devweek0802/PPAs1.
<cprov-out> As a brief summary of the PPA cycle:
<cprov-out>  * WHAT: signed source uploads (reusing orig.tar.gz from ubuntu Primary archive);
<cprov-out>  * WHERE: tell dput to upload it to ppa.launchpad.net (override changesfile target if you want);
<cprov-out>  * WAIT: wait the source to be built (restart the cycle if you received a build-failure-notification).
<cprov-out> I'm very happy to say that the last LP release (done on Wednesday) make the 'WAIT' stage very shorter
<cprov-out> now a build request is queued immediately after we recognize the new source, so the only waiting involved in the PPA cycle is related to the buildfarm load
<cprov-out> we currently have 3 i386, 3 amd64 and 3 lpia builder, which is quite enough to make everyone happy :)
<cprov-out> sorry, 'LP release' was a confusing term
<cprov-out> I was referring to the last Launchpad codeline release, which happened 2 days ago
<cprov-out> a new set of features in Launchpad is released every month ...
<cprov-out> PPAs ... Let's sort some questions, I don't believe you don' t have any ?
<cprov-out> phoenix24: QUESTION: Could you tell a little about PPA ?
<phoenix24> Nope, None.
<cprov-out> you can check the transcription of the last session, but briefly  it a 'parallel instance of the services used to maintain ubuntu primary archive'
<cprov-out> it's a *public* service and anyone using Launchpad is welcome to try.
<cprov-out> it allow any user to upload, build, publish and distribute their own packages
<cprov-out> you just need to be familiar with debian/ubuntu development tools to build the source package you want to change, all the rest is done by Launchpad.
<cprov-out> phoenix24: does it answer you question ?
<cprov-out> warp10: QUESTION: Why doesn't LP provides a sparc builder too?
<phoenix24> Yes, thanks!
<cprov-out> warp10:  the PPA builders are based in XEN VMs for proper isolation of the sources being built, and XEN doesn't support sparc officially
<cprov-out> warp10: yet ...
<cprov-out> warp10: QUESTION: Do PPAs build packages just like Soyuz does? I mean: If a package builds fine on a PPA, may I be 100% sure that it will build fine with buildd?
 * warp10 likes the "yet ..." :-)
<cprov-out> warp10: yes, the 'ubuntu infrastrucure' mentioned above is Soyuz. I'm glad you actually notice it :)
<cprov-out> warp10:  yes, I've read sometime ago that there were some effort on the sparc XEN port. I'm sure out IS team will be more than happy to adopt it when it gets official and stable enough.
<cprov-out> warp10: QUESTION: can you anticipate plans for future improvements of PPA? What kind of new features are to be implemented?
<cprov-out> warp10: yes, I can ... the current focus of our sub-team is allow quicker and simpler workflow to get work done in PPAs merged into ubuntu
<cprov-out> warp10: for instance the REVU application (MOTU review system) which is the path to get new source officially uploaded to ubuntu
<cprov-out> that's pretty much it, 'integration' is the word to define our goals in the next 2 or 3 months
<cprov-out> secretlondo: QUESTION: how much space do we get for our PPA - and are there ways of increasing it?
<cprov-out> secretlondo: by default you get 1GiB, but it can be increased by an launchpad administrator by request
<cprov-out> secretlondo: you simply need to justify why you need more space, for instance, 'I'm playing with firefox3 and openoffice packages' :)
<secretlondo> :)
<cprov-out> warp10: sorry, I didn't answered you question about what are the main differences of PPA backend and Ubuntu backend
<cprov-out> warp10: first, we automatically override all package uploaded to PPA to the main component
<cprov-out> warp10: in the case it is being copied/synced to ubuntu primary archive it won't necessarily like in main and will be submitted to other ogre-model restricitions.
<cprov-out> PPA builders also don't extract translations neither mangles the package information as they would do in ubuntu primary archive.
<cprov-out> Those are the only simplifications we have in PPA that makes it slightly different than the ubuntu primary archive.
<cprov-out> AFAICS, none of this should be a problem from the development print of view and they help users to get their job done in a quicker way.
<cprov-out> warp10: did I addressed all the points you wanted ?
<warp10> cprov-out: you absolutely did, thank you :)
<cprov-out> tamrat: QUESTION: I get the error "Signer has no upload rights at all to this distribution." when I try to upload sth to my personal archive. What could be wrong?
<cprov-out> tamrat: you are possibly not uploading to your PPA, but instead to ubuntu, check your ~/.dput.cf config
<cprov-out> tamrat: ensure you are using the target with 'incoming = /~<username>/ubuntu/'
<cprov-out> okay, I have a question myself: QUESTION: how do I delete a package from my PPA ? How long does it takes to be removed from my archive ?
<cprov-out> anyone interested ?
<phoenix24> +1
<cprov-out> Use +me/+archive/+delete-packages UI (allowed for PPA owners or team-admins), select one or more of the published sources and type a comment. The will be immediately marked as DELETED in the UI, within 20 minutes they won't be listed in the archive indexes and they will be removed 24 hours after the deletion (the remover runs every night).
<cprov-out> phoenix24: ehe, thanks. I was feeling alone.
<phoenix24> QUESTION: It's a very generic question, what's the utility of providing PPAs ?
<cprov-out> phoenix24: in very basic terms, it allow more contributions to the ubuntu itself
<cprov-out> phoenix24: we are looking for very talented people not yet added in ubuntu-keyring ;)
<phoenix24> :)
<cprov-out> kidding, but that's the real goal of PPA. It's meant to allow more an more people to be able to contribute with FOSS
<phoenix24> To me PPA's seem to be, like personalized.. Package-Builders with StorageSpace & Computational power.
<cprov-out> secretlondo: QUESTION: does the changes in translations between PPA and soyuz mean that localisation doesn't work on PPAs? Or is that just connected to rosseta?
<cprov-out> secretlondo: yes, PPA doesn't support changes in translation, neither bugs, atm
<cprov-out> phoenix24: right, I prefer to see the effects in people, behind the machines/systems.
<secretlondo> I think it's great that i'll have my own little repo to play with :)
<phoenix24> Yesh! that's likely.
<cprov-out> QUESTION: How can I sign my PPA repo ? It's so annoying atm !
<cprov-out> who wants to know about it ? :)
<secretlondo> yes
<phoenix24> +1
<cprov-out> I knew it ! ;)
<barcc> +1
<phoenix24> tellme tellme!!
<cprov-out> right, we are working on a the infrastructure bits to allow signed PPAs
<cprov-out> first, let me explain why we will not signed them with a single 'Launchpad PPA' key as we do in the ubuntu archive
<cprov-out> if we do that, we would be hiding the problem under the carpet .., the things we expect to have by using a signed/trusted information wouldn't be exactly reached
<cprov-out> we would create a system that would sign *anything* that it was request to ...
<cprov-out> a user would trust it once and install *everything* coming from LP PPAs w/o any warning.
<cprov-out> what we will provide is a mechanism that you can trust effectively. Launchpad will handle unique GPG keys for each PPA and do the signature/revocation on demand.
<cprov-out> I promise to give you more details in the next ubuntu-week :)
<cprov-out> when it will be probably implemented.
<cprov-out> any other questions ?
 * phoenix24 is reading the previous PPA talk.
<cprov-out> we have 10 minutes yet, maybe you want to discuss previous rejection-messages you have upload stuff to your ppa. Let me find one.
<cprov-out> QUESTION: what does "MD5 sum of uploaded file does not match existing file in archive" error means ?
<cprov-out> it means that there is already a file with the same name published in ubuntu or in your PPA, it usually refers to a different orig.tar.gz
<cprov-out> ups: QUESTION: After deleting a package from the PPA, can I re-upload the same version again?
<cprov-out> ups: good question, thanks
<ups> i've tried it, unsuccessfully :)
<cprov-out> ups: yes, you can, but you will have to wait it to be removed from the archive, normally 24 hours
<cprov-out> ups: and there is also a issue with the origs files being hold by previous publications, the deleted candidate won't be removed
<ups> cprov-out: not sure i understood the last statement
<cprov-out> ups: the best approach is to always use a higher source version
<cprov-out> ups: it's complicated, but let's say you have foo-bar_1.0 published in gutsy and you uploaded foo_1.1 (using the same orig.tar.gz) to hardy
<cprov-out> ups: if you request foo_1.1 deletion, it won't be removed from disk because foo_1.0 is requiring the orig to remain published
<cprov-out> ups: do you see how the removals in a poll-based repository works ?
<ups> ok, that's what happened when i tried it
 * dholbach hugs cprov-out
<cprov-out> ups: so, bump the version and forget about this, diffs and dsc are very small
<ups> that explains it, thanks
<cprov-out> dholbach: thanks, it's all yours.
<cprov-out> ups: great, thanks you for asking.
<dholbach> thanks a lot cprov-out for a great session - you rock!
<dholbach> you all enjoyed the cprov PPA show? :)
<secretlondo> thanks!
<cprov-out> thank you all for attending the session
 * ups nods
<AstralJava> Thanks a lot Celso! Great answers.
 * polopolo missed it :(
<dholbach> Bring it On!
<dholbach> next up is the MOTU Q&A Session
<dholbach> it's a session we have each Friday, usually at 13:00 UTC in #ubuntu-classroom
<dholbach> so if you have any questions, any problem you want a few people to look at, there's an hour dedicated just for that
<dholbach> of course there's always #ubuntu-motu and the mailing lists, but it's usually a smaller audience and a nice get-together :)
<secretlondo> :)
<LucidFox> How do I make one specific dependency ignored by dh_shlibdeps?
<dholbach> we usually start with introduction so we know who's new and who just joined the contributors world
 * dholbach is Daniel Holbach, MOTU for quite a while and hopes you all enjoyed UDW as much as I did
<dholbach> who else is here?
<secretlondo> me
<dholbach> just secretlondo and LucidFox? :)
 * AstralJava is
<phoenix24> me!
<recon> and me.
 * warp10 is Andrea Colangelo MOTU contributor who would like to see a Developer Week... well... every week! *grin*
<barcc> +1
<polopolo> me
<jpatrick> dholbach: hi :)
<pranith> +1
<akshay> I am Akshay Dua and this is my first time in a ubuntu chat room. I am currently working through the packaging guide.
<secretlondo> I'm Caroline Ford, I'm a bug traiger who is involved in tuxpaint upstream. I intend to learn packaging and become a MOTU (eventually)
<akshay> oh, and hi everyone
 * recon is the n00b trying to find something to package. And failing.
<dholbach> BRING IT ON! That's the spirit and what I'd like to hear! :-)
 * LucidFox is Matvey Kozhev, a recently approved MOTU and beginning Debian contributor
 * Iulian is Iulian Udrea and would like to join the MOTU world
<dholbach> perfect :)
 * polopolo already asked a question btw
<db-keen> Daniel Brumbaugh Keeney is the slow builder of a great Ruby Debian packaging machine called Tanzanite
<dholbach> ok... we have a few questions in the queue already
<grazieno> me
<dholbach> <LucidFox> How do I make one specific dependency ignored by dh_shlibdeps?
<dholbach> LucidFox: can you explain to those who just came here what dh_shlibdeps is for... in a nutshell
<LucidFox> dh_shlibdeps is a script for debian/rules that automatically fills dependencies for a package based on shared libraries its binaries link with
<recon> that sounds useful.
<dholbach> it's the best thing since sliced bread :)
<dholbach> so if you add   ${shlibs:Depends}  as a variable to the Depends: line of your package in debian/control in the end it will have all the library dependencies automagically filled in
<dholbach> LucidFox: I just heard of cases where that was necessary 2 or 3 times - the only solution I seem to remember right now is messing with debian/substvars
<recon> dholbach: well, if you wanted to ignore a dependency, couldn't you just edit it out of the control file?
<dholbach> LucidFox: I think one package was ffmpeg or some media library
<dholbach> LucidFox: and the other one libgoffice (because it built a -gtk and a -gnome variant) or something
 * eddyMul is Eddy Mulyono, packaged a bunch of stuff for Gentoo, and now looking at helping out Ubuntu
<james_w> "dh_shlibdeps -- -xpackage-name" is worth a try
<dholbach> recon: no, because you have just ${shlibs:Depends} there which gets all the library depends automatically filled in
<LucidFox> recon> No, the dependencies are generated during build and inserted into the deb's control file, and debian/control is untouched
<james_w> <-- James Westby, MOTU hopeful
<recon> oh.
<secretlondo> I can see a situation if you are backporting something - eg dapper doesn't have SDL_pango, and programX can be compiled without it
<dholbach> LucidFox: better to try what james_w said first :)
<dholbach> <polopolo> QUESTION: what ask the ubuntu team of its MOTU? or: what do you first to know before you are motu?
<james_w> secretlondo: in that case you would normally edit the "Build-Depends" to remove the package so that it wasn't linked with.
<LucidFox> secretlondo> in this case, it's usually sufficient to remove the -dev package from debian-control, in some cases also pass a --disable-X argument to configure
 * RainCT is Siegfried Gevatter, MOTU since some weeks and hoping to become a DD someday
<secretlondo> ok thanks
 * jpatrick is Jonathan Davies, MOTU (~2 years) and Debian contributor
<dholbach> polopolo: I answered that question on http://wiki.ubuntu.com/MOTU/FAQ - it seems to be a regular question coming up "Do I need to know a lot of programming languages to become a MOTU?"
<dholbach> let me quote from the wiki page
<dholbach> Much more important than having a lot of progamming experience is
<dholbach>  * being a good team player
<dholbach>  * learning by reading documentation, trying things out and not being afraid to ask questions
<dholbach>  * being highly motivated
<dholbach>  * having a knack for trying to make things work
<dholbach>  * having some detective skills
<dholbach> polopolo: I know it's kind of hand-wavy but I hope it helps to answer your question
<james_w>  * like being hugged by dholbach
 * dholbach hugs james_w :-)
<dholbach> <akshay> QUESTION: I am confused about the differences between the use of the underscore and the hyphen while packaging. Why are they needed? Which one to use when?(<package>-<version> vs <package>_<version>)
<akshay> hehe
<polopolo> dholbach: yes, you have, thank you
<dholbach> akshay: use the hyphen in the version number in debian/changelog and the underscore when you name the files
<akshay> great, thanks!
<dholbach> so it's        gedit_2.23.4.orig.tar.gz    and   gedit_2.23.4-0ubuntu.diff.gz
<dholbach> but it's 2.23.4-0ubuntu1 in the debian/changelog
<dholbach> ok great
<dholbach> <recon> QUESTION: Why would you need a seperate chroot to make packages, ala pbuilder, as opposed to the rest of your system?
<dholbach> recon: pbuilder is useful because it helps you to pinpoint which build-depends you need exactly
<recon> dholbach: ...should'a thought of that one.
<dholbach> recon: I usually tend to have lots and lots of libraries installed on my regular machine, but that's not what happens on the build daemon: the buildd takes a minimal chroot, then adds only the Build-Depends
<RainCT> recon: and you don't need to install all build dependencies on your machine
<dholbach> also it's a "clean system"
<dholbach> right, good point RainCT
<dholbach> <db-keen> QUESTION: .desktop files belong in different places depending on kde3/kde4/gnome. How is this usually handled in a debian package?
<james_w> recon: it also allows you to build for a release that you are not running, e.g. to backport to dapper.
<dholbach> db-keen: they are just installed into one place
<dholbach> as I understand it gnome-panel (for example) understands where to look them up
<dholbach> please correct me if I'm wrong - I never dived into this
<RainCT> Until now I installed everything in /usr/share/applications/
<dholbach> RainCT: that's where I install .desktop files to too
<RainCT> there is some directory for KDE but I'm not sure how this works.. perhaps jpatrick or someone other can elaborate on this
<dholbach> what I've experienced is that menu entries for KDE files pop up in my menu even if I use GNOME, so if KDE3/4 uses a different directory, they still are shown :)
<dholbach> <secretlondo> QUESTION: (sorry if this is the wrong session). What is a "native package" - I've read that the underscore vs hyphen thing is connected to "native packages"
<RainCT> and then .desktop files can also be used for stuff other than the menu, placing the file in some special directory, but I don't know neither how this works...
<dholbach> secretlondo: that's a good question - it gets asked a lot :)
<dholbach> secretlondo: a non-native package is the "usual" case where you take an upstream tarball directly from their website, rename it to        <software>_<upstreamversion>.orig.tar.gz
<dholbach> then extract it, add the debian/ubuntu packaging, then build the source package
<dholbach> and get a <software>_<upstreamversion>-<ubunturevision>.diff.gz
<dholbach> so it's a clear separation between 'upstream code' and 'distro code'
 * secretlondo nods
<akshay> now i understand more...thanks for the question secretlondo
<dholbach> in the case of a native package, it's all just one .tar.gz
<dholbach> so for example ubuntu-artwork which has no released upstream tarball
<dholbach> it's    ubuntu-artwork_45.tar.gz
<dholbach> no .diff.gz
<dholbach> no "ubuntu revision" number
<dholbach> <akshay> QUESTION: Where can I find the current distro revision? (e.g. <package>-2.23.4-0ubuntu1)
<dholbach> akshay: can you try to rephrase your question? I'm not sure I understand
<dholbach> <RainCT> akshay: what version number a package has in hardy, you mean?
<dholbach> <akshay> RainCT: precisely
<RainCT> akshay: you can find the version number checking on http://packages.ubuntu.com/<package name>
<dholbach> if you run hardy, you can just run;    apt-cache showsrc <package>
<dholbach> if you don't run hardy yet, you can either check out RainCT's page or http://launchpad.net/ubuntu/+source/<package>
<geser> or use the rmadison tool from devscripts
<RainCT> or if you have a hardy entry in /etc/apt/sources.list (a deb-src is enough, which you should have to be able to use "apt-get source") then you also see it with apt-cache
<dholbach> what I really like is          aptitude changelog <source package>
<RainCT> apt-cache show package | grep Version       will give you both, the version in Gutsy and the version in Hardy in that case
<akshay> understood. Thanks.
<dholbach> any more questions? any problems you ran into? things that are not quite clear from other sessions? things you've always wondered? like what james_w's favourite kind of music is?
<james_w> :)
<dholbach> <polopolo> QUESTION: When I upload a package to REVU, but it's not possible to add it to hardy, should it be added to the next version or should I try it again when the time's comes again?
<dholbach> polopolo: always upload 'to the current development release'
<dholbach> it should be quick enough to update to 'intrepid' once it's open :)
<polopolo> dholbach: ok I understood
<dholbach> excellent
<dholbach> <akshay> QUESTION: What is the "XSBC" in  XSBC-Original-Maintainer?
<dholbach> akshay: that's something I wondered myself
<akshay> haha
<dholbach> and I think somebody asked it before, somebody else answered and I forgot it again
<dholbach> sorry
<RainCT> X: User defined (not defined in the debian policy), SBC = the field should be visible in the Source, in the Binary and in the Changes file
<RainCT> iirc
<akshay> dholbach:np I know what goes in the field so its ok
<norsetto> X just mean is an extra-flag user defined
<norsetto> SBC are for source, binary and control respectively
<dholbach> akshay: there you go - it's always good to ask :)
<norsetto> means the field will be added to those packages
<akshay> thanks guys
<RainCT> norsetto: what do you mean with 'control'?
<norsetto> ops, changes :-)
<RainCT> cool, I didn't say it wrong :)
<polopolo> dholbach: well, if there are no questions, I wanna know why you are a part of MOTU? whatÅ the history in it?
<dholbach> polopolo: nice question :)
<dholbach> back when I joined the MOTU team, I really should have spent the time on my thesis instead
<dholbach> but I had to update a library to a newer version and I had done it in a personal repository (PPA did not exist back then), so mvo (and others) encouraged me to do it right
<dholbach> and join the team
<dholbach> the processes were all very different but what I liked so much about working in the Ubuntu team was the pioneer atmosphere
<akshay> dholbach: I am doing my PhD too, do you advice against joining the MOTU now :)
<rZr> may i ask a question ?
<dholbach> there's always something to do, always something to take care of, new teams to found, people to plan new things with etc
<rZr> about yestaday package xnetcardconfig ?
<dholbach> akshay: not at all - I finished my thesis on time :-)
<dholbach> rZr: fire away
<akshay> great, then I have nothing to worry about
<rZr> I submited the debdiff
 * dholbach hugs akshay
<rZr> and removed the original maintainer from debian/control
<akshay> i feel loved
<dholbach> rZr: I replied on the bug
<rZr> since the package never entered debian
<dholbach> rZr: we usually don't do that unless we really intend to maintain the package
<akshay> got to go, this was a lot of fun. Will be back next week. bye
<rZr> so i dont see why we should keep a reference to debian
<dholbach> bye akshay
<james_w> akshay: this session is normally earlier in the day, so don't get caught out.
<rZr> dholbach: I plan to "adopt" this one and pushing into debian then
<RainCT> bye akshay
<dholbach> rZr: in this case the upstream author is listed as the maintainer
<dholbach> rZr: you probably should get in touch with him before changing the maintainer field
<rZr> ok will do then
<dholbach> rZr: I was just surprised you changed it
<dholbach> ok great
<dholbach> <RainCT> QUESTION: Is the priority= field in debian/changelog used for anything in Ubuntu?
<dholbach> RainCT: that's a good question for Kamion :)
<dholbach> the only use of it I know is that dpkg will complain if you tell it to remove an essential package
<LucidFox> RainCT> I assume you meant urgency?
<RainCT> ups, yes
<LucidFox> I've been wondering it as well
<dholbach> oh, you mean urgency?
<dholbach> urgency is not used at all
<RainCT> yes
<dholbach> it's pointless to change it
<LucidFox> while we're at it, what is priority in debian/control used for? Is there any difference between optional and extra for Ubuntu?
<RainCT> (19:38:16) dholbach: the only use of it I know is that dpkg will complain if you tell it to remove an essential package
<RainCT> :P
<dholbach> LucidFox: I think that synaptic (and other package managers if they support it) will display it in different categories
<rZr> dholbach: I feared that XSBC-Original-Maintainer field is tracked and generate unwanted trafic to debian ..
<dholbach> it has its relevance in the policy, but that's all I know
<james_w> essential is not actually part of the priority.
<rZr> dholbach: since no process ever started regarding debian  and this package
<rZr> no RFS or ITP
<LucidFox> rZr> If a package is actively maintained in Debian, Ubuntu generally commits itself to small, nonintrusive changes, and tries to push everything not Ubuntu-specific back to Debian
<dholbach> rZr: no, it doesn't, we still set it for NEW packages (that never were in Debian)
<LucidFox> hence the need for XSBC-Original-Maintainer being the Debian maintainer
<dholbach> all current questions answered?
<rZr> LucidFox: the package i am talking about is a custom built out of debian
<RainCT> james_w: argh I'm stupid today :P
<secretlondo> no - there are more in -chat
<LucidFox> Ooh, Japanese.
<dholbach> <secretlondo> QUESTION: Is there an easy way of reusing PPA work. I'm planning on using my PPA to experiment with packaging
<dholbach> secretlondo: can you explain what you mean by 'reusing'?
<rZr> dholbach: I'll update the debdiff, contact the author and merge it to debian then
<dholbach> rZr: great, thanks
<james_w> <secretlondo> as in getting the same package in, say, intrepid
<secretlondo> getting it into, say, intrepid. In the last session celso said something about making a connection between PPAs and REVU
<rZr> dholbach: debian would never accepted a such package as it was anyway ;)
<rZr> secretlondo: that's would be nice indeed
<rZr> secretlondo: an a branch manager then ..
<dholbach> secretlondo: not right now unfortunately - REVU has features that PPA does not have (diff between uploaded versions, etc), that's why we currently stick with REVU for NEW packages
<dholbach> it's unfortunate and yet another site to register for, but that's all I can say right now
<RainCT> dholbach: eh.. there's no signup :)
<secretlondo> ok
<dholbach> right, you have to join the team and ask for the keyring to be synced
<dholbach> <db-keen> QUESTION: well then ignoring .desktops, how should a Debian package handle files that may or may not be installed based on some system aspect?
<dholbach> db-keen: can you explain a usecase?
<db-keen> Sometimes a program might use a configuration system like GConf if it is available, but can easily work without it, just won't persist settings between sessions
<dholbach> packages usually install files in one place, if they might be needed in another place you can use symlinks for that
<dholbach> if it's files that probably are not needed at all, you could stick them in a separate package that is only recommended or something
<db-keen> I just wouldn't be sure where to put a gconf schema without gconf installed
<RainCT> db-keen: add gconf to recommends or suggests dependending on how necessary it is (recommends are usualy installed automatically, suggests not)
<dholbach> db-keen: just install the gconf schema, it's just a few kb extra, if it's not needed and it's ok to not be used, it will live in /usr/share/gconf/schemas
<dholbach> <polopolo> QUESTION: If I wanna upload a package to ubuntu/debian, is it needed to call the devolper of the upstream package first? or not? and if yes, what if I cannot find the upstream devolper?
<dholbach> polopolo: if you upload a NEW package, you act as its maintainer - that's a role of responsibility
<dholbach> polopolo: because you liaise between the upstream developers, the package's users, other developer and so on
<dholbach> you're one of the important bonds that make open source happen and that ubuntu is built upon
<dholbach> so yeah: it's great if you let upstream know and have a good relationship with them
<dholbach> it's also one of the things that make work in the open source landscape and particularly in Ubuntu so exciting
<dholbach> you're in touch with a lot of people
<dholbach> and if you fix things, you make a lot of people very happy :-)
<polopolo> dholbach: ok, I undersrand it ,well, there are no question, can I ask a personal question?
<dholbach> polopolo: go for it
<polopolo> dholbach: why do you use linux and now windows? howlong do you use linux? howlong do you use ubuntu? and why ubuntu and not mandriva pclox opensuse etc?
<dholbach> I guess you mean "not windows", right? :)
<norsetto> not what?
<dholbach> hehe
<polopolo> yes, not windows sorry
<dholbach> I just use windows for my taxes stuff, there's just no work-able program for that in the Linux world (if somebody knows something that works for German taxes, please let me know)
<secretlondo> there is something as we had a sync request for it as it was on the 2007 version
<dholbach> I've used Linux for 8 or 9 years now and I was always excited by the people and what they make happen
 * secretlondo remembers the bug ;)
<snewland> polopolo: many of us probably have input on that question
<dholbach> I find it so much more usable and it's great fun to be part of the huge community
<dholbach> I used Debian before I used Ubuntu, all the people who invited me to join the community then finally made it
<dholbach> everybody was friendly (and forgiving when I messed things up)
<dholbach> especially seb128, he was really patient with me, when I did not understand shlibdeps in the first place :)
<db-keen> I'm still unsure of how I should be doing this: If gconf isn't installed, should I still be putting files in that directory?
<dholbach> db-keen: yeah
 * seb128 hugs dholbach
 * dholbach hugs seb128 back
<dholbach> it's great to work with seb128 :-)
<dholbach> do we have any other questions?
 * polopolo gonna ask to dholbach: gonna include this personal talk also on the ubuntu wiki or not?
<dholbach> polopolo: sure :)
<dholbach> OK everybody, if that's it, let me give you a few final pointers:
<dholbach> http://wiki.ubuntu.com/MOTU/GettingStarted <- bookmark it and go from there :)
<dholbach> next MOTU Q&A Session every Friday 13:00 UTC
<dholbach> there's also always #ubuntu-motu and ubuntu-motu@lists.ubuntu.com
<dholbach> thanks everybody for this great session - you ROCK
<AstralJava> Got distracted for a bit, but thanks Daniel again for your time! :)
 * polopolo wanna thank dholbach for this session
<pranith> dholbach, thank you
<secretlondo> thank YOU!
<emgent> heya people
<Iulian> Thanks dholbach!
<dholbach> next up we have Stefan sistpoty Potyra - a great guy, MOTU for quite some time and somebody who always manages to make time for you
 * sistpoty bows
<sistpoty> thanks for the introduction dholbach :)
<jpatrick> RainCT: /usr/share/applications/kde/ or kde4?
<term-inal> hello
<dholbach> He's going to give you a two hours talk about Library Packaging
<RainCT> jpatrick: both
<dholbach> so keep your favourite drink handy and enjoy the show!
 * dholbach hugs sistpoty
<phoenix24> Hello sistpoty !!
 * sistpoty hugs dholbach
<sistpoty> at least I hope, we can do the session in two hours
<sistpoty> (last time, it was much longer, but I try to be short ;)
<sistpoty> ok, so who's around for library packaging?
<sistpoty> raise your hands ;)
<daishujin> +
<phoenix24> raises!
 * secretlondo is lurking as this will be too hard
<AstralJava> o/
<snewland> same here, lurking
<\sh> sistpoty: renewing my knowledge so let's do it
<dholbach> +1 :)
 * daishujin hopes he understands some of this session
 * polopolo is here to learn!
<sistpoty> ok, first off... this session will be a two part session
<barcc> +0.5
<sistpoty> in the first part, we'll learn the grey theory with some practical examples
<sistpoty> -> everything you don't know about symbols and always wanted to ask ;)
<sistpoty> in the second part, we'll take a look at a practical example, together with a few more hints
<sistpoty> for the first part, I guess all you need is readelf, gdb, nm, gcc, objdump (I guess build-essential is enough to have installed for these)
<sistpoty> in the first part, we'll take a close look at shared objects...
<sistpoty> shared objects can be used in two ways:
<sistpoty> 1) as a plugin mechanism (to be loaded with dlopen)
<sistpoty> and 2) as shared libraries
<sistpoty> we'll focus solely on 2) here
<sistpoty> an ELF shared object (.so) is a collection of symbols together with some meta-information
<sistpoty> a symbol denotes any named entity in c (or c++), e.g. a function call or a (global) variable
<sistpoty> one of the meta-information about a symbol in a shared object is the section it resides in
<sistpoty> e.g. if it has a default value, can be executed... we'll soon look at this
<sistpoty> actually now... so everyone get http://www.potyra.de/library_packaging/example.c
<sistpoty> oh, if there are any questions, don't hesitate to ask :)
<sistpoty> everyone got that file?
<phoenix24> yep
<sistpoty> then let's compile it:
<snewland> yes
<sistpoty> gcc -c example.c -o example.o
<sistpoty> now let's take a look at the (not yet shared) object file...
<sistpoty> nm example.o
<sistpoty> what you see there, are the symbols in the object file
<sistpoty> the rightmost thing is the name
<sistpoty> the letter before is the type of the symbol
<sistpoty> upper case letters denote, that the symbol is visible outside of the object file as well
<sistpoty> while a lower case letter means that it is local to the symbol
<sistpoty> hence, e.g. extern_global could be used by a different c-file while static_global could be only used from the c-file we just compiled
<sistpoty> short overview of the types, and what they mean:
<sistpoty> t -> text section (may be mapped readonly), executable
<sistpoty> d -> initialized data (statics, initialized globals)
<sistpoty> c -> uninitialized data (uninitialized globals)
<sistpoty> r -> read only data (const variables), not necessarily read only though.
<sistpoty> u -> undefined. We use a symbol from elsewhere, which will get resolved later by the loader
<sistpoty> you can find these in the manpage of nm for reference
<sistpoty> now, let's compare this with the c-code
<sistpoty> for example the symbol "extern_global" is defined as "int extern_global;"
<sistpoty> it's not initialized with a value, hence the type nm spits out is "c"
<sistpoty> and since it can be used from other c-files, it's an upper case letter
<sistpoty> any questions so far?
<snewland> surprisingly clear so far
<sistpoty> ok, let's build a shared object from example.c
<AstralJava> Just a clarification that you probably meant "local to the module", instead of *symbol.
<AstralJava> Err... that was a question, sorry. :)
<sistpoty> *looking* (I pasted some stuff *g*)
<AstralJava> Gotcha. :)
<sistpoty> AstralJava: can you give me the line? ;)
<snewland> sistpoty: while a lower case letter means that it is local to the symbol
<AstralJava> Yes, that.
<sistpoty> ah... right... of course local to the object file (or c-file that gcc translate to an object file)
<sistpoty> <phoenix24> sistpoty: QUESTION : Why is there no symbol information for "int local_var" (local_function)?
<sistpoty> good question, phoenix24: anyone got the answer for him?
<phoenix24> Coz its a local variable ?
<snewland> those would be taken from the local system?
<sistpoty> phoenix24: exactly
<phoenix24> but, static_local_var is static.
<sistpoty> local variables inside functions reside on the stack
<sistpoty> these will get put on the stack, once the function is called, and will get removed when the function returns
<phoenix24> thanks!
<sistpoty> hence these are not part of the object file
<sistpoty> however static local variables will be in the data section... because they keep their value in the next funciton call
<sistpoty> -> part of the object file
<sistpoty> ok, now let's build a shared lib, shall we?
<phoenix24> yep!
<sistpoty> gcc -Wl,-z,defs -Wl,-soname,libexample.so.1 -fPIC -shared example.c -o libexample.so
<sistpoty> the -Wl,... are commands that gcc passes to the linker
<phoenix24> please explain a bit on them.
<sistpoty> ok, the first one basically tells the linker, that it needs an entry for every symbol (i.e. no unresolved symbols)
<sistpoty> note, that an "U" entry is ok here as well
<sistpoty> because that would mean that it is linked against an shared object, which contains the symbol (the implicit libc, which gcc will always add here)
<sistpoty> I'll come to the soname part later in the session... this option will specify that libexample.so should have the soname libexample.so.1
<slangasek> sistpoty: might I interject a clarification regarding -Wl,-z,defs?
<sistpoty> slangasek: sure
<slangasek> what that option really means is that, at build time, ld must be able to find a match for each undefined symbols in one of the shared objects that you're linking against
<slangasek> i.e, it controls *how* " U " symbols are handled
<sistpoty> thanks for the clarification slangasek!
<dooglus> specifically, does -Wl,z,defs mean that ld will be passed the "-z defs" flag?
<sistpoty> dooglus: exactly
<dooglus> thanks
<sistpoty> -Wl,something means to pass something as an option to ld
<sistpoty> the -fPIC will tell gcc to produce position independent code... I'll just say that it is needed to shared objects and not go into details here ;)
<sistpoty> finally, -shared tells gcc to produce a shared object
<sistpoty> now, to match the shared objects, you have on the system, let's strip it
<sistpoty> strip libexample.so
<sistpoty> +.1
<phoenix24> +1
<sistpoty> erm... what I wrote... (just messed things up locally *g*)
<sistpoty> let's take a look again with nm
<sistpoty> nm libexample.so
<snewland> oops
<phoenix24> No symbols : nm: libexample.so: no symbols
<sistpoty> let's try to get it right... as it's a shared object, we're interested in the dynamic symbols
<sistpoty> nm -D libexample.so
<dooglus> sistpoty: can I ask a question?
<sistpoty> dooglus: sure
<phoenix24> +1
 * siretart notices that the output of eu-nm (from elfutils) is much clearer that binutil's nm
<dooglus> sistpoty: this "so" is a shared object - has any linking been done yet?  when we were talking about options being passed to ld, has that happened yet?  the term 'shared object' makes me think it hasn't been linked yet (like a .o hasn't)
<sistpoty> dooglus: good one
<sistpoty> for a shared object, linking has been done
<slangasek> yes, it's "partially" linked, with final linking happening at runtime via ld.so
<dooglus> I thought so - I 'damaged' one of the 'fprintf's in the file, and it refused to compile any more - I was surprised.
<siretart> there isn't much difference between an ELF shared object and an executable. the executable happens to have a function called main(), though :)
<dooglus> ok, thanks
<snewland> so does the ELF
<snewland> siretart: have a main I mean
<sistpoty> snewland: yes, because the main is still in there (s.th. libraries usually don't contain)
<snewland> k thanks
<slangasek> dooglus: you might like to compare the results with and without the -Wl,-z,defs
<slangasek> (in the case of damaging the fprintf)
<sistpoty> there are also other tools to look at the shared object's information
<sistpoty> let's try readelf -s libexample.so
<dooglus> with the -Wl,z,defs I see "example.c:(.text+0x56): undefined reference to `myfprintf'" - without it I see no error at all
<sistpoty> exactly, because in the first call, the linker definitely wants to resolve myfprintf, in the second one it won't
<snewland> dooglus: I thought the command was -Wl,-z,defs
<dooglus> snewland: I typed it out badly by hand there.
<sistpoty> ok, let's take a look at the output of the readelf command
<sistpoty> anything interesting that you note?
<snewland> size 0
<eddyMul> @GLIBC_2.0
<sistpoty> I'm not too sure what size 0 means exactly (probably, that it doesn't take any storage space in the shared object itself)
<sistpoty> but let's look at what eddyMul has found
<sistpoty> these are versioned symbols
<sistpoty> i.e. the name of the symbol contains a version as well
<sistpoty> oh, I should explain s.th. first
<sistpoty> in an shared object (and a normal object as well), there can be only one symbol with a specific name
<sistpoty> (apart from dirty linker commands getting used)
<sistpoty> that means, you couldn't have two symbols with the name stderr
<sistpoty> however, in the c-library uses versioned symbols, hence the version is part of the symbol
<dooglus> GLIBC is written all in capitals; I've never seen it in capitals before
<sistpoty> so stderr could be defined for example by an older version as well
<sistpoty> however this symbol from our shared object would then always get resolved to the one of 2.0
<sistpoty> (or mine against 2.2.5)
<sistpoty> printing out symbol versions is s.th. which afaik nm doesn't do
<sistpoty> hence, when looking at libraries, nm should be avoided
<sistpoty> you can also use objdump to look at a shared object
<sistpoty> it can tell other important information as well
<sistpoty> let's try this
<sistpoty> objdump -x libexample.so
<sistpoty> this will produce lot's of output
<sistpoty> objdump -p libexample.so
<sistpoty> will give much less output with the most interesting information
<sistpoty> so let's see what objdump -p libexample.so will tell us
<sistpoty> the most interesting bits are
<sistpoty> the SONAME
<sistpoty> and the NEEDED enty (there can and usually is more than one NEEDED entry)
<sistpoty> the SONAME entry denotes some kind of "version" of the shared object, denoting a stable abi
<sistpoty> that means basically that you can always use a newer version of a library with the same SONAME as an older version
<sistpoty> and your program using it will still work
<sistpoty> anyone recalling, where the SONAME entry came from?
<stdin> gcc -Wl,-soname...
<sistpoty> stdin: perfect
<AstralJava> Damn, beat me to it!
<sistpoty> however that means, that someone set it manually
<sistpoty> or in other words, if the person who set it did s.th. wrong, you might end up with a changed ABI
<sistpoty> let's take a look what problems can arise by an example
<sistpoty> first, let's get http://www.potyra.de/library_packaging/libmyhello-1.0.1.tar.gz
<sistpoty> extract it and compile it
<sistpoty> tar -xvzf libmyhello-1.0.1.tar.gz
<sistpoty> make
<sistpoty> if you've got it, please install it (with root privs):
<sistpoty> sudo make install
<sistpoty> no worries, it will only place stuff under /usr/local, and comes with an uninstall rule as well
<AstralJava> We're brave people. :)
<sistpoty> of course you can look at the makefile, if you don't trust me :P
<sistpoty> now run ldconfig (with root privs as well), so that ld will be notified to look out for s.th. new
<sistpoty> of course a library alone is no fun yet, so you want a program using it as well: http://www.potyra.de/library_packaging/hello_prog-1.0.tar.gz
<sistpoty> you'll only need to compile this one
<sistpoty> let's try it: ./hello_prog 10
<sistpoty> amazing software, right? *g*
<sistpoty> everyone got it so far?
<AstralJava> Yup.
<barcc> +1
<sistpoty> ok, so now let's check out the new library version
<sistpoty> http://www.potyra.de/library_packaging/libmyhello-1.0.2.tar.gz
<sistpoty> you should know the procedure... extract, make, sudo make install
<sistpoty> if you've got it, please try to run the application again (not to rebuild it, just run the one you've got)
<AstralJava> Eeewwww.... symbol lookup error!
<sistpoty> ok, let's try to find out what happened...
<sistpoty> look at the symbols, that are undefined in hello_prog
<sistpoty> readelf -s hello_prog
<sistpoty> in readelf, these are listed as "UND" btw.
<sistpoty> you'll see, that hello_prog will want a symbol called print_hello
<sistpoty> if you look at the old shared object, there indeed is such a symbol
<sistpoty> 7: 00000000000005a0    32 FUNC    GLOBAL DEFAULT   11 print_hello
<sistpoty> the new library however doesn't come with one
<sistpoty> hence, the ABI is obviously not stable
<sistpoty> the term ABI refers to the abstract binary interface
<sistpoty> it means, the symbols (by name) defined in the shared object and their type
<sistpoty> for functions, it also means how the symbols can be used (i.e. how many parameters must the function have, and of which type must these be)
<sistpoty> as you've seen, once you remove a symbol, the ABI is not stable (because any program might have used it)
<sistpoty> the type of a symbol shouldn't change as well
<sistpoty> this information can be easily found out with the tools you know so far
<sistpoty> however to find out the arguments of a function call, symbol names and type alone are not sufficient
<AstralJava> Was just about to ask. :)
<sistpoty> one possibility is to use the debug information (which however is no longer present in binary packages)
<sistpoty> for debug information, gdb is our tool of choice
<sistpoty> let's try (pick one of the two library versions you like)
<sistpoty> gdb libmyhello.so
<sistpoty> inside gdb, you can type
<sistpoty> info functions
<sistpoty> you can also look at the type (as in the programming language's type, not to confuse with the symbol type) with
<sistpoty> info variables#
<sistpoty> -#
<sistpoty> however this will only work, if debugging symbols are still present
<sistpoty> you can compare this, after running strip on the shared object
<sistpoty> ok, how about makeing a 5 minute break now, and then sum up part 1 and start with part 2?
<AstralJava> Works for me.
<sistpoty> ok, then let's continue at 20.15 UTC (in the hope my local clock is correct)
<sistpoty> everyone back?
<barcc> +1
<sistpoty> ok, let's sum up part 1
<AstralJava> Yep.
<sistpoty> so far, we've learned that we can lookup the symbols via nm, readelf and objdump
<sistpoty> a stable ABI means, that no symbols are removed and the symbols type is not changed... also that the corresponding c-convention (e.g. number of arguments of a function, type of arguments of a function, type of a variable) is not changed
<sistpoty> in contrast (what I didn't mention yet), is the API
<sistpoty> a stable API denotes, that a program will still be able to compile with a new library
<sistpoty> you can have a stable API but have breakages in the ABI of course
<sistpoty> e.g. if things get moved from a c-file to inlined version in the header file
<elisee> (I just managed to catch up, very instructive so far :))
<sistpoty> if the SONAME stays the same, it means that the library author *believes* that the ABI is stable
<sistpoty> but it's no guarantuee, since it's set by a human ;)
<sistpoty> oh, one thing I missed: the NEEDED entry
<sistpoty> or entries
<sistpoty> the NEEDED entry in a shared object means, that a shared object with such a SONAME is needed
<sistpoty> (likewise in a elf-binary aka program)
<sistpoty> it's needed, because unresolved symbols, which the loader will resolve are defined there
<sistpoty> let's take a short look at a real world example
<sistpoty> objdump -p /usr/lib/libgnome-2.so.0
<sistpoty> (in the hope, that everyone has this shared object)
<sistpoty> these NEEDED entries point to shared objects (with the same SONAME), that contain symbols that libgnome-2.so.0 uses, but doesn't define
<sistpoty> I guess you all know ldd
<sistpoty> let's compare
<sistpoty> ldd /usr/lib/libgnome-2.so.0
<sistpoty> can anyone spot the difference?
<phoenix24> sistpoty: please brief about ldd.
<sistpoty> phoenix24: ok
<elisee> ldd seems to return the whole dependency tree with path to the SO file
<sistpoty> ldd will basically do the same thing, that the loader will do
<sistpoty> i.e. it will resolve the NEEDED entries to shared objects
<sistpoty> and as elisee wrote, will do the same for the shared objects found as dependencies as well
<slangasek> in fact, ldd uses the loader to do what it does ;)
<sistpoty> it will finally spit out the *pathes* to the shared object it found
<sistpoty> heh
<elisee> linker / load = the same program?
<elisee> with different options
<elisee> -load+loader
<sistpoty> elisee: nope... the linker is used at *compile* time... to find out the NEEDED entries
<slangasek> by "loader" here we're talking about ld.so, which is the runtime linker, yes
<sistpoty> elisee: the loader will take the NEEDED entries as input and find the object file at *run time*
<elisee> sistpoty, I get that
<elisee> and ld.so is automatically loaded by the OS? because it's a shared object too, right?
<phoenix24> got it.
<sistpoty> elisee: that's what I assume, but I guess slangasek could tell in more detail ;)
<slangasek> elisee: the way this works under Linux is that when you exec() a program, the kernel looks at the head of the file, sees that it's an ELF file, and passes control to ld.so to work out what to do with it
<elisee> at least it looks like, according to the ld.so man page
<elisee> ok thanks a lot, all of this is so instructive
<sistpoty> finally, a very important note, which we'll dig into in part 2: shared objects with a different SONAME can be installed side-by-side
<sistpoty> any further questions to part 1 so far?
<elisee> nope
<sistpoty> ok, then let's go for part 2
<phoenix24> yes!
<sistpoty> while my plan was to actually have everyone package libmyhello, I guess we'll never do that in time
<sistpoty> luckily, I've got s.th. prepared, let me look at where to get it :)
<sistpoty> bzr branch http://bazaar.launchpad.net/~sistpoty/+junk/library-packaging-session
<sistpoty> (in the hope, that everyone has bzr installed)
<elisee> i guess anyway it can be quickly installed by anyone through Ubuntu repositories
<sistpoty> :)
<sistpoty> everyone got it?
<barcc> +1
<elisee> ok for me
<sistpoty> ok, since this contains the upstream code as well, we'll first need to make a tarball of it
<phoenix24> +1
<sistpoty> cd libmyhello/0.1 && make dist
 * sistpoty tries to remember the funny build system used for the package
<elisee> I don't know much about packaging, and I wonder : does that kind of Makefile gets written by a human-being?
<elisee> or do tools do it for us?
<sistpoty> elisee: is this a question whether I am human? :P
<sistpoty> (I wrote everything there by hand)=
<LaserJock> elisee: he's not
<elisee> sistpoty, aren't you? ;)
<sistpoty> heh, no comment *g*
<LaserJock> he's an advanced cyborg cron job
<AstralJava> So AI devel is much further than They(tm) let us believe, huh?
<phoenix24> ;)
<elisee> :p
<sistpoty> ok, if you've got the make dist, you'll need another dir
<sistpoty> in libmyhello, make the directory work
<sistpoty> if you've got that, go to the subdir packaging, and just call make (this will place some symlinks into ../work)
<sistpoty> oh, hard links, it seems
<sistpoty> it will also extract the packaging I prepared
<sistpoty> everyone got it so far?
<elisee> got it
<sistpoty> ok, first off, before looking at anything, a *very* good resource is the debian library packaging guide... keep that under your pillow, when working on libs ;)
<sistpoty> http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html
<phoenix24> subdir named "packaging ?",
<elisee> phoenix24, library-packaging-session/libmyhello/packaging
<sistpoty> phoenix24: libmyhello/packaging
<sistpoty> if everyone got it, let's start with the control file library-packaging-session/libmyhello/work/libmyhello-1.0.1/debian/control
<sistpoty> the work directory should contain the extracted package, hence libmyhello-1.0.1 in there is the directory which I'll refer from now on
<sistpoty> in debian/control, there are two (binary) packages for this library defined
<sistpoty> that's pretty much standard (except some libraries ship an application as well, or have big documentation)
<sistpoty> the first one, will contain the shared object
<sistpoty> the libmyhello1 package name is special:
<sistpoty> it is related to the SONAME that is defined in the shared object it contains
<sistpoty> since shared objects with a different SONAME can be installed side-by-side, the packaging must respect this
<sistpoty> hence the relation of the package name to the SONAME, but it also has other consequences
<sistpoty> in libmyhello1, there mustn't be a file which would have the same name (in the same directory) as a file from a shared object with a different SONAME
<sistpoty> hence putting e.g. a manpage, or an application in there won't work
<sistpoty> this package is the thing, which will (on the users) system usually get installed, because another package (usually an application using this shared object) draws in
<sistpoty> others than that, there is no much use to install it directly
<sistpoty> in contrast, the -dev package contains everything that is needed to compile programs against the shared object
<sistpoty> this means the header files which programs must include, but also in our case the libmyhello1.so symlink
<sistpoty> erm... sorry libmyhello.so symlink in /usr/lib
<sistpoty> now, what's that symlink good for?
<elisee> there's no version in it because we link against a share object and not an abi version, right?
<sistpoty> elisee: right
<sistpoty> usually, we'll always want to call s.th. like
<sistpoty> gcc -lsomelib
<sistpoty> this will make gcc to search for a shared object call libsomelib.so
<sistpoty> in the library path
<sistpoty> (it prepends lib and appends .so, iirc .a is also possible if no .so is found, but I'm not 100% sure on this)=
<sistpoty> hence it makes sense to include the .so in the -dev package, so that programs will find the (right) shared object when linking
<sistpoty> oh, for the .a: these are static libraries
<sistpoty> since these will be part of the resulting program, and won't get loaded at run time, there is no such thing as a SONAME for these
<sistpoty> It's simply not needed
<elisee> so one can't name a .so file without lib prepend to it? or will it first try without the lib?
<sistpoty> hence these are also part of the -dev package (if there)
<elisee> without the 'lib' prefix I mean
<sistpoty> elisee: I'm not 100% sure, but what I know: yes
<elisee> ok
<sistpoty> (and looking at my /usr/lib/ directory seems to underline that)
<sistpoty> elisee: of course plugins (which are also shared objects, opened via dlopen) can use whatever names they wish
<sistpoty> but we didn't want to look at these here ;)
<elisee> ok
<sistpoty> back to the control file
<sistpoty> the -dev package must always add a (hard) dependency on the shared object
<sistpoty> on the package containing the shared object
<sistpoty> because you can't link anything with just a symlink ;)
<sistpoty> that's the depends line of libmyhello-dev
<sistpoty> others than that (and where the example is not too exact), the -dev package must also make sure, that every library, that's needed for compiling is drawn in
<sistpoty> e.g. if I'd use stuff from libasound2 (because it's e.g. included from libmyhello headers) then there must be a dependency on libasound2-dev
<sistpoty> oh, sometimes, it makes sense, to also name the -dev package correlating to the soname, in case you want to have more than one version of the library in the archive
<sistpoty> e.g. if many apps won't compile with the new version
<sistpoty> ok, so why do we need to make sure, that the library package (libmyhello1) is installable together with a package of a different SONAME (e.g. libmyhello2), even if we plan to have only one version in the archive?
<sistpoty> anyone?
<elisee> because the user might need two versions of the library
<h3sp4wn_> upgrades maybe ? (either way aptitude wouldn't have that issue)
<elisee> because he has two programs needing these two different versions
<sistpoty> exactly elisee and h3sp4wn_
<sistpoty> just consider, that the user has a package called hello_prog installed. It was built and got the dependency on libmyhello1
<sistpoty> now libmyhello2 is available
<sistpoty> the library however won't get upgraded (unless a different package needs it)
<sistpoty> and libmyhello1 can only be uninstalled, in case hello_prog was removed
<sistpoty> so in the archive, we'd rebuild hello_prog. That way it will pick up libmyhello2 as a dependency
<sistpoty> then, and only then, hello_prog of the user can get upgraded (and this would draw in libmyhello2 then). However libmyhello1 wouldn't automatically go away
<sistpoty> got it?
<elisee> (yep)
<AstralJava> Figured as much. So how do we get rid of deprecated libs when no app needs them anymore?
<sistpoty> AstralJava: since these (should) always get drawn in by s.th. and not installed by hand, "apt-get autoremove" will do that trick
<elisee> the package managers usually provide a way to remove no-longer-needed automatically installed dependencies
<elisee> yeah, apt-get autoremove, that's what I mean
<elisee> +t
<AstralJava> Okay thanks!
<elisee> :)
<sistpoty> ok, I guess debian/rules is not too exciting. maybe apart from one call
<sistpoty> dh_makeshlibs
<sistpoty> this one will create a shlibs file
<sistpoty> an shlibs file contains the info, which library package contains which shared object (together with the version of the library package that's needed for it)
<elisee> it's built with the info we've just put in control?
<sistpoty> this is a special part of a debian package... you can find all shlibs files of installed packages in /var/lib/dpkg/info
<sistpoty> elisee: yes. It also can contain the info that a specific version is required (I'll come to that in a minute)
<sistpoty> specific version of the package even
<elisee> sorry, yet another question: can't figure out what "dh" means in dh_makeshlibs
<sistpoty> elisee: that means it's a debhelper command
<elisee> okay
<sistpoty> debhelper contains commands to make common needed tasks of packaging easier
<sistpoty> e.g. dh_shlipdebs is basically a wrapper to dpkg-shlipdeps...
<sistpoty> which will take care that anything with ${shlibs:Depends} in debian/control will get replaced by a dependency to the library package
<sistpoty> now how does it do that?
<sistpoty> it looks up the NEEDED entries (with tools, we've learned in part 1) of every elf (both binaries and shared objects) and checks via the shlibs files on the system, which package it needs
<sistpoty> now let's reconsider part 1... a stable abi (and hence a stable SONAME) means no symbols get removed and their type and meaning don't change
<sistpoty> however upstream could add new features (e.g. new functions) which would result in new symbols
<sistpoty> and the ABI would still stay the same
<sistpoty> i.e. programs that use the old shared object can use the new shared object
<sistpoty> but what, if a program uses exactly one of the new symbols?
<sistpoty> it could then not run with an old shared object not containing the symbol yet, which however is not different in regards to the soname
<sistpoty> hence on the mere basis of an SONAME there doesn't seem to be a solution
<sistpoty> luckily the debian packaging system can help here
<sistpoty> as I stated earlier, the shilbs file may also contain a version
<sistpoty> you can specify the version that goes in there with the -V parameter of dh_makeshlibs
<sistpoty> so, in case there are new symbols in a package, you'll always want to use that:
<sistpoty> any program, that uses the newer functionality, cannot compile against the old version (we've seen what happens with -Wl,-z,defs)
<sistpoty> so it will need to compile the newer version of the -dev package... and the shlibs mechanism contains then a shlibs file which will state:
<sistpoty> you'll need a this version or a later one of lib...
<sistpoty> was that too fast?
<elisee> so there's a numbering scheme inside the shlibs different from the SONAME version?
<slangasek> correct
<slangasek> SONAME documents each backwards-incompatible ABI change
<slangasek> shlibs gives you the other piece, to document backwards-compatible ABI changes
<elisee> I don't really know what these shlibs are in fact, but maybe it's not the purpose to explain this now
<sistpoty> oh, then I *was* too fast
<sistpoty> let's try again...
<sistpoty> if you've got a shared library with a given soname, the shlibs file will basically say in what debian package this can be found
<sistpoty> but it will also say what version of the debian package you need (at least)
<sistpoty> in case a program gets built, which contains NEEDED entries (i.e. uses symbols from some shared object)
<sistpoty> the shlibs file will be used to lookup in what package the shared object is
<elisee> ok, that's much clearer this way for me
<sistpoty> this is then added as a dependency to the programs package (actually ${shilbs:Depends} in debian/control will get replaced by the found entries)
<sistpoty> ok, any other questions?
<AstralJava> Probably loads, but they might pop up in practice. Can't think of any right now.
<sistpoty> ok, then I guess one final hint (as I've once again used more time than available):
<sistpoty> as we learned today, the most difficult bit is *upgrading* a library package
<sistpoty> there, you must ensure, that the ABI doesn't break
<sistpoty> of course you should also keep a look what packages build against this package (not that you'll upgrade it and every using package won't build any longer)
<sistpoty> but the tricky part is to ensure ABI stability
<sistpoty> I hope, you learned some tools with which you can check that today
<AstralJava> Definitely! What a fantastic session it was.
<elisee> thanks a lot :)
<sistpoty> others than that, there exists a package which can be a help, but I forgot it's name... slangasek: what creates the manifest again?
<sistpoty> ok, sorry I really have completely forgotten the name of the package...
<sistpoty> however thanks for coming, and I hope once you'll maintain a library package, you'll be prepared ;)
<AstralJava> Can you post it on ubuntu-motu@ or something later on?
<sistpoty> AstralJava: you mean which package I mean?
<AstralJava> Again, thank you very much for this, hugely appreciated! :)
<AstralJava> sistpoty: That's right, if/when you recall or somebody else verifies it.
<sistpoty> it must be in the old logs... but I'll post it ;)
<slangasek> sistpoty: manifests are created by dpkg-dev itself now, no?  dpkg-gensymbols?
<slangasek> or icheck, for API manifests
<sistpoty> slangasek: no, that package which parses the c-code and produces a .manifest file
<slangasek> icheck
<sistpoty> thanks!
<AstralJava> Gotcha.
<AstralJava> Thanks, Stefan and Steve.
<sistpoty> (strange enough I was searching for iwcheck the whole time... close but no hit)
<sistpoty> thanks for listening ;)
<sistpoty> now, I'll have a cool drink :)
<AstralJava> Well deserved it too. :)
<elisee> leaving, have a good night (or maybe day) everyone
 * slangasek waves
<AstralJava> Me too, was a fine day today. Hope to see similar soon again. :) Bye all.
#ubuntu-classroom 2008-02-24
<guest2k7> ftp://anonymous:anonymous@80.109.44.199:32767
<CarlSpackler> hello, I added a new user, non-sudo, to my ubuntu, but every time I click the logout button or choose this from the menu it doesn't allow the non-sudo user to logout, why not and how may I change this behavior?
<nalioth> CarlSpackler: see /topic here     ( support is in #ubuntu )
<CarlSpackler> nalioth, i can't join it tor users are banned, i've asked this question for 4 hours in other ubuntu channels but no one knows
<Zelut> We're going to have a short meeting in here to revive the ubuntu-classroom team. Beginning in 18 minutes.
 * herlo is here just because Zelut asked
 * Zelut gives herlo a big gold star for participation.
<Zelut> ##### Ubuntu Classroom Revival Meeting - BEGIN #####
<Zelut> If you're wanting to participate in the meeting to revive The Ubuntu Classroom, you may want to join us in Gobby as well for the agenda
<herlo> Zelut: oh, gobby too?
<herlo> nice
<Zelut> herlo: gobby too.  gobby.ubuntu.com - 'classroom' document.
<herlo> already logged in
<Zelut> Let's give a minute for anyone else to get gobby and get joined
<herlo> :)
<herlo> Zelut: I should mention, I've been working on the gig for fedora, its coming along nicely, but its not updated on the wiki yet...
<herlo> I'll drop what i have in the ubuntu gobby if you like
<Zelut> sure
<visualdeception> hello all
<TheZealot> hey VD
<TheZealot> where is the gobby info?
<visualdeception> aptitude install gobby
<TheZealot> its installed
<herlo> gobby.ubuntu.com
<visualdeception> alt+f2 then run gobby
<visualdeception> then put in classroom.ubuntu.com
<visualdeception> woops
<herlo> visualdeception: you put in classroom?  I put in gobby
<Zelut> visualdeception: gobby.ubuntu.com, open the document (within gobby) called 'classroom'
<visualdeception> gobby.ubuntu.com
<TheZealot> yeah, thats what I needed, the hostname
<TheZealot> good deal
<Zelut> lets go ahead and get started.  may as well just hold the meeting inside gobby with its chat feature.
<Zelut> TheZealot: it looks like you're in gobby but not in the document with us.  Need any assistance?
<TheZealot> which document are we viewing?
<TheZealot> I came in after it was said I think
<herlo> classroom
<TheZealot> got it thanks
<herlo> np
<pleia2> Zelut: I can't participate inside gobby, sorry :(
<pleia2> so uh, just poke me if you need anything I guess
<herlo> pleia2: why not?
<pleia2> I'm on my very very very old laptop that won't run it
<herlo> ahh
<Zelut> pleia2: ohh, forgot about that.
<pleia2> hrm, it's slow but I'm trying
<pleia2> ok, seems I can do the chat bit anyway :)
<popey> :)
<pleia2> :)
<visualdeception> lol
 * visualdeception is seth
 * Laney rocks out
<Laney> OK, back to Haskell. Dissertation = :(
<visualdeception> yuck
#ubuntu-classroom 2009-02-17
<abasfe> exit
#ubuntu-classroom 2009-02-19
<DuhPimpKillah> Hello all
<DuhPimpKillah> I would like to know how to get Synaptic Package Manager to return english only downloads....
<DuhPimpKillah> Sometimes when I search for downloads I get various other languages that don't do me any good
<DuhPimpKillah> So I thought maybe someone here knows the answer to my question
<DuhPimpKillah> WAKE UP!!!
<DuhPimpKillah> Knock Knock
<DuhPimpKillah> Anyway, two suggestions I see are to lock the applications I already have which isn't good because I need this for new applications also
<DuhPimpKillah> another suggestion is: sudo apt-get install localepurge
<DuhPimpKillah> but i have no idea what that does
<DuhPimpKillah> well, it looks like localpurge also only works on already installed files
<sum-it_> samsung732n
#ubuntu-classroom 2009-02-20
<rdesfo> hello
#ubuntu-classroom 2009-02-21
<kitti> where do the newbies  go from here?
<Climbr3> wazzabi'
#ubuntu-classroom 2010-02-22
* 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
<humphreybc> yay!
<humphreybc> https://wiki.ubuntu.com/ubuntu-manual/
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: An introduction to the project - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<humphreybc> okay, hi everyone
<humphreybc> won't be a second we're just sorting out some last minute stuff
<humphreybc> So i'll just explain how we can ask questions, presuming it works xD
<humphreybc> If you want to ask a question, preface it with QUESTION:
<humphreybc> and I'll answer them either straight away or when i have time
<humphreybc> set /mode +v $godbyk
<humphreybc> nope
<humphreybc> hehe
<humphreybc> right! we're in business
<humphreybc> apart from the slideshow
<humphreybc> navigate to here guys, http://kevin.godby.org/ubuntu-manual/talks/
<humphreybc> Lernid should do it automagically
<humphreybc> and you want to download "intro.pdf"
<humphreybc> Lernid doesn't seem to let you download files, so you might have to go in your browser
<humphreybc> sorry about this
<humphreybc> okay so i'm going to jump back to the main wiki page, https://wiki.ubuntu.com/ubuntu-manual
<humphreybc> I'm going to presume everyone has the slides now... :P
<ClassBot> MrLimeni asked: Should we see slideshow inside lernid?
<humphreybc> MrLimeni: yes, you should in theory - but at the moment it isn't working because of a technical problem :(
<humphreybc> We should have it working by the second set of sessions
<humphreybc> Sorry about that
<humphreybc> okay, so we'll start :)
<humphreybc> Hi everyone, my name is Benjamin Humphrey and I'm the leader of the UMP - Ubuntu Manual Project
<humphreybc> What i'll be covering today is listed in the first slide, but basically I'll explain what the project is, who it's for, what we want to achieve and how we'll achieve it
<humphreybc> I'll also talk about the key people, quickshot, and of course how you can help :)
<humphreybc> If you scroll down and have a look at slide 2
<humphreybc> and also you can read some of the wiki page in Lernid above, if you're using Lernid
<ClassBot> andypiper asked: I assume you prefer Benjamin rather than a shorter form? :-)
<humphreybc> andypiper: I don't mind, you can call me Benjamin or Ben :)
<humphreybc> So basically I started out the manual project at the end of last year
<humphreybc> I was a beginner to Ubuntu once too, and I found a lack of up to date documentation in an easy to understand language
<humphreybc> Inspired by Keir Thomas' Pocket Guide and other types of books, I began writing the manual myself - but then realised it would be beneficial to open it on launchpad for collaboration. So I did :)
<humphreybc> We soon got a lot of media attention because apparently people thought our project was quite cool, and we got a lot of contributors in a short space of time. Since then, in the last 2 months, we've made a huge amount of progress and I am very very grateful to those who have helped so far
<humphreybc> So moving to the manual itself, we use a combination of LaTeX, bzr and launchpad to manage the key parts of the project
<humphreybc> LaTeX is good because it supports a tonne of output formats, is fairly easy to get into and learn, and also supports translations
<humphreybc> At the moment we're just focussing on a PDF for lucid
<humphreybc> but in the future we will output to HTML5 as well
<humphreybc> We are also working on different paper sizes and orientations, like double-up for printing etc
<humphreybc> and we are being really nice and tying paper sizes to country/language
<humphreybc> for example, the en_US version will be in US letter, the en_GB version will be in A4.
<humphreybc> We are also incorporating many localized screenshots, because a picture is worth a thousand words
<humphreybc> So that's an overview of the project. What we want to achieve is:
<humphreybc> We'd like to be on the default Ubuntu CD
<humphreybc> We would like to have a manual in as many languages as possible
<humphreybc> We would like to have a manual in as many formats as possible
<humphreybc> We want to make it easy and enjoyable for people of all ages to pick up Ubuntu, and that's the way it should be. We are trying to stay away from jargon and the terminal, things that make Ubuntu and Linux in general confusing
<ClassBot> HomoGleek asked: Space wise, what size would it be?
<humphreybc> HomoGleek: At the moment, we're not sure. It's a bit too hard to tell. It is about 600kb with 90 pages of text, no screenshots. We're going for 200 pages including screenshots, so probably 3-5mb.
<humphreybc> That's quite a lot for documentation, so we have been considering a cut down version for the CD.
<humphreybc> if you've looked at the manual, you'll see it's in two parts - beginner and advanced
<humphreybc> we could just include the beginner part on the CD
<humphreybc> okay so moving on
<humphreybc> you know what it's about, what we want to achieve
<humphreybc> Who it's for (slide 3)
<humphreybc> We are not aiming at Linux geeks - this isn't an all encompassing publication where we mention every single command on the CLI
<humphreybc> but on the other hand we don't say "this is a mouse." "this is a screen."
<humphreybc> We assume a basic understanding of what a computer is and how to use their own hardware
<humphreybc> And from there we teach as if they've never heard of Ubuntu
<humphreybc> this means that we also explain what Ubuntu is and give some history in the prologue :)
<humphreybc> We also take great care in explaining the community and encourage people to get involved if they're interested
<humphreybc> So How we're going to achieve all of this, well i've already mentioned some of the tools we're using
<humphreybc> Basically we try to have weekly meetings, we have an IRC channel (#ubuntu-manual), a mailing list and a wiki
<humphreybc> We encourage communication, ideas, feedback
<humphreybc> and we listen to any feedback and ideas that people have. A lot of the stuff we have done have actually just been suggestions from people who are relatively new to the project
<humphreybc> andypiper: yep i listened to that last night
<humphreybc> So basically what makes our project quite cool is that we cover a huge range of topics. We can cater for contributors who are interested in writing, or editing, or artwork, or coding, or how launchpad works
<humphreybc> we also have spaces for leadership, team management
<humphreybc> and, now that we've started quickshot, we have opportunity for programmers and UI design
<humphreybc> our project covers a lot of ground, and we encourage new contributors to help out as little or as much as they like
<humphreybc> another appealing thing about UMP is the fact that we don't have a lot of bureaucracy, we don't mess about too much, we get things done
<humphreybc> there is an element of planning
<humphreybc> but it's an exciting and fast paced environment because new stuff is happening all the time. this event was only conceived a week ago
<ClassBot> andypiper asked: what is quickshot?
<humphreybc> andypiper: Quickshot is a python application that we are developing to help us capture screenshots. I'll explain more about that in a minute.
<humphreybc> We also get a fair amount of media and blog attention. Just pop over to omgubuntu.co.uk or the planet and you'll see we are featured
<humphreybc> Also, the manual is visible - it's something you can read, see, something new and fresh. It's educating more people and it's helping Ubuntu's market share by making it easier to switch from Windows. So, it's a worthwhile cause to help, because it feels like you're doing something
<ClassBot> andypiper asked: what team mgmt / project mgmt roles are open? (will these be covered later)
<humphreybc> I'll cover these later :)
<ClassBot> Wutzara asked: Are there plans for a introduction manual for developers
<humphreybc> Good question. At the moment there aren't any plans - but it seems like a very good idea. I'll think it over, feel free to join us in #ubuntu-manual sometime to chat about it :)
<humphreybc> okay, so that's how we're going to reach our goal
<humphreybc> i'll introduce the key people really quickly
<humphreybc> you've met me. You can contact me at humphreybc@gmail.com
<humphreybc> Josh Holland (dutchie) has been working with us for quite some time. He does a lot of stuff, mainly translations, he's writing a chapter, also created our planet: http://planet.interesting.co.nz
<humphreybc> then there's Kevin Godbyk, godbyk, who's in the chat there >>
<humphreybc> he's done a great job on all the LaTeX work. You should check out the Tex code in the branch to see what goes on behind the scenese
<humphreybc> scenes*
<humphreybc> Ilya Haykinson, Jamin Day and Thorsten Wilms are author, editor and artwork respectively. Ilya helps out with a lot of stuff outside of just writing about a chapter, Jamin is coordinating the editors and Thorsten is one of the people responsible for the awesome title pages that we've got
<ClassBot> kyleN asked: has the team gotten approval from Ubuntu folks to include the pdfs on the install CD?
<humphreybc> At the moment, no. Because Lucid is an LTS and we are a new project, it would be unusual for us to get on the CD for Lucid. Also, stuff on the CD gets decided way back at the UDS, which we weren't around for. I'll be proposing the manual goes on the CD at UDS-M however, for 10.10.
<humphreybc> For Lucid, we will make sure the manual is very easily accessible for download, and it should be in the repos too :)
<humphreybc> Okay, so, Quickshot!
<ClassBot> kyleN asked: by "in the repos" you mean universe?
<humphreybc> yep
<humphreybc> So basically we have a 200 page manual, with about 50 places where we'd like screenshots. then it's translated into 40+ languages. If you do the math for localized screenshots, we need over 2000. In two months.
<humphreybc> All of these screenshots need to be on the default Lucid install, with the default theme etc
<humphreybc> They also need to be the same resolution, dpi, cropped properly etc
<humphreybc> It would be a nightmare to manually get people to take these shots and organize them somewhere so we can easily put them back into latex
<humphreybc> so, I thought up the idea for Quickshot.
<humphreybc> I'm designing the UI and ubuntujenkins and Tommy Brunn are writing the code for it
<humphreybc> it's written in Python, using Quickly and Glade for the UI
<humphreybc> Basically what it does is create a new user for you, prompt you to login to that new user
<humphreybc> then it starts up and pulls a bzr branch for your language. in the bzr branch we have a series of folders and empty files that denote what shots haven't been taken yet. (we might include descriptions in the empty files, not sure yet). Quickshot recognizes these as shots that need to be taken and tells the user what shot is required by choosing the first one on the list
<humphreybc> It asks the user to set up their computer to match the description, then takes the shot. It saves shots in the local bzr branch and when the user is done, pushes the branch and files an auto merge with launchpad
<humphreybc> it's a bit more complicated than that, but the idea is to fully automate pretty much everything except the user having to set up their desktop for the shot
<humphreybc> If you can see in the chat, Tommy just said that if you know Python, we need you!
<humphreybc> We're on a very tight schedule for Quickshot as well, we want it to be finished by March 18th so we can start capturing screenshots. The idea is to use the Ubuntu Global Jam to get lots of people screenshotting :)
<humphreybc> Most likely we won't get screenshots done for _all_ languages in time for Lucid. We are going to prioritize the languages and target about 20 to get finished for Lucid. The rest will still be released, but with english screenshots until we slowly replace them over the next 6 months leading up to 10.10
<humphreybc> You can get quickshot by visiting http://launchpad.net/quickshot
<humphreybc> Righto, so, how you can help!
<humphreybc> http://wiki.ubuntu.com/ubuntu-manual#Contributions
<humphreybc> last slide
<humphreybc> so what we need really in priority would be
<humphreybc> Editors, Python programmers, Authors, Screenshotters, Artwork guys
<humphreybc> And if you feel none of that is up to you, we still have small slots available for maintaining stuff like Twitter account, Facebook etc
<humphreybc> Basically if you want to help, you should be able to get all the information you need from 48 hours
<humphreybc> I'm holding a session at 1700 that explains how you can download the branch
<humphreybc> Kevin is holding a session on LaTeX
<humphreybc> And of course there is always someone in #ubuntu-manual that can help. We have over 250 people in the team around the world, so no matter what your timezone, i'm sure there'll be someone awake and working on the project :)
<humphreybc> Okay, so any questions?
<ClassBot> kyleN asked: Can you address the potential overlap/relatinoship with ubuntu-docs?
<humphreybc> Sure.
<humphreybc> We do have an overlap in content, but when you boil it down, it really isn't a huge overlap. Not to rubbish the docs team work at all, but I myself have found a lot of the wiki docs to be outdated, and the system docs to be slow to open, hard to use and generally not that fantastic. I think the docs team are working to improve both of these for Lucid+1, based on what's been happening with UMP
<humphreybc> I am going to discuss collaboration with the docs team, and I have already offered the full use of our content anyway
<humphreybc> We are collaborating with the Ubuntu Learning Project as well, and after Lucid we're porting a large chunk of our manual into ASCII for them to use in classes like this
<humphreybc> I'm sure that there will be a place where the docs team and UMP can work in harmony :)
<ClassBot> Wutzara asked: are there special improvements about LaTeX in Ubuntu - especially Editor-Improvements we can use?
<humphreybc> What do you mean by "in Ubuntu?"
<humphreybc> We're actually using a newer version of LaTeX that's not in the repositories yet. We're using LaTeX 2009, because it makes it possible to support a number of extra characters for languages like arabic and chinese, as well as provide better tools for the glossary
<humphreybc> Gedit does have a LaTeX thing where it colours the commands for you
<humphreybc> It is very easy to use LaTeX, trust me :)
<humphreybc> If you're using Ground Control, you don't even have to use the terminal to compile the manual
<humphreybc> we actually have buttons to compile the manual and also clean the compiled files afterwards, but I'll talk about that in the ground control session
<humphreybc> godbyk has a great presentation lined up for LaTeX
<humphreybc> Yeah that's another thing we try to do with UMP - we are trying to make it as easy as possible for anyone to help out, regardless of your experience with Ubuntu
<humphreybc> Our wiki is quite comprehensive (it actually needs a search bar!) so i'm sure you'll be able to find help there or in #ubuntu-manual, or the mailing list :)
<humphreybc> Okay so I think we'll call it the end of that session
<humphreybc> You can grab the PDF slides for the next talk here: http://kevin.godby.org/ubuntu-manual/talks/
<humphreybc> you'll want "writingstyle.pdf" for Ilya's talk on writing style
<humphreybc> I've looked through the slides and it looks like he's got a good session planned. Even if you aren't interested in writing for UMP, it will be useful for writing essays for uni or reports for work :D
<IlyaHaykinson> Hi folks. We'll wait for another few minutes to start.
<IlyaHaykinson> You can also view the slides at http://www.slideshare.net/ilyah/writing-the-ubuntu-manual
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Writing style - Instructor: IlyaHaykinson || Questions in #ubuntu-classroom-chat
<IlyaHaykinson> We will start in 1 minutes
<IlyaHaykinson> 1 minute
<IlyaHaykinson> Alright. Welcome, folks. Since we're having issues with the slide integration for this talk, I'll post direct links to the slide on Slideshare (http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/1)
<IlyaHaykinson> http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/1
<IlyaHaykinson> Agenda: http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/2
<IlyaHaykinson> In this talk, we'll chat about how difficult it is actually to write a good manual
<IlyaHaykinson> We'll consider what kind of an audience we're writing for, and what that means to us when writing it.
<IlyaHaykinson> We'll discuss what our combined voice should be -- how should we relate to the reader?
<IlyaHaykinson> And we'll briefly chat about some desktop conventions that you should use when writing.
<IlyaHaykinson> Please feel free to ask questions, but I'll try to take them all at once in the breaks between sections.
<IlyaHaykinson> Writing a Manual: Challenges -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/3
<IlyaHaykinson> There's a lot to be decided when writing a manual for an open project of the size of Ubuntu
<IlyaHaykinson> we need to figure out what we include -- and, more importantly, what we leave out.
<IlyaHaykinson> we've got to decide on grammar -- British? United States? International? what about non-English?
<IlyaHaykinson> we need to decide on the voice -- should we be humorous? serious? playful?
<IlyaHaykinson> we need to understand the audience that we hope will read the manual, and use that information to decide how to present the information.
<IlyaHaykinson> finally, some pratical limitations come up -- we cannot include 1000 screenshots (the file size will be too large, it will take too long to take screenshots, etc)
<IlyaHaykinson> so, we compromise on all of these points.
<IlyaHaykinson> for Content, we decided to cover only the core of the Ubuntu Desktop.
<IlyaHaykinson> for Style, we picked a relatively tone, and a grammar that is similar to the Ubuntu Docs team
<IlyaHaykinson> for our Audience, we decided to go after new computer users and people new to Ubuntu -- this meant that we did not dive very deep, but provided enough information to let people accomplish some key tasks in the simplest way.
<IlyaHaykinson> and, again, practical limitations guide us throughout.
<IlyaHaykinson> Writing Challenges: Other Sources -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/4
<IlyaHaykinson> When writing a manual, we need to understand that almost everything that we write about has already been covered by documentation.
<IlyaHaykinson> Some of it is Ubuntu's own, some of it comes from the community.
<IlyaHaykinson> To the degree that we can, we need to both read and then if possible _copy_ the documentation.
<IlyaHaykinson> This copying is limited by fit -- some of the documentation will not work for us when copied.
<IlyaHaykinson> For example, Ubuntu's documentation is mainly oriented at specific tasks -- it rarely provides a high level overview to help a user get started and get the larger picture
<IlyaHaykinson> instead it dives directly into specific pages and screens to help answer one particular question.
<IlyaHaykinson> We can certainly use it to understand how something works, and can copy parts of it, but we cannot copy it in entirety -- it would not match our style or voice
<IlyaHaykinson> The GNOME project also has a lot of documentation. Their docs are actually well-created -- well written, organized in a logical way, etc.
<IlyaHaykinson> However, GNOME licenses using the GNU Free Documentation License, which is not compatible with the Creative Commons - Attribution - ShareAlike license that we are using.
<IlyaHaykinson> Thus, we can read the GNOME docs, but not use them directly in the manual.
<IlyaHaykinson> Finally, there's community documentation. Such great things like the ubuntuguide.org or any other fan pages
<IlyaHaykinson> or user guides
<IlyaHaykinson> Most of these are great, but most of these are also not perfect since they target experts, and not beginners
<IlyaHaykinson> We can read them and use them in our troubleshooting sections, but not really much else.
<IlyaHaykinson> Any questions before I move on?
<IlyaHaykinson> ok, moving on to Our Audience
<IlyaHaykinson> Next slide - Our Audience: New Users -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/5
<IlyaHaykinson> We've decided to focus our writing on people who are new to Ubuntu
<IlyaHaykinson> this may also mean that they're new to computers in general
<IlyaHaykinson> either actually new users, or just very much beginners in their skill set
<IlyaHaykinson> For our writing, we assume that the reader knows how to use a GUI -- they know how to use the mouse, or the keyboard
<IlyaHaykinson> they also know that there are windows and buttons and scrollbars, and generally know how to use them to get around.
<IlyaHaykinson> However, we also assume they don't really know their _names_ for things.
<IlyaHaykinson> They may not know that their monitor is a monitor -- lots of people call their monitor their "computer"
<IlyaHaykinson> i've even seen people call the actual desktop the "brain"
<IlyaHaykinson> they will not know what ethernet is, necessarily; we need to remind them about wifi.
<IlyaHaykinson> they will certainly not know anything more complex than that.
<IlyaHaykinson> Next slide - Our Audience: New Users -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/6
<IlyaHaykinson> So, we need to be very careful when writing to not include any jargon in our presentation.
<IlyaHaykinson> We need to explain, in detail, everything that we mention.
<humphreybc> (I think the chat in Lernid has crashed or something)
<IlyaHaykinson> [sorry, moving on]
<IlyaHaykinson> so, We need to cover everything gently, making sure to make no assumptions on knowledge
<IlyaHaykinson> we can say "click the ____ button", assuming that the person will see the button
<IlyaHaykinson> and knows how to click
<IlyaHaykinson> but, for example, we need to say "Click-and-hold your mouse button at the edge of the window, and drag your mouse to resize the window"
<IlyaHaykinson> instead of assuming the person knows what to do.
<IlyaHaykinson> we need to define all terms; in a section on printing, we may want to say "Your printer may connect to your computer using a USB cable. Before starting, plug your printer into an available USB slot on your computer."
<IlyaHaykinson> because a user may not remember on their own
<IlyaHaykinson> We need to be very precise in our language -- need to know the terms for everything in the operating system.
<IlyaHaykinson> so that when we refer to a piece of the user interface, we are consistent with other documentation
<IlyaHaykinson> and consistent with ourselves
<IlyaHaykinson> I will cover some terms later, but there's a great guide for GNOME user interface terms at http://library.gnome.org/devel/gdp-style-guide/stable/gnome-glossary-desktop.html.en
<IlyaHaykinson> Most importantly, when writing for new users, we need to start with very simple things. We can move on to more advanced topics only after we've repeated the simple things again, and again, and again.
<IlyaHaykinson> For example, we may start with talking about "Click-and-hold ... to resize" at first.
<IlyaHaykinson> And by the end of a section, just say "resize" since we can assume the user has learned a bit already.
<IlyaHaykinson> Next slide - Our Audience: Eager to Learn -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/7
<IlyaHaykinson> We are writing for people who picked up a manual.
<IlyaHaykinson> People who have either already installed, or interested in installing Ubuntu -- which is saying that they're a captured audience, in a way.
<IlyaHaykinson> They are somewhat task oriented in their day to day computing life -- they have no interest in learning the underlying ways things work in Linux or Ubuntu
<IlyaHaykinson> any more than they want to know how the Win32 API works, or that MacOS is based on Darwin.
<IlyaHaykinson> but they _do_ care to know how to make their printer print. or their scanner scan. or their presentation saved as PDF.
<IlyaHaykinson> because those are actually their goals.
<IlyaHaykinson> Since we are writing a manual, they may read the manual in fairly large chunks -- many pages at once -- instead of just as a reference guide where they use the index, jump to a page, read a tiny bit, and close it.
<IlyaHaykinson> Next slide - Our Audience: Eager to Learn -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/7
<IlyaHaykinson> Er, http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/8
<IlyaHaykinson> So, the recommendations are aligned with this eagerness to learn
<IlyaHaykinson> we need to keep a narrative that turns a novice into a knowledgeable user over time.
<IlyaHaykinson> As i mentioned, start simple -- progress to complex
<IlyaHaykinson> We need to think in terms of these user tasks -- title each section with a particular task, and cover only that one task.
<IlyaHaykinson> Don'
<IlyaHaykinson> Don't just write how to do something -- make sure you have some indication _why_ someone would want to do something
<IlyaHaykinson> Use asides, callouts, and notes in the margins to keep the advanced users happy, too (godbyk's talk on LaTeX will explain how to do this, technically, in the manual)
<IlyaHaykinson> so if there's something that you think they _might_ want to know, after reading your manual, stick it in a margin note.
<IlyaHaykinson> and if it's advanced, and they probably do not _need_ to know it, mark it as advanced.
<IlyaHaykinson> Finally, do not patronize -- do not be condescending to the user.
<IlyaHaykinson> The user wants to get some work done.
<IlyaHaykinson> they do not need to be told something is "simple"
<IlyaHaykinson> it may not be simple for them, and  they'll assume you (the writer) is better than them
<IlyaHaykinson> and is taunting them with your betterness
<IlyaHaykinson> don't tell them to "just click on" something -- they may take a minute to find on something, and again will feel like you're saying their dumb if it took them a while to find it.
<IlyaHaykinson> in general, assume that you're giving a list of instructions on how to reach a particular physical address.
<IlyaHaykinson> you tell people "off the highway, third light, make a right; past the gas station, make a left. then, it's the second building on your right"
<IlyaHaykinson> that same fairly serious tone should be kept when talking to the user.
<IlyaHaykinson> Next slide: Our Audience: International -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/9
<IlyaHaykinson> We are writing in English. But we've got a lot of translations (40+). Plus, even for people reading in English, some may not have it their native language
<IlyaHaykinson> Plus, not all humor or witty comments are universal.
<IlyaHaykinson> Next slide: Our Audience: International -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/10
<IlyaHaykinson> http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/10
<IlyaHaykinson> [Hm, that didn't load correctly for me... it's slide 10, anyways]
<IlyaHaykinson> So, we need to use _very_ simple language.
<IlyaHaykinson> Always use a simpler synonym for a word.
<IlyaHaykinson> Not "transform" but 'change'. Not "alphabetize" but "put in alphabetical order"
<IlyaHaykinson> Use simple phrases as much as possible. Shorter sentences are better.
<IlyaHaykinson> If you have lots of words in dependent clauses etc, it will make it hard to translate and understand.
<IlyaHaykinson> Assume that you are speaking to an advanced English learner, basically.
<IlyaHaykinson> As a design decision, we're using American spelling and grammar for the manual. This is consistent with the Ubuntu documentation team and other Ubuntu/Canonical guidelines.
<IlyaHaykinson> Also, use short paragraphs, and repeat yourself.
<IlyaHaykinson> So "You may want to use a calculator to help with a calculation. To use a calculator in Ubuntu, click ..."
<IlyaHaykinson> Saying this in two phrases helps solidify the concept, and prevents ambiguity.
<IlyaHaykinson> Next slide: Our Voice: Confident -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/11
<IlyaHaykinson> We are writing a manual, and we are the experts. Our readers are expecting us to be condident in our opinions.
<IlyaHaykinson> so, when writing, use language that says that you are condident in what you are saying.
<IlyaHaykinson> When giving opinions, state them as facts.
<IlyaHaykinson> "With Ubuntu, you can print, scan and email documents"
<IlyaHaykinson> no need to say "With Ubuntu, you might be able to ... if you have an internet connection and your drivers work"
<IlyaHaykinson> However, I suggest that you consider Ubuntu to not be perfect.
<IlyaHaykinson> when talking about windows opening, when giving instructions, I prefer saying "Ubuntu should open..." instead of "Ubuntu will open..." so that if something breaks, we are not lying.
<IlyaHaykinson> Next slide: Our Voice: Direct and Calm -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/12
<IlyaHaykinson> Write as if you're conversing with a reader, face to face. "You may want to use a calculator. To open the calculator, click..."
<IlyaHaykinson> or "If your email administrator advised you to use IMAP..."
<IlyaHaykinson> As part of being calm, avoid generating excitement for Ubuntu.
<IlyaHaykinson> we are writing a manual, not a marketing slick -- no need to use words like "best", "easiest", "simplest", "amazing" etc
<IlyaHaykinson> instead of "In ubuntu, it's easy to do X...." say "In Ubuntu, you can do X by...."
<IlyaHaykinson> Next slide: Our Voice: Slightly Opinionated -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/13
<IlyaHaykinson> all that said, we are _SLIGHTLY_ opinionated. Slightly <------ this is an important word
<IlyaHaykinson> in the Linux world, there is always more than one way to do things. however, not in our manual.
<IlyaHaykinson> in our manual, there are only a few ways.
<IlyaHaykinson> First, we should recommend the _official_ graphical way to do something.
<IlyaHaykinson> Second, we may recommend any simple variation or common shortcut to doing this.
<IlyaHaykinson> But we stop there. We don't tell people the twenty ways to install software -- just the Software Center and Synaptic.
<IlyaHaykinson> This is because we have a bias towards using the GUI, and being simple.
<IlyaHaykinson> We also try to steer people away from bad decisions, lightly. So "You may want to pick a long password if you are worried about security."
<IlyaHaykinson> but can also allow them the choice to make worse decisions. "If you are the only one who will be using your computer, you can decide to automatically log in without entering your password"
<IlyaHaykinson> [note -- we will run over on this prentation by about 5-10 mins]
<IlyaHaykinson> Next slide: Our Voice: Aligned with Users -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/14
<IlyaHaykinson> When writing sections, consider how users will want to use what you are describing.
<IlyaHaykinson> then, name the section with a gerund form of a verb.
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Using Ground Control to make changes - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<humphreybc> just ignore that, we'll go into the Ground Control time slot a wee bit
<IlyaHaykinson> "Using the calculator" or "Reading your email", or "Scanning images"
<IlyaHaykinson> setting a topic like that also helps make sure you limit the section to just one idea.
<IlyaHaykinson> In each section, mention _why_ a user may want to do that.
<IlyaHaykinson> for example
<IlyaHaykinson> "If you have a photograph that you want to send over email or post online, you may want to scan it into your computer. To scan images, you will need..."
<IlyaHaykinson> a quick intro to a section can provide the _why_ a user may want to do something that is vital to establishing context fo rthe user.
<IlyaHaykinson> if you just say "to scan images, you will need..." -- you are not letting a user know what possible reason they will ever have that they should read the following paragraph.
<IlyaHaykinson> next slide: Conventions: Attribution -- http://www.slideshare.net/ilyah/writing-the-ubuntu-manual/15
<IlyaHaykinson> We have a few conventions for the manual. The main one is to write it about Ubuntu, and not about Linux.
<IlyaHaykinson> yes, we mention in an early chapter that Ubuntu is based on Linux.
<IlyaHaykinson> but the rest of actions should be attributed to Ubuntu.
<IlyaHaykinson> In general, people will perceive the login process, the desktop, Nautilus, panels, window manager etc as being "Ubuntu"
<IlyaHaykinson> utility applications should also be "Ubuntu" for purposes of this application.
<IlyaHaykinson> bigger application packages (Ephiphany, Totem, Open Office) should be considered big enough to warrant attribution.
<IlyaHaykinson> so for example, "The Ubuntu calculator lets you...", but "Open Office lets you..."
<IlyaHaykinson> Also, always ensure active voice.
<IlyaHaykinson> If you find yourself writing "It is possible to...", or "...will be opened by..." then chances are you are writing passively
<IlyaHaykinson> to use an active voice, write "X will do Y" -- "Ubuntu will open a window", "You can click the OK button."
<IlyaHaykinson> when describing steps, write imperatively. "Click the OK button", "Choose File, then Save to save a document"
<ClassBot> humphreybc_lerni asked: But we should assume that Ubuntu might not actually open a window? Going back to an earlier slide you said we shoudn't assume it "will" do something
<IlyaHaykinson> Good question -- it's _better_ to not make assumptions. however, i think it's fine to use both "will" as well as 'should'
<IlyaHaykinson> if you have any doubt about the user following instructions correctly, use "should".
<IlyaHaykinson> if you think something will definitely happen (i.e. clicking on the Calculator menu item will pretty much certainly open the calculator), use "Will"
<IlyaHaykinson> alright, this concludes my talk. there are a few more slides that cover some common GUI terms such as button, check box, dialog etc, and some notes on referring to these GUI items correctly.
<IlyaHaykinson> Please see the terms document -- http://library.gnome.org/devel/gdp-style-guide/stable/gnome-glossary-desktop.html.en -- for more info
<IlyaHaykinson> Or the list of user actions in GNOME -- http://library.gnome.org/devel/gdp-style-guide/stable/gnome-glossary-user-actions.html.en -- for action names
<IlyaHaykinson> Finally, for more tips on writing for an international audience, see http://tc.eserver.org/.21590.html
<IlyaHaykinson> sorry, http://tc.eserver.org/21590.html
<IlyaHaykinson> Any final questions?
<IlyaHaykinson> Thanks all for attending!
<humphreybc> Okay everyone, we're going to push straight into Ground Control now. This is exciting as GC is a nice new application designed by Martin Owens and Jono Bacon
<humphreybc> You might have seen it on Planet Ubuntu
<humphreybc> take a look at this: http://launchpad.net/groundcontrol
<humphreybc> Ground Control is written as a python plugin for nautilus
<humphreybc> Basically, to install it, run the commands:
<humphreybc> sudo add-apt-repository ppa:doctormo/groundcontrol
<humphreybc> sudo apt-get install groundcontrol
<humphreybc> but you'll have to run sudo apt-get update
<humphreybc> and then killall nautilus
<humphreybc> I'm going to switch to the slides now
<humphreybc> http://www.slideshare.net/humphreybc/using-ground-control-to-make-changes
<humphreybc> So I really really want everyone on the UMP team to use Ground Control to push and pull
<humphreybc> we're the first team to use it on a wide scale project
<humphreybc> and it's a good opportunity for us to test it out for Martin and Jono
<humphreybc> Now I'm going to show you a video that I recorded yesterday that explains exactly how to install and pull our branch
<humphreybc> http://www.youtube.com/watch?v=MeNXqfofbWk
<humphreybc> with a bit of luck flash will work inside lernid
<humphreybc> so if you just want to watch that
<humphreybc> excuse my quiet voice, it was very late last night and i didn't want to wake people up :)
<humphreybc> let me know when everyone has finished watching the video :)
<humphreybc> cool, mine just finished, everyone else seen it?
<humphreybc> http://www.slideshare.net/humphreybc/using-ground-control-to-make-changes/2
<humphreybc> righto
<humphreybc> so basically that's all there is to it, the video is probably the easiest way to explain stuff
<humphreybc> http://www.slideshare.net/humphreybc/using-ground-control-to-make-changes/3
<humphreybc> tom, yes it is
<humphreybc> So I suppose the one thing that I definitely need to make clear is the "Download my branch" radio button
<humphreybc> If you choose anything else you'll either get a read only branch where you can't commit changes, or you'll get the branch but when you push it won't go straight into the branch and we'll end up with a million merge requests
<humphreybc> so that's not what we want :)
<humphreybc> http://www.slideshare.net/humphreybc/using-ground-control-to-make-changes/4
<humphreybc> Okay so I'll explain how the developer buttons work
<humphreybc> you probably don't need to know this, other than how to use them
<humphreybc> but it's quite interesting
<humphreybc> basically ground control looks for a file in the branch called .gcfunctions
<humphreybc> in that file we have some very simple code that sets up one more buttons with a label and a command
<humphreybc> in most instances the command would be to run a script
<humphreybc> but because we've got such simple commands to compile the manual, like make show and make clean
<humphreybc> we just simply have those commands there
<humphreybc> As much as I want to have a button to compile into different languages, it wouldn't really work unless we had a drop down box to choose your language.
<humphreybc> And everyone has to have the latest version of latex with the correct fonts and things
<humphreybc> otherwise you'll run into errors
<humphreybc> Okay, so, any questions? Anyone having a problem installing and setting up Ground Control?
<humphreybc> Remember you'll need to be a member of the team and also have a launchpad account with an ssh key to push to the branch
<humphreybc> https://wiki.ubuntu.com/ubuntu-manual/Help
<humphreybc> if you scroll down you'll see the requirements
<humphreybc> launchpad account, member of the team and the project, registered an SSH key
<humphreybc> there are links on that page that will take you to the necessary places to sign up for launchpad etc
<humphreybc> i'll go back to the video for the rest of the session
<humphreybc> http://www.youtube.com/watch?v=MeNXqfofbWk
<humphreybc> (if you want to use the old fashioned command line bzr, i have actually made a video for that too - see the right of the screen under related videos)
<humphreybc> questions?
<ClassBot> d0od asked: do you have to be a member of the project in order to pull via control centrE?
<humphreybc> You have to member of the launchpad team page, yes. Control Centre? Do you mean Ground Control?
<humphreybc> Oh i'm not sure about pulling actually
<humphreybc> I think anyone can pull
<humphreybc> but you won't get the "download my branch" option unless you're a member of the team
<humphreybc> instead you can do the read only checkout option
<humphreybc> You have to be a member of The Ubuntu Manual Team on launchpad to be able to push :)
<ClassBot> Wutzara asked: Where is the difference between a Merge-Request and a own Branch?
<humphreybc> Merges are used for other projects where people can submit their changes for review
<humphreybc> so they would submit some changes, and if the changes were good changes, the reviewer would approve the merge into the main branch
<humphreybc> it's important for merge reviews to occur in system projects like the boot team, software center etc to prevent anyone from deleting all the code and then pushing straight to main
<humphreybc> but because we are on such a tight schedule and our branch is so busy, we don't have time to review every single revision that people make
<humphreybc> so we basically run the risk of someone coming along and screwing everything up, but the benefits outweigh the cons. It's easy to revert to an older revision anyway if someone does do that
<humphreybc> anything else?
<humphreybc> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/01.html
<godbyk> I'll wait a few more minutes before we start, since we're a bit ahead of schedule.
<godbyk> But if you want, you can download the PDF handout: http://kevin.godby.org/ubuntu-manual/talks/latex-handout.pdf
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: LaTeX for authors and translators - Instructor: godbyk || Questions in #ubuntu-classroom-chat
<godbyk> Hello, everyone.  Welcome to LaTeX for Authors, Editors, and Translators.
<godbyk> You can download the PDF handout from: http://kevin.godby.org/ubuntu-manual/talks/latex-handout.pdf
<godbyk> It has a bit more information than what is contained in the slides, and I will keep it up to date as we add more commands or need to clarify things.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/01.html
<godbyk> In this session, I will be focusing on how you as an author, editor, or translator can help create content for the Ubuntu Manual Project.
<godbyk> We'll start off with a quick overview of LaTeX and I'll try to leave time for questions.
<godbyk> If you have questions, feel free to ask them at any time.  Just precede your question with "QUESTION:"
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/02.html
<humphreybc> [SLIDE 1]
<humphreybc> BAM!
<godbyk> humphreybc: Nice!
<godbyk> Okay, it looks like we have slides now.
<humphreybc> hehe
<godbyk> Can everyone see the small slide in Lernid?
<godbyk> [SLIDE 2]
<godbyk> [SLIDE 3]
<godbyk> I'll try to keep the web page and the slides in sync in case the slides aren't working for someone.
<godbyk> If you were around during the earlier sessions, you've already heard all about the Ubuntu Manual Project.
<godbyk> But a brief recap:
<godbyk> Our aim is to create a manual in a variety of languages that provides beginners with a good reference for getting started with Ubuntu.
<godbyk> We're using LaTeX to typeset our manual.
<godbyk> [SLIDE 4]
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/03.html
<godbyk> LaTeX has been around for over 20 years and is built on top of software that has been around for over 30 years.
<godbyk> Needless to say, it's been bug-tested like nothing else and the underlying TeX engine is often considered to be bug-free.
<godbyk> [SLIDE 5]
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/04.html
<godbyk> So what does LaTeX code look like?
<godbyk> Well, the code itself is stored in text files with a .tex extension.
<godbyk> You can use your favorite text editor to write tex files: vim, emacs, gedit, etc.
<godbyk> There are also a number of LaTeX-specific editors out there that provide you with menus that list the LaTeX commands.
<godbyk> For the amount of LaTeX code we're actually using in the Ubuntu Manual Project however, a standard text editor will serve you just fine.
<godbyk> LaTeX code is similar to HTML in that it's a markup language.
<godbyk> So if you want to make text bold in LaTeX, you would use the \textbf command.
<godbyk> Each of the LaTeX commands begins with a backslash (\).
<godbyk> The arguments to the commands are placed inside curly braces { and }.
<godbyk> So if I wanted to make my name bold, I'd write \textbf{Kevin}.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/05.html
<godbyk> [SLIDE 6]
<godbyk> To help us maintain consistency throughout the manual, we'll avoid using the normal "bold", "italics", etc. commands.
<godbyk> Instead we'll use semantic markup.
<godbyk> In LateX, we can define new commands like \menu and \marginnote.
<godbyk> [SLIDE 7]
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/06.html
<godbyk> So anytime we want to tell the user about a menu, we can use the new \menu command.
<godbyk> This means that if we decide later that we want all the menus to appear in italics instead of bold, we just have to modify one line of code in the style sheet and not each instance of a menu name throughout the manual.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/07.html
<godbyk> [SLIDE 8]
<godbyk> There are a few special characters in LaTeX that you should be aware of.
<godbyk> In typesetting, we use proper quotation marks (often referred to as "smart quotes").
<godbyk> The opening quotes are entered using the backtick character.
<godbyk> On US keyboards, this characters is in the upper-left (above the Tab key and next to the 1 key)
<godbyk> It may be in other positions on other keyboards and may not exist at all on some keyboards.
<godbyk> Closing quotation marks are written as two apostrophes.
<godbyk> For the translators, when you're translating from the English to your own language, you can directly enter the quotation marks that you use in your language.
<godbyk> Another set of characters that LaTeX treats special are dashes.
<godbyk> In typesetting there are a variety of dashes that vary in length and are used for different purposes.
<godbyk> LaTeX recognizes these dashes:
<godbyk> There's a hyphen (entered as -), an en dash (entered as --), and an em dash (entered as ---).
<godbyk> In US English, we use the em dash to interrupt thoughts int he middle of a sentence.
<godbyk> Previously in writing the manual content, the rule was to write " --- " (surrounded by spaces).
<godbyk> However, I've recently replaced this with a new \dash command.
<godbyk> This will let us use the proper dashes for each language that we translate to.
<godbyk> So as you're editing the manual, if you come across "---", replace it with the \dash command.
<ClassBot> TomC26 asked: The dash command doesn't have any parameters, it's just "\dash"?
<godbyk> TomC: That's correct.  The \dash command doesn't have any parameters, so you just write \dash.
<godbyk> It will handle the spacing around the command as well.
<godbyk> [SLIDE 9]
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/08.html
<godbyk> There is more information about the use of the dashes in the handout.
<godbyk> There are another handful of characters that LaTeX uses in its syntax.
<godbyk> If you want these characters to appear in the PDF (and avoid errors from LaTeX), you'll need to precede the characters with a backslash.
<godbyk> So to say, "I ate 50% of the pizza."
<godbyk> you'd have to type: "I ate 50\% of the pizza."
<godbyk> Unfortunately, the backslash character can't be escaped with a backslash, because \\ is actually a command that tells LaTeX to break the line there.
<godbyk> So to get a backslash to appear in the PDF, you'll need to use the \textbackslash command (which doesn't take any arguments).
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/09.html
<godbyk> [SLIDE 10]
<godbyk> At this point, the document structure of the manual has been fairly well established.
<godbyk> As you read the .tex files, you'll come across these commands, so I wanted to mention them.
<ClassBot> TomC26 asked: The dash command doesn't have any parameters, it's just "\dash"?
<godbyk> TomC: That's correct. Just \dash.
<godbyk> An example of the \dash command would be:
<godbyk>   I like chocolate\dash not vanilla\dash ice cream!
<godbyk> Each of the document structure commands: \part, \chapter, \section, etc. takes a single argument: the name of that part, chapter, section, etc.
<godbyk> To create a new section in the manual, you would write: \section{My New Section}
<ClassBot> humphreybclernid asked: what are the main texlive packages I need to install?
<godbyk> At this point, we require the TeX Live 2009 packages.
<godbyk> Unfortunately, they packages in Karmic are too old.
<godbyk> If you have Lucid, you can install their texlive-* packages and try them out. (I haven't tested them yet.)
<godbyk> Otherwise, you'll need to install TeX Live 2009 without using Ubuntu's repositories.
<godbyk> There are instructions for doing that at the end of the handout.
<ClassBot> humphreybclernid asked: We require the 2009 packages to actually build the english one even? I thought that was just for the translations.
<godbyk> That was correct until a few days ago.  But now we require the 2009 version for all languages, including the original English.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/11.html
<godbyk> [SLIDE 11]
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/10.html
<godbyk> We can place short notes in the margin.
<godbyk> These notes are used to provide extra information to the reader.
<godbyk> They may contain pointers to other chapters in the manual for more information, links to websites, or additional tidbits of information.
<godbyk> To place text in the margin, use the \marginnote command.
<godbyk> It takes a single argument: the text you wish to appear in the margin.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/11.html
<godbyk> [SLIDE 12]
<godbyk> If you want to include comments in your .tex file, you can write a percent sign (%) and LaTeX will happily ignore any text on that line that appears after the percent sign.
<godbyk> As I mentioned earlier, if you want a percent sign to actually appear in the PDF, you'll have to put a backslash in front of it.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/12.html
<godbyk> [SLIDE 13]
<godbyk> Earlier, I mentioned the \menu command as an example of the semantic markup we're using.
<godbyk> There are a number of commands that we've created to ensure consistency throughout the manual.
<godbyk> First, we'll take a closer look at the \menu command.
<godbyk> The \menu command takes a single argument: the menu, menu item, or list of menus that the user should click on.
<godbyk> However, just to be tricky, inside the argument, you can use the \then command.
<godbyk> This will print a small arrow between each of the menu items.
<godbyk> Another quick note about the \menu command:
<godbyk> In the past, the command was named \nav.  This \nav command now redirects automatically to \menu.  But if you're editing the manual and see \nav, just replace it with \menu.
<godbyk> Also, there is a \menuitem command that was used in this past.  This has also been folded into the \menu command.
<godbyk> Are there any questions about the \menu or \then commands?
<godbyk> Great! I'll move on then.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/13.html
<godbyk> [SLIDE 14]
<godbyk> This is a list of each of the semantic commands we've created so far.
<godbyk> If, as you're editing the manual, you encounter a need for a new command, please let me know and I'll add it.
<godbyk> Most of these commands should be self-explanatory.
<godbyk> They each take a single argument (the name of the GUI element they refer to).
<godbyk> Are there any questions about these commands?
<ClassBot> Wutzara asked: Is there a central place where custom commands are declared - i know a look into the .cls File will do the thing but a place like a Changelog or something never mentiond
<godbyk> Wutzara: Not really.  The authoritative source is the .cls file.  I will try to keep the handout document updated, though.
<godbyk> Any other questions about anything so far?
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/14.html
<godbyk> [SLIDE 15]
<godbyk> Okay, so now for a command that's a bit more advanced.
<godbyk> In the second part of the manual -- the advanced part -- you may have occasion to have the reader use the terminal program.
<godbyk> To print text in a terminal style, we have a "terminal" environment.
<godbyk> Environments are a bit different than commands as they have a begin  and end command.
<godbyk> To start the terminal environment, you would write \begin{terminal}
<godbyk> To end the terminal environment, write \end{terminal}
<godbyk> Everything between the \begin and \end lines will be inside the terminal environment and be formatted to look like a terminal.
<godbyk> The \prompt command doesn't take any arguments and prints a user-level BASH prompt ($).
<godbyk> If the user should run the commands as root, you can print a root prompt using the \rootprompt command (which prints a #).
<godbyk> To highlight the text that the user should type themselves, put that text in the argument of the \userinput command.
<godbyk> Are there any questions about the terminal environment or any of the associated commands?
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/15.html
<godbyk> [SLIDE 16]
<godbyk> Here are a couple more environments that you'll encounter more often than the terminal environment.
<godbyk> As all environments, they start with \begin and end with \end.
<godbyk> These two environments are for creating different types of lists.
<godbyk> The itemize environment creates a bulleted list.
<godbyk> The enumerate environment creates a numbered list.
<godbyk> (Fancy names, no?)
<godbyk> Each list item starts with the \item command.
<godbyk> Any questions about the list environments?
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/16.html
<godbyk> [SLIDE 17]
<godbyk> In a PDF, you can create links to other points in the PDF -- just like a web page.
<godbyk> I've created a couple commands that simplify this linking.
<godbyk> Use the \chaplink command to create a link to another chapter.
<godbyk> Use the \seclink command to create a link to another section in the manual.
<godbyk> Each of those commands takes a single argument: the label of that chapter/section.
<godbyk> To figure out what the label of the chapter/section is, you'll need to open up the .tex file that contains that chapter/section.
<godbyk> Immediately after the \chapter or \section command, you will see a \label command.
<godbyk> The argument to the \label command should match the argument you give to the \chaplink or \seclink command.
<godbyk> All of the chapters have labels assigned already.
<godbyk> Very few of the sections have labels.
<godbyk> If you want to cross-reference a section that doesn't yet have a label, you can add one.
<godbyk> Right after the \section{My section} command, add \label{sec:my-section}.
<godbyk> The chapter labels should start with "ch:" and the section labels should start with "sec:".
<godbyk> The style we use is to write the section name (which may be shortened or abbreviated) with the word separated by hyphens.
<godbyk> Any questions about the cross-referencing commands?
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/17.html
<godbyk> [SLIDE 18]
<godbyk> A few notes for translators:
<godbyk> (I'll probably accumulate more of these as we start translating more.)
<godbyk> You should be careful not to translate the LaTeX commands themselves -- only the content of their arguments.
<godbyk> The labels (the argument of the \label, \chaplink, and \seclink commands) shouldn't be translated.
<godbyk> If you're translating to a new language, send me an email to give me a heads-up.
<godbyk> For some of the languages, I have to write new code for LateX to handle that language.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-slides/18.html
<godbyk> [SLIDE 19]
<godbyk> Otherwise, are there any other questions?
<godbyk> For those who are just getting started and need to install LaTeX, I have instructions at the end of the handout.
<godbyk> http://kevin.godby.org/ubuntu-manual/talks/latex-handout.pdf
<ClassBot> konopkov32 asked: How to install Latex 2009?
<godbyk> konopkov: At the end of the handout (http://kevin.godby.org/ubuntu-manual/talks/latex-handout.pdf), there are instructions for downloading and installing TeX Live 2009.
<godbyk> The installation script is fairly straight-forward.
<godbyk> One caveat: The full installation of TeX Live 2009 is about a 2 GB download, so it may take a while.
<godbyk> You can install less than the full set of packages, though.
<godbyk> You'll need to make sure that you've selected the XeLaTeX (or XeTeX) engine, and the language you want to compile the document in.
<ClassBot> gsmx asked: are there better editors than just gedit?
<godbyk> gsmx: Sure!
<godbyk> If you already have a favorite text editor, you can use that.
<godbyk> If you want something a little fancier -- an IDE for LaTeX, of sorts -- you can use Kile (for KDE) or TeXMaker for GNOME.
<godbyk> There are other LaTeX editors as well.
<godbyk> I would recommend compiling the document with the 'make' command, however, as the editors may not know how to handle the translations.
<godbyk> Unfortunately, the fancy edits won't know about our Ubuntu Manual--specific commands like \menu, \chaplink, etc.  So it may not successfully auto-complete those for you.
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Using Launchpad to manage the project - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<godbyk> Are there any final questions about LaTeX?
<godbyk> If you run into problems or have questions later, I'm usually in the #ubuntu-manual channel.  Feel free to pester me there or email the ubuntu-manual mailing list.
<humphreybc> cool
<humphreybc> should we start up the launchpad session now?
<humphreybc> [SLIDE 1]
<humphreybc> http://launchpad.net/ubuntu-manual
<humphreybc> okay everyone see the slides?
<humphreybc> you can download them from here if you can't: http://kevin.godby.org/ubuntu-manual/talks/launchpad.pdf
<humphreybc> So basically if you haven't been using Launchpad for long, you might be unfamiliar with what it does and how it works
<humphreybc> Basically launchpad is a website that provides tools for international project management
<humphreybc> we use it for pretty much everything in UMP
<humphreybc> (btw if people want to ask a question, just use "question:"
<humphreybc> [SLIDE 2]
<humphreybc> Ground Control / bazaar interfaces with Launchpad to download and upload code
<humphreybc> the code is hosted in branches on launchpad
<humphreybc> Launchpad also provides many project planning and management features, such as blueprints and milestones
<humphreybc> It also provides a tool for bugs, a tool for translations and a tool that allows people to ask questions about the project
<humphreybc> For things like committing to the branch or translating, you'll need to be in the correct team
<humphreybc> to join the team, you just need to visit our team page: https://launchpad.net/~ubuntu-manual
<humphreybc> For the translations, usually a translation team, loco team or our team should work
<humphreybc> Our team is a public team which means anyone with a launchpad account can join
<humphreybc> [SLIDE 3]
<humphreybc> https://code.launchpad.net/ubuntu-manual
<humphreybc> Launchpad uses branches to manage code
<humphreybc> most projects have many different branches for different people, and those people submit "merge proposals" to get into the main branch.
<humphreybc> But because we are a big project with a lot of contributors and a short time period to complete the project, we don't bother with merge proposals
<humphreybc> this means that members of the team can push directly into main
<humphreybc> Launchpad keeps track of each revision
<humphreybc> and when you commit, you give a short description of what you've changed, which appears beside the revision number
<humphreybc> https://code.launchpad.net/~ubuntu-manual/ubuntu-manual/main
<humphreybc> this is the main branch
<humphreybc> if you scroll down, you'll see the latest revision was 297
<humphreybc> [SLIDE 4]
<humphreybc> Blueprints
<humphreybc> https://blueprints.launchpad.net/ubuntu-manual
<humphreybc> blueprints are specifications or plans for features that we want to implement in the project
<humphreybc> they let us break down the overall project into small parts, and tell us a number of things about each part
<humphreybc> not only do they explain what the feature needs to do, but also who's going to work on it, how long it'll take, when it should be ready and what progress is being made
<humphreybc> we can target blueprints towards milestones
<humphreybc> blueprints also give us an option to choose a priority
<humphreybc> in our project, essential is reserved for things that are essential to the success of the project
<humphreybc> ie, without a latex template, we wouldn't even have a document at all
<humphreybc> high priority is usually given to chapters, ie, the content
<humphreybc> you can assign yourself to a blueprint
<humphreybc> but most of them are already taken
<humphreybc> [SLIDE 5]
<humphreybc> https://launchpad.net/ubuntu-manual/+milestones
<humphreybc> Milestones
<humphreybc> In our project, our milestones are the releases
<humphreybc> each release has a release date
<humphreybc> we are currently in the alpha release stage
<humphreybc> and are working towards the beta release - which will come out on March 18th.
<humphreybc> because our branch is a _rolling branch_ a release doesn't really amount to a lot of new things all at once
<humphreybc> it's just something to target and aim for
<humphreybc> blueprints are targeted to milestones
<humphreybc> [SLIDE 6]
<humphreybc> Bugs
<humphreybc> https://bugs.launchpad.net/ubuntu-manual
<humphreybc> Anyone can report a bug, you don't have to be a member of a team
<humphreybc> You only have to have a launchpad account
<ClassBot> gsmx asked: Why aren't the translations targeted in one of the milestones?
<humphreybc> Excellent question. Because I haven't created a blueprint for translations yet, I've forgotten :D
<humphreybc> We are actually targeting the translations to RC
<humphreybc> So as you can see, we have a few bugs there
<humphreybc> when reporting a bug, try to include things like the error message, or the page you saw the bug on etc
<humphreybc> so we can fix it easily
<humphreybc> also the revision number you encountered the bug on
<humphreybc> you can report anything as a bug, from latex technical stuff to factual errors and spelling mistakes
<humphreybc> Quickshot bugs should be reported on the quickshot project page (it has it's own project page and team)
<humphreybc> [SLIDE 7]
<humphreybc> https://translations.launchpad.net/ubuntu-manual
<humphreybc> I won't talk too much about translations, because dutchie has an entire session on them
<humphreybc> Basically we use a program called po4a that takes the information from the .tex files and turns it into .po and .pot files that launchpad can read
<humphreybc> click on "View all languages" under the "Translation for main" heading to see all the translations
<humphreybc> as you can see there are quite a lot
<humphreybc> dutchie is presenting translations next
<humphreybc> so you can learn some more about them :)
<humphreybc> [SLIDE 8]
<humphreybc> https://answers.launchpad.net/ubuntu-manual
<humphreybc> Here you can ask questions about the project
<humphreybc> anything you want to know
<humphreybc> and we'll try to answer them as soon as possible
<humphreybc> [SLIDE 9]
<humphreybc> I don't think there is a slide 9... :P
<humphreybc> Questions?
<humphreybc> Nobody has any questions on Launchpad?
<humphreybc> i'll show you something cool then
<humphreybc> https://launchpad.net/~ubuntu-manual/+map
<humphreybc> check out the team member locations
<humphreybc> dutchie: indeed!
<ClassBot> konopkov32 asked: Should I use Launchpad or .po files directly to translate?
<humphreybc> You should use launchpad to translate
<humphreybc> but dutchie will explain more soon
<humphreybc> I think it shouldn't matter if you translate from the po files directly
<humphreybc> https://launchpad.net/~ubuntu-manual/+mugshots
<humphreybc> you can check out all the pretty people that make up our project!
<humphreybc> http://www.facebook.com/pages/The-Ubuntu-Manual/266794861575?ref=ts
<humphreybc> you guys should join our facebook page
<humphreybc> 183 fans now!
<humphreybc> anyone need help setting up a launchpad account or ssh key?
<humphreybc> or using Ground Control?
<humphreybc> http://twitter.com/TheUbuntuManual
<humphreybc> aaaand my HTC Magic Android phone just arrived
<humphreybc> right i'm gonna bugger off for the rest of this session and play with my new cell!
<humphreybc> cool so that's all, i'll be back at 2100 UTC
<humphreybc> :)
<humphreybc> i'll keep my head in your talk tho dutchie
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Translations and how they work - Instructor: dutchie || Questions in #ubuntu-classroom-chat
<dutchie> here we go then
<dutchie> Hi everyone, and welcome to my talk on the translations system used by the Ubuntu Manual project.
<dutchie> My name is Josh Holland, and I go by the nick dutchie.
<dutchie> (as you can probably see)
<dutchie> I've been involved in the Ubuntu Manual project since pretty much the beginning.
<dutchie> I run a fair bit of the backend stuff, including the IRC bot, the planet, and, of course, the translations.
<dutchie> What I'm going to cover today includes:
<dutchie> * How to contribute a translation
<dutchie> * A brief overview of the translation infrastructure
<dutchie> * How to build a translated version of the manual
<dutchie> If you've got a question, stick it in #ubuntu-classroom-chat with QUESTION: at the front and I'll answer it when appropriate.
<dutchie> I'll also pause for questions at the end of each section.
<dutchie> So, let's get started!
<dutchie> (I hope nobody has any questions so far :) )
<dutchie> [How to contribute a translation]
<dutchie> This is easy! Just go to http://translations.launchpad.net/ubuntu-manual and click on the language you want to translate.
<dutchie> ooh, I forgot to mention, I don't have any slides
<dutchie> sorry if you need pretty things to look at, you're stuck with text for this one
<dutchie> You will then see the Launchpad translations UI.
<dutchie> All you have to do now is enter your translations into the boxes
<dutchie> They will then be reviewed, and hopefully included in the final translation!
<dutchie> Any questions so far?
<dutchie> [The translation infrastructure]
<dutchie> The Ubuntu Manual and Launchpad use the GNU Gettext system of translations
<dutchie> This is centred around two types of file: .pot files and .po files.
<dutchie> .pot files are translation template files, and contain all of the strings that need translation
<dutchie> Ours is called ubuntu-manual.pot, and, along with all the .po files, lives in the po/ directory at the top of the source tree
<dutchie> you can see them at http://bazaar.launchpad.net/~ubuntu-manual/ubuntu-manual/main/files/head:/po/
<dutchie> The .po files are the ones which actually contain the translations
<dutchie> They are named after the language they translate, such as fr.po for the French translation, and en_GB.po for the British English one
<dutchie> More information about the format of .pot, .po and .mo (which we don't need) files is available from http://www.gnu.org/software/gettext/gettext.html
<dutchie> But basically, the .po files contain the untranslated string and the translated string next to each other in a nice parsable format
<dutchie> GNU Gettext is mainly intended to translate software programs, rather than documentation
<dutchie> We therefore can't use it directly, becuase it is normally used as a software library
<dutchie> So, in Python for example, you'd do "import gettext" and mark each string for translation by passing it to a function
<dutchie> Other major languages work in much the same way
<dutchie> Instead, we use po4a, or po for anything (http://po4a.alioth.debian.org)
<dutchie> This is a set of Perl scripts that allow you to use the infrastructure built up around translating Gettext files for your project
<dutchie> This infrastructure includes Launchpad's excellent Rosetta system, Emacs's po mode, and GUI tools like poedit
<dutchie> It supports manpages, Perl pod format, xml, sgml, TeX, plain text, ini and KernelHelp files
<dutchie> Obviously, we're interested in the TeX bit, since LaTeX is a dialect of TeX
<dutchie> It can be run using individual commands analogous to msgmerge, xgettext and friends, but it is easier to use the po4a(1) command and a configuration file
<dutchie> po4a reads the configuration file and works out which files to read, and where to put the translated versions
<dutchie> Ours is visible at http://bazaar.launchpad.net/~ubuntu-manual/ubuntu-manual/main/annotate/head:/po4a.conf
<dutchie> It's quite small :)
<dutchie> And also pretty self-explanatory
<dutchie> Note how I don't need to tell it all the individual files, it reads the main.tex file and works out for itself that the chapters need to be read individually
<dutchie> Any questions on Gettext or po4a?
<dutchie> OK, moving on then
<dutchie> [How the translations are updated]
<dutchie> I try to update the translations around every day.
<dutchie> However, I have a busy life and I don't always manage this, so be gentle if I forget ;)
<dutchie> There are two stages to updating the translations.
<dutchie> 1. Updating the translated files
<dutchie> (So we pull in any new translations from launchpad)
<dutchie> 2. Updating the translation .pot file
<dutchie> This may also involve changing the .po files, if some text has been added, taken away or changed
<dutchie> The translations done on Launchpad are exported into the lp:~jshholland/ubuntu-manual/manual-trans branch
<dutchie> Launchpad allows for a fair bit of automation in this area
<dutchie> I merge this in, which inevitably results in conflicts. These are resolved by just using the copy from LP, and discarding any local changes.
<dutchie> Note that this means that the translations on Launchpad are considered the definitive version
<dutchie> If you've made a change to the po file directly in the branch, it's possible that it will be overwritten by someone else's translation on LP
<dutchie> However, Launchpad does scan the branch when it's uploaded, so it could still be used in the final product
<dutchie> This is me encouraging people not to change the files directly, but do so if the Rosetta interface *really* annoys you
<ClassBot> spiral53 asked: what happens if in the english source file, a sentence changes, how do you know which sentence in the translation has to change?
<dutchie> Good question
<dutchie> This is what po4a is designed to handle
<dutchie> It scans the LaTeX source and checks the files for changes
<dutchie> It's very clever, I don't really understand the guts of it :)
<dutchie> The text in the .pot and .po files is indexed by filename and line number too
<dutchie> so that helps tools like po4a keep track of what's going on
<dutchie> That answer your question?
<dutchie> < spiral53> so you are supposed to translate it as much like the original as possible with regards to sentence order
<dutchie> It's up to you as a translator to keep the spirit and flow of the manual in your language
<dutchie> The text is translated in paragraph-sized chunks, so there is some scope for moving sentences around
<dutchie> Do whatever you have to to keep the manual well-written and in a sensible order
<dutchie> OK, carrying on then
<dutchie> Once I've done this, I commit the merge and run the following command:
<dutchie> (this is a big one)
<dutchie> $ po4a --no-translations --copyright-holder="The Ubuntu Manual Team" --package-name=ubuntu-manual --package-version=$(bzr version-info --custom --template={revno}) po4a.conf
<dutchie> This command updates the .pot file and .po files, without generating translated content, and sets appropriate values in the files.
<dutchie> You don't really have to worry about what this does or how it does it, but this is what I do to keep things up-to-date
<dutchie> This is then committed and the whole lot is pushed up to Launchpad.
<dutchie> Launchpad then scans the branch, and imports the .po and .pot files to use as a basis for the translations done.
<dutchie> Launchpad is really quite clever in this sort of area
<dutchie> Every time a new commit is pushed, it goes through the source tree and imports any new or changed translations into Rosetta
<dutchie> The cycle then repeats.
<dutchie> Any questions about how this all works?
<dutchie> OK, while you're all mulling that over, I'll talk a bit about freezes
<dutchie> (Nothing to do with the weather, even if it has been cold)
<dutchie> Early on, when lots and lots of content was being written and changed around, we had a few problems with translations
<dutchie> People would translate a phrase, which would then be changed a day or two later to something else, and it'd need translating again
<dutchie> This is less of a problem now, as the vast majority of the content is now written, and unlikely to change further, but it still happens to some extent
<dutchie> To give the translators a chance to catch up with what's been written, we intend to freeze the writing around the beta
<dutchie> At this point, we'd stop writing and editing content, and focus on getting screenshots and translations done
<dutchie> Does this make sense to everyone?
<ClassBot> komsas_ asked: what to do with strings laike that "For example in (year????), Dell began a collaboration" ?
<dutchie> In places like that, we haven't got the exact date we need for that
<dutchie> So, for now translate it in a way that suggests it will be filled in later
<dutchie> That is the sort of thing we'd want sorted out for the beta
<ClassBot> spiral53 asked: What happens if the translated text is longer than the english one, and screenshots doesn't fit any more as they are supposed to.
<dutchie> LaTeX should be intelligent enough to deal with cases like that, though you'd have to ask godbyk to be sure
<dutchie> I'm fairly certain that it wouldn't really be a problem
<dutchie> Any further questions before I move on?
<dutchie> [How to build a translated version of the manual]
<dutchie> (This next bit applies mostly to before you had to be running Tex Live 2009 anyway, so I'll skip through it quickly)
<dutchie> Thanks to some cool work from godbyk, our LaTeX guru, it's not too hard to see your translations in the manual.
<dutchie> Unfortunately, we've had to use the polyglossia LaTeX package to handle the translations.
<dutchie> This is only available with texlive 2009, which is only in the repos for Lucid (10.04).
<dutchie> So, if you're running Karmic (9.10), you have two choices:
<dutchie> 1. Upgrade to Lucid
<dutchie> 2. Download and install texlive 2009 directly from upstream
<dutchie> This set of instructions was taken from https://lists.launchpad.net/ubuntu-manual/msg00548.html (thanks godbyk)
<dutchie> The first part of this will only apply to people running Karmic (or earlier).
<dutchie> Step one is removing any texlive packages you've already got.
<dutchie> You can do this on the command line via "sudo apt-get remove texlive-*" or through Synaptic.
<dutchie> The next step is to download http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz, the install script for texlive
<dutchie> You can then unpack the tarball by "tar -xvvzf install-tl-unx.tar.gz" and change into the newly unpacked directory
<dutchie> Once in there, run "sudo ./install-tl". The defaults it selects are normally quite good, but you can remove the documentation packages for a smaller download (the full one is about 2.5G!)
<dutchie> This will take quite a while, so be patient.
<dutchie> Once this is done, change into the ubuntu-manual directory, and run pkgs/install-pkgs.sh script
<dutchie> That's the Karmic-specific stuff out of the way. Lucid folks can just install texlive-base.
<dutchie> It should hopefully find everything; if it doesn't, and you're on Lucid, it's safe to install the suggested ones
<dutchie> If you're on Karmic, however, something has gone wrong with the installation.
<dutchie> Drop into #ubuntu-manual and we'll try and help you out.
<dutchie> So now you've got all the texlive 2009 packages installed, you can build the manual.
<dutchie> This is easy: just type "make ubuntu-manual-LANG.pdf", where LANG is the language code (corresponding to one of the .po files in po/) you'd like to build.
<dutchie> Ignore that lot and listen to godbyk :)
<dutchie> So, once you've got everything installed, you can (as it says there) just "make ubuntu-manual-LANG.pdf"
<dutchie> All being well, the manual will now build, and you can see the fruits of your labour
<dutchie> You may need to install some font packages. The ones you need will be in the error message from LaTeX, and can be found in a package starting with ttf-
<dutchie> If you have any problems in that sort of area, again ask godbyk
<dutchie> He's the one in charge of LaTeXy stuff :)
<dutchie> Any questions on that?
<dutchie> That's pretty much all I have to say about translations.
<dutchie> I hope this has helped you to understand how the translations, and maybe do some translations for yourself!
<dutchie> Thanks a lot for coming along.
<dutchie> Any questions to fill up this 20 minutes I've got left over now?
<dutchie> OK, there don't seem to be any questions, so I'll leave it there
<ClassBot> komsas_ asked: Will be pdf version for all languages, I think it will be more easy for all translators.
<dutchie> Of course there will!
<dutchie> No point translating it if we then don't build a final version out of the translations :)
<dutchie> I think we're done for real now ;)
<dutchie> If you have any more questions or problems, I'm usually around in the #ubuntu-manual channel, or you can send an email to the mailing list
<dutchie> ubuntu-manual@lists.launchpad.net
<ClassBot> c7p asked: Which language's pdf will be available on lucid's live-cd ? i mean how many is it possible to contain?
<dutchie> Stop coming up with these just as I think I'm finished :)
<dutchie> Getting the manual on the live CD is looking unlikely at the moment
<dutchie> Understandably, Canonical and the core developers don't want to put so much public backing to such a new project
<dutchie> What we've got to do is get a really good manual, in lots of different languages, to show that we can deliver the goods
<dutchie> Then we've got to do it all again for Lucid+1 :)
<dutchie> Even if we do show we're up to the standard, it's not a small file to be putting onto the live cd
<dutchie> At the moment, it's 1.2M, and that's without screenshots
<dutchie> A CD is only 700M, and there's a great distro to go on there first :)
<dutchie> I personally can't see translated versions being put on the live cd
<dutchie> I think some LoCos do respins for their area, and they may well consider it
<dutchie> I'm sure that an Ubuntu DVD is on the cards for the near future too
<dutchie> Plenty of room on there for a little PDF manual :)
<dutchie> I think I am actually done now
<dutchie> Thanks everyone for keeping me on my toes with good questions
<dutchie> Now go and get translating!
<dutchie> Next up is humphreybc to talk about social media then
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: The project and social media - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<humphreybc> right
<humphreybc> sorry distracted by andriod phone :P
<humphreybc> how did the presentation go dutchie?
<humphreybc> [SLIDE 1]
<humphreybc> http://www.facebook.com/pages/The-Ubuntu-Manual/266794861575?ref=ts
<humphreybc> okay
<humphreybc> so social media
<humphreybc> it's important to us
<humphreybc> why is it important to us?
<humphreybc> [SLIDE 2]
<humphreybc> social media increases publicity and hype for projects
<humphreybc> the ubuntu manual project wouldn't be anywhere near it is now if it wasn't for blogging sites
<humphreybc> facebook has been helpful too
<humphreybc> and so has twitter
<humphreybc> not just our own pages, but also other people retweeting things
<humphreybc> social media encourages more people to help and get involved
<humphreybc> they feel "important" if you will, because the project they are working on is in the limelight
<humphreybc> it's much more rewarding to see a project that you're working on all over the internet and blog sites, than it is to see nothing about a project you're working on
<humphreybc> media attention and hype also puts pressure on our project to live up to the hype
<humphreybc> pressure is good for projects, especially with ambitious projects like our own
<humphreybc> it makes our contributors work harder and do better, knowing that a) they'll let a lot of people down if they don't live up to the hype and b) when the project is released, they'll get a good chunk of credit for it
<humphreybc> social media also spreads the word about our project
<humphreybc> and it doesn't just spread the word for help
<humphreybc> it also makes people aware of the manual
<humphreybc> so we're going to have a lot of people actually download it and read it simply because they know about it
<humphreybc> so many projects are awesome but undiscovered, we never hear about them
<humphreybc> what's the point in writing a 200 page manual if no one sees it?
<humphreybc> [SLIDE 3]
<humphreybc> So, it is natural for us to use social media and "web 2.0" to our advantage
<humphreybc> we have created a facebook, twitter and identi.ca accounts
<humphreybc> we also have an aggregated blog planet
<humphreybc> i'll run through these now
<humphreybc> Facebook:
<humphreybc> you can see the facebook page in the window in lernid
<humphreybc> for those not using lernid: http://www.facebook.com/pages/The-Ubuntu-Manual/266794861575?ref=ts
<humphreybc> we have 187 fans apparently
<humphreybc> Facebook is good because it allows us to post updates on the progress, generate hype for events such as this, and also plan events where people can RSVP to them
<humphreybc> also people can ask questions and discuss in the group forum
<humphreybc> it gets people talking about our project
<humphreybc> gets people excited
<humphreybc> and that's what we've been riding on these past two months, a huge wave of excitement and hype surrounding this awesome *new* and *fresh* project for ubuntu
<humphreybc> we may not be as crucial as the boot team changing to plymouth, or as exciting as the MeMenu
<humphreybc> but those projects haven't got a facebook group, they don't have an aggregated blog or a twitter account where you can actively see the progress
<humphreybc> they aren't _transparent_ - they don't communicate with the users enough
<humphreybc> and hence we never hear about them, and they probably say with only half a dozen contributors for the majority of their lifespan
<humphreybc> of course, some people don't want 250+ people in their team
<humphreybc> some projects don't need that many people
<humphreybc> but having more people = more ideas and more features
<humphreybc> it also allows us to have a greater input from everyday users
<humphreybc> so we come out overall with a better product
<humphreybc> http://twitter.com/TheUbuntuManual
<humphreybc> Our twitter account
<humphreybc> 118 followers
<humphreybc> http://identi.ca/theubuntumanual
<humphreybc> (I don't know much about identi.ca because I don't use it)
<humphreybc> but even then, 30 subscribers
<humphreybc> and this is for a team creating a book!
<humphreybc> people obviously like what we're doing and feel the manual is needed in ubuntu
<humphreybc> but had we not been so aggressive in publicising it, i don't think we'd be anywhere near where we are
<humphreybc> and I think it's important for projects of any kind to get out there and show people what they're doing, make it easy for people to contribute, and be transparent, talk to the users and ask them what they want. Hold meetings regularly, run events like these where people can see what it's all about
<humphreybc> http://planet.interesting.co.nz
<humphreybc> The Ubuntu Manual Planet (courtesy of dutchie)
<humphreybc> Once again, an "insight into the lives of UM developers"
<humphreybc> [SLIDE 4]
<humphreybc> So, with all that in mind - how can you help with social media for the UMP?
<humphreybc> if you haven't already found something to do from the other presentations
<humphreybc> we still need people to actively maintain things like the facebook and twitter accounts, identi.ca etc
<humphreybc> update the screenshots on facebook, change the logo on twitter, tweet new things in the manual, new revisions, progress
<humphreybc> and also spread it so your family and friends can join
<humphreybc> obviously only if they're interested :P
<humphreybc> UMP, although voluntary, can be used as experience on a resume
<humphreybc> employers value work in the open source community
<humphreybc> so if you are in IT, there are benefits for you
<humphreybc> working with UMP can lead to ubuntu membership, UDS sponsorship, credit in the community, other projects, meeting people, even canonical employment!
<humphreybc> And anything you do, big or small, will be included in the credits
<humphreybc> So, in summary: More projects should use social media to their advantage to spread the word, generate hype, get more contributors, more feedback and ideas, and overall a better product.
<humphreybc> Questions?
<humphreybc> komsas_ asked: " what you can suggest for other Loco teams, how to attract more contributors (translating, editing etc.)?"
<humphreybc> Well, I would start by creating a facebook group to attract people from your country and networks
<humphreybc> you can also run events and things through it
<humphreybc> then come up with cool ideas for events that you can run
<humphreybc> and tell ubuntu members about them so they can post on the planet
<humphreybc> email blogs
<humphreybc> and the forums
<humphreybc> hold a survey on the forums and email the forum council to see if they could feature it
<humphreybc> perhaps attach your loco to a project to ride off their publicity
<humphreybc> and make sure there are lots of things to do across a wide range of areas
<humphreybc> create jobs for people if you don't have any
<humphreybc> and when you come across someone willing to help, treat them as if they are very important
<humphreybc> they'll appreciate it and they'll be even more willing to help
<humphreybc> value their feedback and ideas
<humphreybc> :)
<humphreybc> tom, that's a good suggestion
<ClassBot> jorgetb asked: I would like to help the team, how can I start to help?
<humphreybc> have you been around for the other sessions?
<humphreybc> what are you interested in? what are you skills? ie, programming, artwork, writing, translating?
<humphreybc> cool, well we need writers and translators!
<humphreybc> start by jumping over to #ubuntu-manual on irc
<humphreybc> and also email the mailing lists with some of your talents or what you're interested in
<humphreybc> mailing list*
<humphreybc> that way we can find out what you like to do best and get you doing what you want
<humphreybc> no problem jorgetb :)
<humphreybc> i'm normally around in IRC and you can also email me whenever you want, humphreybc@gmail.com
<humphreybc> find me on facebook too :)
<ClassBot> TomC asked: What do you think of having members of the UM team attending Lucid release parties, wherever they may be held?
<humphreybc> Tom, great idea!
<humphreybc> UM members and contributors should definitely go along to the release parties and spread the word about the manual
<humphreybc> while the people at the release parties are probably not the target audience for us, everyone likes getting free documentation and free stuff
<humphreybc> we might get some new contributors that way too :)
<humphreybc> any other questions?
<humphreybc> okay well thanks to everyone for coming, if you missed any of the sessions you can find them again on irclogs.ubuntu.com
<humphreybc> the slides are in the bzr branch and also on kevin's website: http://kevin.godby.org/ubuntu-manual/talks
<humphreybc> and my ground control demo: http://www.youtube.com/watch?v=MeNXqfofbWk
<humphreybc> we're repeating the sessions again later on, they start up at 0400 UTC I believe
<humphreybc> so if you missed one in particular and want to come along, you've got another chance :)
<humphreybc> https://wiki.ubuntu.com/ubuntu-manual
* 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
* 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 || Current Session: Test - Instructor: cjohnston || Questions in #ubuntu-classroom-chat
* 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
#ubuntu-classroom 2010-02-23
<humphreybc> um
<humphreybc> i have a voice!
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: An introduction to the project - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<humphreybc> [SLIDE 1]
<humphreybc> https://wiki.ubuntu.com/ubuntu-manual
<humphreybc> Can i have a show of hands for who's actually here?
<humphreybc> we'll wait another 2 minutes for some stragglers to arrive
<humphreybc> okay so those who aren't using Lernid, you can get the slides from  http://kevin.godby.org/ubuntu-manual/talks/
<humphreybc> Also, you can chat in #ubuntu-classroom-chat
<humphreybc> because you're not voiced in this chatroom
<humphreybc> and lastly, to use the ClassBot question feature, ask a question in the chatroom and preface it with "QUESTION"
<humphreybc> eg, "question: why are you telling me all this even though I already know it?"
<humphreybc> i'm going to assume everyone's happy and i'll move on!
<humphreybc> you can ask a question whenever you want btw
<humphreybc> okay so, the ubuntu manual project
<humphreybc> what the project is about. [SLIDE 2]
<humphreybc> what we're trying to do is create some great documentation that's easy to follow and all in one place
<humphreybc> I used to be an Ubuntu beginner once
<humphreybc> and basically when I started I found the help to be quite hard to find, our out dated
<humphreybc> that's nothing against the docs team, they're doing the best they can and it's hard to maintain docs
<humphreybc> so what we're trying to do is create an up-to-date comprehensive manual that's in a context for fairly new people to Ubuntu and computers in general
<humphreybc> We'll re-release a version every 6 months to coincide with Ubuntu releases
<humphreybc> at the moment we're obviously working on the Lucid release
<humphreybc> The project itself only started a couple of months ago with just me writing the document myself. I originally was going to make it closed-source but free, 50 pages or so, not a huge amount of screenshots, in open office and only in english
<humphreybc> but some ubuntu community members advised me to open it for collaboration on launchpad
<humphreybc> So i did
<humphreybc> turned out that a lot of people felt that a manual like this was really needed
<humphreybc> so now we have 250+ contributors, working towards a 200 page manual with 50 screenshots translated into 40+ languages
<humphreybc> instead of using open office we write it using latex
<humphreybc> [SLIDE 3]
<humphreybc> Who it's for
<humphreybc> We're targeting people who have possibly used a computer before on either Windows or Mac
<humphreybc> we expect them to know what a mouse is and we expect them to have basic computer skills - enough to be able to acquire the manual in the first place
<humphreybc> but from then on, our manual is written assuming they've never heard of Ubuntu or Linux
<humphreybc> so we give an introduction to Ubuntu/Linux, history of it, talk about the community and FOSS software etc in the prologue
<humphreybc> we teach them everything they need to know to get stuff done
<humphreybc> but we don't teach them too much
<humphreybc> our target audience view computers as a "means to an end"
<humphreybc> they don't want to know how it works, they just want to know how to get stuff done, like print or send emails or view photos :)
<humphreybc> [SLIDE 4]
<humphreybc> So basically What we want to achieve - i've sort of covered this already
<humphreybc> our goals are inclusion on the default CD at some stage, and definitely in the repositories.
<humphreybc> we want to give the reader many choices with regards to language, format, layout, paper size etc
<humphreybc> so in the future we're planning an HTML5 version, paper sizes will be attached to languages (en_US will be US Letter size, en_GB will be A4 etc)
<humphreybc> and we're going to create a nice website with an easy way to acquire the right manual. probably just three questions that they answer, like "what language do you speak" "what country are you from" and "what distribution would you like the manual for"
<humphreybc> (we might do a Kubuntu/Xubuntu/Ubuntu Netbook Edition/Ubuntu Developers Manual etc down the line, depending on the success of this one)
<humphreybc> okay, so, any questions on all of that before I move on?
<humphreybc> (questions can be asked in #ubuntu-classroom-chat)
<humphreybc> nope?
<humphreybc> okay, moving on
<humphreybc> [SLIDE 5]
<humphreybc> so that's all well and good I hear you say, but _how_ is all this going to happen?
<humphreybc> well, we are using a bunch of existing tools and creating our own tools in some instances
<humphreybc> basically the manual itself is written using LaTeX 2009, in .tex files that are compiled into a PDF (and down the line, other formats like HTML5)
<humphreybc> we use Launchpad for blueprints, code hosting, milestones, bugs, answers and translations
<humphreybc> We use Bazaar for version control, and the Ground Control application as a GUI front end to bzr
<humphreybc> We use Launchpad's rosetta system for translations, and po4a to take the strings out of the .tex files and put them into .po and .pot files
<humphreybc> we use several methods of communication, namely, IRC channel (#ubuntu-manual), mailing list, wiki, weekly meetings, facebook, msn, skype
<humphreybc> we also have an aggregated blog: http://planet.interesting.co.nz
<humphreybc> We thrive on publicity and hype, and we have ambitious goals
<humphreybc> but we have a fast paced development environment
<humphreybc> there isn't much stuffing around, we just "get things done."
<humphreybc> [SLIDE 6]
<humphreybc> Who the key people are
<humphreybc> I won't repeat what's on the slide here because you should be able to see it
<humphreybc> basically there are 6 key people
<ClassBot> vdquynh asked: on which server is the #ubuntu-manual channel (I'm connected and searching irc.ubuntu.com)
<humphreybc> irc.freenode.net :)
<humphreybc> sorry I should have made that clear
<humphreybc> so 6 key people, myself, project leader, dutchie who does a tonne of backend stuff, godbyk who does the latex stuff, Ilya, who works with the authors, Jamin who coordinates editing and thorwil who does the artwork
<humphreybc> we also have a small team of developers working on Quickshot (i'll explain what Quickshot is soon)
<humphreybc> by the way, these slides are all available in our bzr branch lp:ubuntu-manual
<humphreybc> [SLIDE 7]
<humphreybc> Okay, Quickshot!
<humphreybc> So, basically, in our manual we have around 50 spaces for where we'd like to put screenshots
<humphreybc> and we want all the screenshots to be localized (no use putting an english screenshot in the chinese manual)
<humphreybc> so, 40 translations
<humphreybc> the math is 50 x 40 = 2000 screenshots
<humphreybc> we also need the resolution, theme, applications, dpi, file format, file name etc to be consistent so we can work well with them in LaTeX, and also so it looks good
<humphreybc> it would take years for a few people to get all these shots themselves, and it would be very very inefficient and time consuming
<humphreybc> so i came up with the idea to write a program that automates a lot of the stuff
<humphreybc> quickshot isn't really a screenshotting application - that's what it does, yes, but it's only a small part. the big part of quickshot is that it sets up a new default user with the default theme, switches users to that user, pulls a branch full of some code that tells it what screenshots need to be taken. Quickshot then tells the user what screenshot they'll be taking, tells them to set up their screen, takes the shot and 
<humphreybc> the UI looks like this at the moment: [SLIDE 8]
<humphreybc> For the technical peeps: it's written in Python using Quickly and Glade to design the UI
<humphreybc> [SLIDE 9]
<humphreybc> Okay, so, how you can help us!
<humphreybc> What's cool about our project is:
<humphreybc> 1. We cover a huge range of stuff, from programming to writing, to editing and artwork, to maintaining social sites and updating twitter. you name it, we do it.
<humphreybc> 2. We are fast paced, we're fun to work with, and there are always things happening
<humphreybc> 3. We run a lot of events and we do a lot of cool stuff
<humphreybc> and 4. We make it easy for you to join and get started
<humphreybc> So, questions?
<humphreybc> no one has any questions at all?
<humphreybc> yay!
<ClassBot> vdquynh asked: Is Quickshot ready to be used right now?
<humphreybc> Nope, it's not. It's still under heavy development - I only thought of the idea last week :P
<humphreybc> you can check out the branch though, http://launchpad.net/quickshot
<humphreybc> bzr branch lp:quickshot
<humphreybc> you can run it by double clicking the run.sh script
<humphreybc> TommyBrunn is working on the Python with ubuntujenkins, i'm helping with the UI and bzr stuff
<humphreybc> and yes, we do need help!
<humphreybc> that's okay
<humphreybc> when it's finished it will be super dooper easy to use :P
<humphreybc> abeisgreat, meh, i'm not very good at python either
<humphreybc> any help would be useful, honestly
<ClassBot> epkugelmass_lern asked: How are discussions progressing with the Ubuntu distro drivers? Are they actively considering Ubuntu Manual for 10.04 release? I know the feature freeze (a3) is coming up fast.
<humphreybc> No, they're not. It won't be in the Lucid CD because a) Lucid is an LTS b) we're a very young project and c) we weren't at UDS-L to actually suggest it
<humphreybc> but don't worry, it will be easily accessible on websites/repos etc
<humphreybc> and i'll put it forward for 10.10 :)
<humphreybc> should be on the CD for 10.10
<ClassBot> Takyoji asked: Where would it be listing of what exact screenshots need to be taken? Also, is it on a basis of a person being assigned to taking screenshots of the same dialog in different languages, or?
<humphreybc> What's happening is the authors are inserting a command into their latex chapters where they think a screenshot is necessary. in the compiled PDF it looks like "MISSING SCREENSHOT" and has a description underneath
<humphreybc> these missing screenshots are actually exported to a file in the branch "screenshots.log" i think
<humphreybc> that list will be taken, with some nifty scripting, and duplicated for 40 different branches, one for each language
<humphreybc> inside each branch will be folders for chapter, and in each chapter will be the relevant screenshots as plain text files containing their description. Quickshot will be programmed to find plain text files and treat them as "screenshots that are yet to be taken"
<humphreybc> it will pull the description out, and, when the shot is taken, replace the plain text file with an image file ending in .png
<humphreybc> Quickshot will then ignore .png files as they've already been done :)
<humphreybc> We are aiming to get this thing ready for the Ubuntu Global Jam
<humphreybc> so we can get tonnes of people screenshotting
<humphreybc> oh also, Quickshot will have the ability to change the system language for the "quickshot" user
<humphreybc> obviously all the english screenshots will be captured first
<humphreybc> so once that's done, we'll have to have the user switch to another language for taking shots :)
<humphreybc> good question.
<humphreybc> https://wiki.ubuntu.com/ubuntu-manual/quickshot
<ClassBot> Abeisgreat asked: How far along is quickshot? I know you said it's only a week old, but how far is it?
<humphreybc> surprisingly we're doing pretty well
<humphreybc> I've finished most of the main UI dialogs
<humphreybc> Quickshot at the moment can:
<humphreybc> Create a new user
<humphreybc> Prompts the current user to switch (and has a button to do that)
<humphreybc> opens on start in the quickshot user
<humphreybc> account
<humphreybc> it can also remove that user
<humphreybc> next on the list is creating the bzr branch, pulling it and installing dependencies like language packs and fonts if they want to change language
<humphreybc> we're aiming for it to be ready by March 18th (manual beta, lucid beta)
<humphreybc> and then finished bug-free by April 1st
<humphreybc> That gives us about a month of solid screenshotting till our RC on the 20th of April
<humphreybc> we'll start the english screenshots on March 4th which is the Lucid UI freeze
<humphreybc> and we are going to use those as "example" shots
<humphreybc> it's all very busy
<humphreybc> yep, it's a cool project
<humphreybc> I really like quickshot, it's a bit of fun
<ClassBot> Takyoji asked: What if the default theme in Lucid is changed?
<humphreybc> the default theme is changing in Lucid :)
<humphreybc> we're packaging Quickshot actually for Lucid, and targeting it at Lucid testers
<humphreybc> and after March 4th, Lucid won't and can't change in appearance at all because that's the User Interface freeze
<humphreybc> we don't have much time, so we'll need all the help we can get
<humphreybc> and we're designing quickshot to be as easy and automated as humanly possible
<humphreybc> so even your grandma should be able to capture screenshots for us!
<ClassBot> vdquynh asked: How will we interact with bzr? Will it be sufficient to have a Launchpad account?
<humphreybc> Yes, the branch will be entirely open so anyone with an lp account should have write permissions and auto-merging. We are considering seeing if the launchpad guys can actually make our branch public so _anyone_ (even without an lp account) can push. Either that, or ask them to sign in on Quickshot and if they don't have an account, create one through Quickshot
<ClassBot> Takyoji asked: Would that imply that March 4th would be a reasonable time to start helping with taking screenshots? (or whenever the new theme is officially released)
<humphreybc> Not much will be happening around March 4th, but on March 18th there will be a huge rush as all hands man the screenshot pumps!
<humphreybc> We're aiming to get everything out of the way in the project before march 18th - that means writing, content, editing, icons, title page, artwork, style, colours... everything
<humphreybc> March 18th is our writing freeze so translations can catch up
<humphreybc> so all of our team will be screenshotting for a whole month
<humphreybc> :)
<ClassBot> vdquynh asked: Do I understand well that translations shoud better start after March 18th?
<humphreybc> yep, at the moment translations are a bit hay-wire. I wasn't even planning on having anything more than an english manual, so I never thought about translations. Then all of a sudden we had like 100 people from all countries start emailing us asking for translation support, so we rushed to build it in
<humphreybc> the problem with translating stuff early is that it is subject to change
<humphreybc> and so a lot of the stuff they're translating is changing every day as authors and editors re-work sections and bits and pieces
<humphreybc> I would wait until March 18th to start translating, because then you know anything you do will stick as our writing is frozen. Anything in the manual on March 18th is there for good, no exceptions. (unless some cheeky blighter drops in a swear word somewhere right before the freeze)
<humphreybc> yup :)
<humphreybc> more questions? we've still got 10 minutes until i start rambling on about ground control and how cool it is :)
<humphreybc> cool :)
<humphreybc> http://launchpad.net/groundcontrol
<ClassBot> Takyoji asked: What will be the licensing of the Ubuntu Manual?
<humphreybc> Creative Commons Attribution Share Alike :)
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Using Ground Control to make changes - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<humphreybc> which basically means that it's free, anyone can use the source code, copy it, change it, redistribute it etc
<humphreybc> okay, ground control!
<humphreybc> [SLIDE 1]
<humphreybc> once again, slides available @ http://kevin.godby.org/ubuntu-manual/talks/
<humphreybc> or if you're using Lernid, you should see them to the top right!
<humphreybc> So, Ground Control is basically a front end to bzr/bazaar
<humphreybc> it's a python plugin for Nautilus written by Martin Owens
<humphreybc> it's pretty sweet, avoids the command line entirely and makes stuff a lot simpler
<humphreybc> it's not perfect yet, but it does the job and martin needs more testers so I offered to use it in UMP
<humphreybc> soooo for you to install it and run it, i've made a handy dandy walkthrough video
 * humphreybc tries to find the link
<humphreybc> http://www.youtube.com/watch?v=MeNXqfofbWk
<humphreybc> it should appear in Lernid
<humphreybc> so have a watch of that
<humphreybc> it's just over 6 minutes long
<humphreybc> and let me know when you've watched it :)
<humphreybc> [SLIDE 2]
<humphreybc> I just put the commands in the slideshow window
<humphreybc> okay so everyone watched it?
<humphreybc> please say something so i know there are still people here...
<humphreybc> okay cool we can wait, we've got tonnes of time
<humphreybc> groovy, ok we'll move on but i'll leave the video there
<humphreybc> [SLIDE 3]
<humphreybc> so basically, as you can see from the video it's pretty easy to use
<humphreybc> where some people had difficulty earlier today was with setting up the SSH key when logging into your account
<humphreybc> so let me know if that's a problem for anyone
<humphreybc> basically just the most important thing is to a) make sure you're a member of our team
<humphreybc> and b) check the "download my branch" radio button
<humphreybc> if you choose either of the other two, you'll end up with a read only branch that you can't commit, or you'll push and create a merge proposal. We avoid merge proposals, and i'll tell you why
<humphreybc> other projects that are crucial to the system, such as the boot team stuff, software center, synaptic etc
<humphreybc> they use merges because they don't want someone coming along and deleting all the code or stuffing it up and then pushing to main
<humphreybc> so they review each merge and approve or decline it for inclusion into main
<humphreybc> why don't we do that? easy:
<humphreybc> 1. We have so many people committing and making revisions, we'd have merge proposals coming out of our easr
<humphreybc> ears*
<humphreybc> 2. We don't have time to bother with merge reviews because we're too busy working on the project - we have a tight enough schedule as it is without a full time merge reviewer!
<humphreybc> But you may say "well what happens if someone breaks something?" - we can easily revert to an earlier revision
<humphreybc> in this case, not having merges has more benefits for us than cons
<humphreybc> so, that's why you "download my branch" so you can push directly into main
<humphreybc> remember the requirements to be able to get our branch. You need:
<humphreybc> 1. A launchpad account
<humphreybc> 2. An SSH key for your computer
<humphreybc> 3. To be a member of our team
<humphreybc> 4. Have bzr or Ground Control installed
<humphreybc> [SLIDE  4]
<humphreybc> [SLIDE 5]
<humphreybc> wait
<humphreybc> [SLIDE 4]
<humphreybc> there we go :P
<humphreybc> Okay so you probably don't need to know this but I think it's quite cool so i'm going to tell you
<humphreybc> at the end of the video you might have noticed some buttons that say "Make Show" and "Make Clean"
<humphreybc> vdquynh: good question, i'll have to find out. hang on, i'll answer that in a sec :)
<humphreybc> okay so these developer buttons are a feature in Ground Control 1.5
<humphreybc> basically in the root of our branch there is a file called .gcfunctions
<humphreybc> How do we know if our computer has a ssh key? and how to find it?
<humphreybc> oops
<humphreybc> http://www.youtube.com/watch?v=MeNXqfofbWk
<humphreybc> copy pasta fail
<humphreybc> so where was I? ah, right, .gcfunctions
<humphreybc> in this file there is some basic code that sets up some buttons with a label and a command
<humphreybc> all they run is "make show" and make clean
<humphreybc> i just thought they were neat :)
<humphreybc> okay, your question
<ClassBot> vdquynh asked: How do we know if our computer has a ssh key? and how to find it?
<humphreybc> I *think* Applications > Accessories > Passwords and Encryption Keys. "My Personal Keys" tab, and there should be a key for SSH
<humphreybc> also, on launchpad, go to your profile (ie, mine is https://launchpad.net/~humphreybc )
<humphreybc> and it should say you have an SSH key
<humphreybc> see how it says "SSH keys: benjamin@benjamin-laptop" ?
<humphreybc> https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair
<humphreybc> vdquynh: have a look at that
<humphreybc> it runs you through setting up an SSH key
<humphreybc> sweet :)
<humphreybc> so any other questions about ground control or bzr?
<humphreybc> There is a session later on on launchpad where i explain more about launchpad features
<humphreybc> the logs for all of these sessions can be found on http://irclogs.ubuntu.com
<humphreybc> and the slides are on godbyk's website, also in our bzr branch under the folder "48hours"
<humphreybc> tomorrow that folder will be renamed to "help"
<humphreybc> to get the branch, follow the ground control video, or run "bzr branch lp:ubuntu-manual" in a terminal
<humphreybc> any other questions?
 * humphreybc likes it how he has a 2 hour break to get some dinner before talking about social media
<humphreybc>  neat! well stick around because josh and Ilya have some really cool presentations coming up
<humphreybc> (If you're using Lernid, you can check out the schedule by clicking on "Schedule" up the top) - it also gives you the times in your local timezone!
<humphreybc> okay fellas, i'm off to grab something to eat :)
<humphreybc> any questions you have, just ask in #ubuntu-manual on irc.freenode.net
<humphreybc> Josh will start his session on translations in about 30 minutes
<humphreybc> have fun dutchie!
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Translations and how they work - Instructor: dutchie || Questions in #ubuntu-classroom-chat
<dutchie> OK, here we go again ;)
<dutchie> Hi everyone, and welcome to my talk on the translations system used by the Ubuntu Manual project.
<dutchie> My name is Josh Holland, and I go by the nick dutchie.
<dutchie> I've been involved in the Ubuntu Manual project since pretty much the beginning.
<dutchie> I run a fair bit of the backend stuff, including the IRC bot, the planet, and, of course, the translations.
<dutchie> What I'm going to cover today includes:
<dutchie> * How to contribute a translation
<dutchie> * A brief overview of the translation infrastructure
<dutchie> * How to build a translated version of the manual
<dutchie> If you've got a question, stick it in #ubuntu-classroom-chat with QUESTION: at the front and I'll answer it when appropriate.
<dutchie> I'll also pause for questions at the end of each section.
<dutchie> So, let's get started!
<dutchie> (It's 6 AM here, so if I stop making sense, tell me ;) )
<dutchie> [How to contribute a translation]
<dutchie> (ooh, sorry - no slides for me. Ones on translation won't really be that interesting, and you've got the links to look at)
<dutchie> This is easy! Just go to http://translations.launchpad.net/ubuntu-manual and click on the language you want to translate.
<dutchie> You will then see the Launchpad translations UI.
<dutchie> All you have to do now is enter your translations into the boxes
<dutchie> They will then be reviewed, and hopefully included in the final translation!
<dutchie> Any questions so far?
<dutchie> [The translation infrastructure]
<dutchie> The Ubuntu Manual and Launchpad use the GNU Gettext system of translations
<dutchie> This is centred around two types of file: .pot files and .po files.
<dutchie> .pot files are translation template files, and contain all of the strings that need translation
<dutchie> Ours is called ubuntu-manual.pot, and, along with all the .po files, lives in the po/ directory at the top of the source tree
<dutchie> You can see all of the translation files here: http://bazaar.launchpad.net/~ubuntu-manual/ubuntu-manual/main/files/head:/po/
<dutchie> The .po files are the ones which actually contain the translations
<dutchie> They are named after the language they translate, such as fr.po for the French translation, and en_GB.po for the British English one
<dutchie> More information about the format of .pot, .po and .mo (which we don't need) files is available from http://www.gnu.org/software/gettext/gettext.html
<dutchie> Essentially, a .po file contains a list of untranslated strings and translated strings next to each other, in a well-defined parsable format
<dutchie> The text is indexed by file and line number to make it easy to match up where it came from
<dutchie> GNU Gettext is mainly intended to translate software programs, rather than documentation
<dutchie> We therefore can't use it directly, becuase it is normally used as a software library
<dutchie> So, to translate a Python program for example, you'd do "import gettext", then pass every string that needs translating to a special function
<dutchie> Other languages supported by gettext (all major ones) work in much the same way
<dutchie> Instead, we use po4a, or po for anything (http://po4a.alioth.debian.org)
<dutchie> This is a set of Perl scripts that allow you to use the infrastructure built up around translating Gettext files for your project
<dutchie> There is a lot of infrastructure based on .po and .pot files
<dutchie> Rosetta (Launchpad's translation interface) is an excellent example, but there are other po editors, such as po mode in Emacs, and GUI ones like poedit
<dutchie> It supports manpages, Perl pod format, xml, sgml, TeX, plain text, ini and KernelHelp files
<dutchie> It can be run using individual commands analogous to msgmerge, xgettext and friends, but it is easier to use the po4a(1) command and a configuration file
<dutchie> We only need the TeX support, but as you can see, it can be used in a wide range of situations
<dutchie> Any questions on Gettext or po4a?
<dutchie> hmm
<dutchie> ClassBot: wake up
<dutchie>  < vdquynh> Question: I either translate directly in LP or I download the vi.po file to work with poedit. IS that OK or should I use po4a when offline?
<dutchie> You, as a translator, will never need to worry about po4a
<dutchie> That's a tool I use to generate and keep the po files up to date
<dutchie> We'd prefer it if you worked directly on Lauchpad
<dutchie> You'll see why in a moment when I go through updating the translations
<dutchie> But, if you like, you can use poedit on the files in the bzr tree and commit and push like that
<dutchie> No more questions?
<dutchie> [How the translations are updated]
<dutchie> I try to update the translations around every day.
<dutchie> However, I have a busy life and I don't always manage this, so be gentle if I forget ;)
<dutchie> There are two stages to updating the translations.
<dutchie> 1. Updating the translated files
<dutchie> (Pulling in the new translations from Launchpad)
<dutchie> 2. Updating the translation .pot file
<dutchie> (Changing the .pot file, and possibly the .po files, if any of the content has changed)
<dutchie> The translations done on Launchpad are exported into the lp:~jshholland/ubuntu-manual/manual-trans branch
<dutchie> (This is very clever and useful, a very handy Launchpad feature)
<dutchie> I merge this in, which inevitably results in conflicts. These are resolved by just using the copy from LP, and discarding any local changes.
<dutchie> This is the bit that gives Launchpad translations the "upper hand"
<dutchie> If someone translates the same bit on Launchpad as someone else in the bzr branch, the Launchpad version will be used
<dutchie> However, if it's unchanged, it will be picked up when Launchpad scans the branch (another awesomely cool feature)
<dutchie> Once I've done this, I commit the merge and run the following command:
<dutchie> $ po4a --no-translations --copyright-holder="The Ubuntu Manual Team" --package-name=ubuntu-manual --package-version=$(bzr version-info --custom --template={revno}) po4a.conf
<dutchie> (it's a big one :) )
<dutchie> This command updates the .pot file and .po files, without generating translated content, and sets appropriate values in the files.
<dutchie> As I said, I'm the only one who needs to worry about po4a
<dutchie> But, if you're interested, the po4a.conf control file is visible here: http://bazaar.launchpad.net/~ubuntu-manual/ubuntu-manual/main/annotate/head:/po4a.conf
<dutchie> It's very small
<dutchie> po4a works a lot of the details out for itself, which is quite handy
<dutchie> This is then committed and the whole lot is pushed up to Launchpad.
<dutchie> Launchpad then scans the branch, and imports the .po and .pot files to use as a basis for the translations done.
<dutchie> This means that any new translations done in the branch are imported back into Launchpad
<dutchie> (if they haven't been overwritten)
<dutchie> The cycle then repeats.
<dutchie> Any questions about how this all works?
<ClassBot> vdquynh asked: how much time between the start and end of process for any language?
<dutchie> Hard to say really
<dutchie> All of the languages have been open the same time
<dutchie> I'm sure that they've all got a different number of translators working on them
<dutchie> As of now, the translation into British English (yes, that has to be done) is complete
<dutchie> The rest are all at varying stages of completion, as you can see by going to http://translations.launchpad.net/ubuntu-manual and clicking "Show all languages"
<dutchie> That leads fairly nicely on to freezes
<dutchie> At the beginning, we had lots of content being written and edited
<dutchie> People would translate something, then a day or two later, the original would change, and it'd have to be translated again
<dutchie> This was quite a problem up to the alpha
<dutchie> Now, though, less of the content is being changed, but this problem hasn't gone away completely
<dutchie> So, at the beta, we intend to freeze all writing and editing
<dutchie> This would give the translators a chance to catch up with all of the content before final release
<dutchie> Questions on the freeze?
<ClassBot> vdquynh asked: When an original string has been translated and changes, is the translated string automatically dismissed or flagged in some way that the translator knows that he /she has to do it again?
<dutchie> po4a detects that the string has changed and updates the .pot and .po files
<dutchie> This means that the string has to be translated again
<dutchie> po4a keeps track of that sort of thing internally
<dutchie> Just to make this clear, you can do translations now, but there is a small chance they will be lost if the original string changes
<dutchie> Keep working from now until your language is done, then learn another language and do that one ;)
<dutchie> [How to build a translated version of the manual]
<dutchie> This bit was written when you didn't require Tex Live 2009 anyway
<dutchie> so ignore it for now :)
<dutchie> Thanks to some cool work from godbyk, our LaTeX guru, it's not too hard to see your translations in the manual.
<dutchie> Unfortunately, we've had to use the polyglossia LaTeX package to handle the translations.
<dutchie> This is only available with texlive 2009, which is only in the repos for Lucid (10.04).
<dutchie> So, if you're running Karmic (9.10), you have two choices:
<dutchie> 1. Upgrade to Lucid
<dutchie> 2. Download and install texlive 2009 directly from upstream
<dutchie> This set of instructions was taken from https://lists.launchpad.net/ubuntu-manual/msg00548.html (thanks godbyk)
<dutchie> The first part of this will only apply to people running Karmic (or earlier).
<dutchie> Step one is removing any texlive packages you've already got.
<dutchie> You can do this on the command line via "sudo apt-get remove texlive-*" or through Synaptic.
<dutchie> The next step is to download http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz, the install script for texlive
<dutchie> You can then unpack the tarball by "tar -xvvzf install-tl-unx.tar.gz" and change into the newly unpacked directory
<dutchie> Once in there, run "sudo ./install-tl". The defaults it selects are normally quite good, but you can remove the documentation packages for a smaller download (the full one is about 2.5G!)
<dutchie> This will take quite a while, so be patient.
<dutchie> Once this is done, change into the ubuntu-manual directory, and run pkgs/install-pkgs.sh script
<dutchie> That's the Karmic-specific stuff out of the way. Lucid folks can just install texlive-base.
<dutchie> It should hopefully find everything; if it doesn't, and you're on Lucid, it's safe to install the suggested ones
<dutchie> If you're on Karmic, however, something has gone wrong with the installation.
<dutchie> Drop into #ubuntu-manual and we'll try and help you out.
<dutchie> So now you've got all the texlive 2009 packages installed, you can build the manual.
<dutchie> OK, you can start listening again
<dutchie> This is really easy once you've got everything installed
<dutchie> This is easy: just type "make ubuntu-manual-LANG.pdf", where LANG is the language code (corresponding to one of the .po files in po/) you'd like to build.
<dutchie> (so, to build the French version, "make ubuntu-manual-fr.pdf")
<dutchie> All being well, the manual will now build, and you can see the fruits of your labour
<dutchie> You may need to install some font packages. The ones you need will be in the error message from LaTeX, and can be found in a package starting with ttf-
<dutchie> If you're having problems, ask godbyk. He should know what you need to do
<dutchie> Any questions on that?
<dutchie> That's pretty much all I have to say about translations.
<dutchie> I hope this has helped you to understand how the translations, and maybe do some translations for yourself!
<dutchie> Thanks a lot for coming along.
<dutchie> I've now got 20 minutes to answer any questions you've got left
<dutchie> I was obviously very comprehensive :)
<dutchie> OK, thanks everyone for coming
<dutchie> Next is IlyaHaykinson_ with a talk on Writing Style
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Writing style - Instructor: IlyaHaykinson || Questions in #ubuntu-classroom-chat
<IlyaHaykinson> hm, we need to give voice to ClassBot
<IlyaHaykinson> ok, folks, we'll start in 2 mins
<IlyaHaykinson> [SLIDE 1]
<IlyaHaykinson> You can also see the slides at http://www.slideshare.net/ilyah/writing-the-ubuntu-manual
<IlyaHaykinson> Alright. Welcome, folks.
<IlyaHaykinson> Agenda: [SLIDE 2]
<IlyaHaykinson> In this talk, we'll chat about how difficult it is actually to write a good manual
<IlyaHaykinson> We'll consider what kind of an audience we're writing for, and what that means to us when writing it.
<IlyaHaykinson> We'll discuss what our combined voice should be -- how should we relate to the reader?
<IlyaHaykinson> And we'll briefly chat about some desktop conventions that you should use when writing.
<IlyaHaykinson> Please feel free to ask questions, but I'll try to take them all at once in the breaks between sections.
<IlyaHaykinson> Writing a Manual: Challenges -- [SLIDE 3]
<IlyaHaykinson> There's a lot to be decided when writing a manual for an open project of the size of Ubuntu
<IlyaHaykinson> we need to figure out what we include -- and, more importantly, what we leave out.
<IlyaHaykinson> we've got to decide on grammar -- British? United States? International? what about non-English?
<IlyaHaykinson> we need to decide on the voice -- should we be humorous? serious? playful?
<IlyaHaykinson> we need to understand the audience that we hope will read the manual, and use that information to decide how to present the information.
<IlyaHaykinson> finally, some pratical limitations come up -- we cannot include 1000 screenshots (the file size will be too large, it will take too long to take screenshots, etc)
<IlyaHaykinson> so, we compromise on all of these points.
<IlyaHaykinson> for Content, we decided to cover only the core of the Ubuntu Desktop.
<IlyaHaykinson> for Style, we picked a relatively serious tone, and a grammar that is similar to the Ubuntu Docs team
<IlyaHaykinson> for our Audience, we decided to go after new computer users and people new to Ubuntu -- this meant that we did not dive very deep, but provided enough information to let people accomplish some key tasks in the simplest way.
<IlyaHaykinson> and, again, practical limitations guide us throughout.
<IlyaHaykinson> Writing Challenges: Other Sources -- [SLIDE 4]
<IlyaHaykinson> When writing a manual, we need to understand that almost everything that we write about has already been covered by documentation.
<IlyaHaykinson> Some of it is Ubuntu's own, some of it comes from the community.
<IlyaHaykinson> To the degree that we can, we need to both read and then if possible _copy_ the documentation.
<IlyaHaykinson> This copying is limited by fit -- some of the documentation will not work for us when copied.
<IlyaHaykinson> For example, Ubuntu's documentation is mainly oriented at specific tasks -- it rarely provides a high level overview to help a user get started and get the larger picture
<IlyaHaykinson> instead it dives directly into specific pages and screens to help answer one particular question.
<IlyaHaykinson> We can certainly use it to understand how something works, and can copy parts of it, but we cannot copy it in entirety -- it would not match our style or voice
<IlyaHaykinson> The GNOME project also has a lot of documentation. Their docs are actually well-created -- well written, organized in a logical way, etc.
<IlyaHaykinson> However, GNOME licenses using the GNU Free Documentation License, which is not compatible with the Creative Commons - Attribution - ShareAlike license that we are using.
<IlyaHaykinson> Thus, we can read the GNOME docs, but not use them directly in the manual.
<IlyaHaykinson> Finally, there's community documentation. Such great things like the ubuntuguide.org or any other fan pages
<IlyaHaykinson> or user guides
<IlyaHaykinson> Most of these are great, but most of these are also not perfect since they target experts, and not beginners
<IlyaHaykinson> We can read them and use them in our troubleshooting sections, but not really much else.
<IlyaHaykinson> Any questions before I move on?
<IlyaHaykinson> ok, moving on to Our Audience
<IlyaHaykinson> Next slide - Our Audience: New Users -- [SLIDE 5]
<IlyaHaykinson> We've decided to focus our writing on people who are new to Ubuntu
<IlyaHaykinson> this may also mean that they're new to computers in general
<IlyaHaykinson> either actually new users, or just very much beginners in their skill set
<IlyaHaykinson> For our writing, we assume that the reader knows how to use a GUI -- they know how to use the mouse, or the keyboard
<IlyaHaykinson> they also know that there are windows and buttons and scrollbars, and generally know how to use them to get around.
<IlyaHaykinson> They may not know that their monitor is a monitor -- lots of people call their monitor their "computer"
<IlyaHaykinson> i've even seen people call the actual desktop the "brain"
<IlyaHaykinson> they will not know what ethernet is, necessarily; we need to remind them about wifi.
<IlyaHaykinson> they will certainly not know anything more complex than that.
<IlyaHaykinson> Next slide - Our Audience: New Users -- [SLIDE 6]
<IlyaHaykinson> So, we need to be very careful when writing to not include any jargon in our presentation.
<IlyaHaykinson> We need to explain, in detail, everything that we mention.
<IlyaHaykinson> we can say "click the ____ button", assuming that the person will see the button
<IlyaHaykinson> and knows how to click
<IlyaHaykinson> but, for example, we need to say "Click-and-hold your mouse button at the edge of the window, and drag your mouse to resize the window"
<IlyaHaykinson> instead of assuming the person knows what to do.
<IlyaHaykinson> we need to define all terms; in a section on printing, we may want to say "Your printer may connect to your computer using a USB cable. Before starting, plug your printer into an available USB slot on your computer."
<IlyaHaykinson> because a user may not remember on their own
<IlyaHaykinson> We need to be very precise in our language -- need to know the terms for everything in the operating system.
<IlyaHaykinson> so that when we refer to a piece of the user interface, we are consistent with other documentation
<IlyaHaykinson> and consistent with ourselves
<IlyaHaykinson> I will cover some terms later, but there's a great guide for GNOME user interface terms at http://library.gnome.org/devel/gdp-style-guide/stable/gnome-glossary-desktop.html.en
<IlyaHaykinson> Most importantly, when writing for new users, we need to start with very simple things. We can move on to more advanced topics only after we've repeated the simple things again, and again, and again.
<IlyaHaykinson> For example, we may start with talking about "Click-and-hold ... to resize" at first.
<IlyaHaykinson> And by the end of a section, just say "resize" since we can assume the user has learned a bit already.
<IlyaHaykinson> Next slide - Our Audience: Eager to Learn -- [SLIDE 7]
<IlyaHaykinson> We are writing for people who picked up a manual.
<IlyaHaykinson> People who have either already installed, or interested in installing Ubuntu -- which is saying that they're a captured audience, in a way.
<IlyaHaykinson> They are somewhat task oriented in their day to day computing life -- they have no interest in learning the underlying ways things work in Linux or Ubuntu
<IlyaHaykinson> any more than they want to know how the Win32 API works, or that MacOS is based on Darwin.
<IlyaHaykinson> but they _do_ care to know how to make their printer print. or their scanner scan. or their presentation saved as PDF.
<IlyaHaykinson> because those are actually their goals.
<IlyaHaykinson> Since we are writing a manual, they may read the manual in fairly large chunks -- many pages at once -- instead of just as a reference guide where they use the index, jump to a page, read a tiny bit, and close it.
<IlyaHaykinson> Next slide - Our Audience: Eager to Learn -- [SLIDE 8]
<IlyaHaykinson> So, the recommendations are aligned with this eagerness to learn
<IlyaHaykinson> we need to keep a narrative that turns a novice into a knowledgeable user over time.
<IlyaHaykinson> As i mentioned, start simple -- progress to complex
<IlyaHaykinson> We need to think in terms of these user tasks -- title each section with a particular task, and cover only that one task.
<IlyaHaykinson> Don't just write how to do something -- make sure you have some indication _why_ someone would want to do something
<IlyaHaykinson> Use asides, callouts, and notes in the margins to keep the advanced users happy, too (godbyk's talk on LaTeX will explain how to do this, technically, in the manual)
<IlyaHaykinson> so if there's something that you think they _might_ want to know, after reading your manual, stick it in a margin note.
<IlyaHaykinson> and if it's advanced, and they probably do not _need_ to know it, mark it as advanced.
<IlyaHaykinson> Finally, do not patronize -- do not be condescending to the user.
<IlyaHaykinson> The user wants to get some work done.
<IlyaHaykinson> they do not need to be told something is "simple"
<IlyaHaykinson> it may not be simple for them, and  they'll assume you (the writer) is better than them
<IlyaHaykinson> and is taunting them with your betterness
<IlyaHaykinson> don't tell them to "just click on" something -- they may take a minute to find that something, and again will feel like you're saying their dumb if it took them a while to find it.
<IlyaHaykinson> in general, assume that you're giving a list of instructions on how to reach a particular physical address.
<IlyaHaykinson> you tell people "off the highway, third light, make a right; past the gas station, make a left. then, it's the second building on your right"
<IlyaHaykinson> that same fairly serious tone should be kept when talking to the user.
<IlyaHaykinson> Next slide: Our Audience: International -- [SLIDE 9]
<IlyaHaykinson> We are writing in English. But we've got a lot of translations (40+). Plus, even for people reading in English, some may not have it their native language
<IlyaHaykinson> Plus, not all humor or witty comments are universal.
<IlyaHaykinson> Next slide: Our Audience: International -- [SLIDE 10]
<IlyaHaykinson> So, we need to use _very_ simple language.
<IlyaHaykinson> Always use a simpler synonym for a word.
<IlyaHaykinson> Not "transform" but 'change'. Not "alphabetize" but "put in alphabetical order"
<IlyaHaykinson> Use simple phrases as much as possible. Shorter sentences are better.
<IlyaHaykinson> If you have lots of words in dependent clauses etc, it will make it hard to translate and understand.
<IlyaHaykinson> So use a period instead of a semicolon. List out steps in an enumerated list (1. click here. 2. click there. 3. enter some text. etc)
<IlyaHaykinson> Assume that you are speaking to an advanced English learner, basically.
<IlyaHaykinson> As a design decision, we're using American spelling and grammar for the manual. This is consistent with the Ubuntu documentation team and other Ubuntu/Canonical guidelines.
<IlyaHaykinson> Also, use short paragraphs. If a paragraph has more than 5 sentences, it's probably too long.
<IlyaHaykinson> Repeat yourself. So "You may want to use a calculator to help with a calculation. To use a calculator in Ubuntu, click ..."
<IlyaHaykinson> Saying this in two phrases helps solidify the concept, and prevents ambiguity.
<IlyaHaykinson> Any questions before moving on to Our Voice?
<IlyaHaykinson> Next slide: Our Voice: Confident -- [SLIDE 11]
<IlyaHaykinson> We are writing a manual, and we are the experts. Our readers are expecting us to be condident in our opinions.
<IlyaHaykinson> so, when writing, use language that says that you are condident in what you are saying.
<IlyaHaykinson> When giving opinions, state them as facts.
<IlyaHaykinson> "With Ubuntu, you can print, scan and email documents"
<IlyaHaykinson> no need to say "With Ubuntu, you might be able to ... if you have an internet connection and your drivers work"
<IlyaHaykinson> However, I suggest that you consider Ubuntu to not be perfect.
<IlyaHaykinson> when talking about windows opening, when giving instructions, I generally prefer saying "Ubuntu should open..." instead of "Ubuntu will open..."
<IlyaHaykinson> This way, if something doesn't work quite correctly, we are not lying.
<IlyaHaykinson> My personal guideline is that if something is certain to work, use "will". If there's a chance for failure (user clicks in the wrong place, or has a different configuration) use "should"
<IlyaHaykinson> Next slide: Our Voice: Direct and Calm -- [SLIDE 12]
<IlyaHaykinson> Write as if you're conversing with a reader, face to face. "You may want to use a calculator. To open the calculator, click..."
<IlyaHaykinson> or "If your email administrator advised you to use IMAP..."
<IlyaHaykinson> As part of being calm, avoid generating excitement for Ubuntu.
<IlyaHaykinson> we are writing a manual, not a marketing slick -- no need to use words like "best", "easiest", "simplest", "amazing" etc
<IlyaHaykinson> instead of "In ubuntu, it's easy to do X...." say "In Ubuntu, you can do X by...."
<IlyaHaykinson> Next slide: Our Voice: Slightly Opinionated -- [SLIDE 13]
<IlyaHaykinson> all that said, we are _SLIGHTLY_ opinionated. Slightly <------ this is an important word
<IlyaHaykinson> in the Linux world, there is always more than one way to do things. however, not in our manual.
<IlyaHaykinson> in our manual, there are only a few ways.
<IlyaHaykinson> First, we should recommend the _official_ graphical way to do something.
<IlyaHaykinson> Second, we may recommend any simple variation or common shortcut to doing this.
<IlyaHaykinson> But we stop there. We don't tell people the twenty ways to install software -- just the Software Center and Synaptic.
<IlyaHaykinson> This is because we have a bias towards using the GUI, and being simple.
<IlyaHaykinson> We also try to steer people away from bad decisions, lightly. So "You may want to pick a long password if you are worried about security."
<IlyaHaykinson> but can also allow them the choice to make worse decisions, if there's a good reason. "If you are the only one who will be using your computer, you can decide to automatically log in without entering your password"
<IlyaHaykinson> Next slide: Our Voice: Aligned with Users -- [SLIDE 14]
<IlyaHaykinson> When writing sections, consider how users will want to use what you are describing.
<IlyaHaykinson> then, name the section with a gerund form of a verb.
<IlyaHaykinson> "Using the calculator" or "Reading your email", or "Scanning images"
<IlyaHaykinson> setting a topic like that also helps make sure you limit the section to just one idea.
<IlyaHaykinson> In each section, mention _why_ a user may want to do that.
<IlyaHaykinson> for example
<IlyaHaykinson> "If you have a photograph that you want to send over email or post online, you may want to scan it into your computer. To scan images, you will need..."
<IlyaHaykinson> a quick intro to a section can provide the _why_ a user may want to do something that is vital to establishing context fo rthe user.
<IlyaHaykinson> if you just say "to scan images, you will need..." -- you are not letting a user know what possible reason they will ever have that they should read the following paragraph.
<IlyaHaykinson> <- Any questions before I move on to Conventions?
<IlyaHaykinson> Next slide: Conventions: Attribution -- [SLIDE 15]
<IlyaHaykinson> We have a few conventions for the manual. The main one is to write it about Ubuntu, and not about Linux.
<IlyaHaykinson> yes, we mention in an early chapter that Ubuntu is based on Linux.
<IlyaHaykinson> but the rest of actions should be attributed to Ubuntu.
<IlyaHaykinson> In general, people will perceive the login process, the desktop, Nautilus, panels, window manager etc as being "Ubuntu"
<IlyaHaykinson> utility applications should also be "Ubuntu" for purposes of this manual.
<IlyaHaykinson> bigger application packages (Ephiphany, Totem, Open Office) should be considered big enough to warrant their own attribution.
<IlyaHaykinson> er, Empathy :)
<IlyaHaykinson> so for example, "The Ubuntu calculator lets you...", but "Open Office lets you..."
<IlyaHaykinson> Also, always ensure active voice.
<IlyaHaykinson> If you find yourself writing "It is possible to...", or "...will be opened by..." then chances are you are writing passively
<IlyaHaykinson> when providing steps to accomplish some task, write imperatively. "Click the OK button", "Choose File, then Save to save a document"
<IlyaHaykinson> but in general, to use an active voice, write "X will do Y" -- "Ubuntu will open a window", "You can click the OK button."
<IlyaHaykinson> Next Slide - [SLIDE 16]
<IlyaHaykinson> Here we'll briefly run through some common GUI terms.
<IlyaHaykinson> button and check box -- please note that you click OK, click Cancel, click Forward, but Click _on_ other buttons (Click on Add, click on Remove Entry, etc)
<IlyaHaykinson> check box is two words, and you either _choose_ and _option_, or _select_ / _deselect_ a check box.
<IlyaHaykinson> I prefer "option", when possible.
<IlyaHaykinson> Next Slide - [SLIDE 17]
<IlyaHaykinson> nothing special here, please just review the list for proper usage
<IlyaHaykinson> Next Slide - [SLIDE 18]
<IlyaHaykinson> please note that double-click (and right-click and middle-click and triple-click) use a dash between the words
<IlyaHaykinson> and you always double click _on_ something
<IlyaHaykinson> you never drag and drop, but you drag X to Y.
<IlyaHaykinson> Next Slide - [SLIDE 19]
<IlyaHaykinson> A "field" is a generic term for text boxes, and other input widgets
<IlyaHaykinson> for list boxes, I prefer to _select_ from them, but you can _choose_ as well.
<IlyaHaykinson> note that the top menubar in Ubuntu is called Main Menu
<IlyaHaykinson> also, that a menubar is one word. as is scrollbar, statusbar, titlebar, toolbar
<IlyaHaykinson> you Choose from a menu
<IlyaHaykinson> [SLIDE 20]
<IlyaHaykinson> note the difference between login and log in -- login is a noun or adjective ("remember your login", "start the login process") but log in is the verb -- "please log in to Ubuntu"
<IlyaHaykinson> same with log out, shut down, etc.
<IlyaHaykinson> for radio button widgets, please use "option"
<IlyaHaykinson> Last Slide - [SLIDE 21]
<IlyaHaykinson> note that you click _on_ a tab
<IlyaHaykinson> and that you _use_ a text box to _specify_ -- however _enter_ something in the /name/ field is better still
<IlyaHaykinson> <<-- This concludes my presentation. Any questions?
<IlyaHaykinson> Please see the terms document -- http://library.gnome.org/devel/gdp-style-guide/stable/gnome-glossary-desktop.html.en -- for more info
<IlyaHaykinson> Or the list of user actions in GNOME -- http://library.gnome.org/devel/gdp-style-guide/stable/gnome-glossary-user-actions.html.en -- for action names
<IlyaHaykinson> Finally, for more tips on writing for an international audience, see http://tc.eserver.org/21590.html
<IlyaHaykinson> Alright, thank you for attending! next session in 9 minutes!
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: The project and social media - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<humphreybc> so what's the attendance like?
<humphreybc> (join #ubuntu-classroom-chat to talk)
<humphreybc> ill just wait a couple more minutes so i can finish mt icecream :P
<humphreybc> wont be long :P
<humphreybc> [SLIDE 1]
<humphreybc> http://www.facebook.com/pages/The-Ubuntu-Manual/266794861575?ref=ts
<humphreybc> how many people are actually here? could those that are here please say so in #ubuntu-classroom-chat
<humphreybc> ok cool, sorry about the delay ive almost finished my ice cream :D
<humphreybc> okay so we'll make a start
<humphreybc> sorry about the delay, i've got my hand back now instead of holding a magnum
<humphreybc> excuse me if i don't really know what i'm doing, i've been up since 3am this morning (it's now 9:15pm)
<humphreybc> also i don't really have a plan for this session :)
<humphreybc> okay so
<humphreybc> social media in ubuntu projects
<humphreybc> using web 2.0 to our advantage
<humphreybc> why social media is important to us:
<humphreybc> [SLIDE 2]
<humphreybc> social media increases publicity about a project. this is good because it not only encourages more contributors to help, but it also makes sure more people actually download our end product - which is want we want!
<humphreybc> media attention/blog posts inspire our team to work harder because they feel they are important
<humphreybc> you are much more likely to feel good about something if your contributions are rewarded with publicity or commendation
<humphreybc> and you are much more likely to like to be associated with a project that is visible and popular among the community
<humphreybc> let me take some examples
<humphreybc> the ubuntu manual project, and the boot team working on the new plymouth boot for Lucid
<humphreybc> the boot team and plymouth are probably more important, more technical and more interesting than UMP
<humphreybc> but we never hear anything about them, apart from the odd update
<humphreybc> but then there's UMP, which is younger than the boot team and probably not as important or as interesting or as fundamental to the operation of Ubuntu
<humphreybc> but because we have generated a huge amount of hype and publicity, we've had hundreds of contributors come forward willing to help, and we've been able to do 4x as much stuff as I ever envisioned us doing
<humphreybc> I originally planned this manual to be 50 pages long, a few screenshots, written in open office and only available in english
<humphreybc> now we've got this huge project, 250+ contributors, available in 40+ languages, 200 pages long, thousands of localized screenshots and we're even writing our own python program for it!
<humphreybc> now none of this would have been possible if it wasn't for the extra contributors we get from:
<humphreybc> blog posts
<humphreybc> planet ubuntu posts
<humphreybc> facebook page
<humphreybc> twitter page
<humphreybc> identi.ca page
<humphreybc> Planet Ubuntu Manual - http://planet.interesting.co.nz
<humphreybc> Running events like this
<humphreybc> Ubuntu Forums survey
<humphreybc> so, what i'm trying to say, is that with social media, you can create more publicity and attention, with more attention you get more people, with more people you not only get more help but you also get more ideas and feedback - which in turn creates a better overall product.
<humphreybc> Not enough Ubuntu teams, or open source projects in general, advertise enough.
<humphreybc> Loco teams should have facebook pages, the Boot team should have facebook pages and regular events to inspire people to help
<humphreybc> also, our team works harder because they have an expectation to live up to now
<humphreybc> if there wasn't hundreds of people commenting on blog posts saying "i can't wait for this manual!" "Ubuntu really needs this!" etc, then we wouldn't be as inspired to do a good job
<humphreybc> [SLIDE 3]
<humphreybc> I'll just show  you our facebook/twitter and identi.ca pages real quickly so you can get an idea of how we use them
<humphreybc> also, join them! spread them to your friends!
<humphreybc> http://www.facebook.com/pages/The-Ubuntu-Manual/266794861575?ref=ts
<humphreybc> I like facebook the most. Why? Because it's suited to projects! It has the ability to schedule events where people can RSVP to, you can upload photos for people to look at, and you can post twitter style updates to keep everyone informed
<humphreybc> oh yeah, that's another thing
<humphreybc> transparency in a project is important
<humphreybc> we're lucky in the open source world because everything is transparent anyway, but only if you do some digging
<humphreybc> you could quite easily find out what the boot team are up to every day, and what they've done this day etc
<humphreybc> but you'd have to do the looking yourself
<humphreybc> why not make it easier by posting updates and keeping the community in the loop of your project?
<humphreybc> by promoting transparency and keeping everyone informed, we not only hold interest, but we also show that the community and people "outside the team" are valued and important, which they are
<humphreybc> we love feedback, we love criticism and I try to make that as clear as possible
<humphreybc> okay, twitter
<humphreybc> http://twitter.com/TheUbuntuManual
<humphreybc> Twitter is, as most of you know, roughly the same as facebook but without the images and events and extra stuff
<humphreybc> it's still popular though, of course. we have 119 followers!
<humphreybc> and we have 177 in facebook!
<humphreybc> so wait a second, let me get this straight
<humphreybc> we're a team of people writing a book for an operating system that has a 1% market share
<humphreybc> yet we have almost 200 fans on our facebook page?
<humphreybc> another thing that projects need to do is run events like this
<humphreybc> they achieve a lot of things
<humphreybc> they give blogs content and news to write articles on, people read these articles and remember the project
<humphreybc> they realise it isn't dead (which happens in the FLOSS world a lot)
<humphreybc> these events also attract more contributors
<humphreybc> and they inform people, they show that we're transparent and we value YOUR opinion
<humphreybc> we've set all this up for you to come along and tell us what you think
<humphreybc> jazz asked: will these lessons or classroom be posted so i can catch  up on what i've missed?
<humphreybc> yes, they're all available on http://irclogs.ubuntu.com
<humphreybc> I'll put up the exact logs on the 48 hours wiki page tomorrow :)
<humphreybc> also, the slides are available in our bzr branch under "48hours" (tomorrow i'll change that folder to "help")
<humphreybc> https://wiki.ubuntu.com/ubuntu-manual/48hours
<humphreybc> So, how can you incorporate all this into your project, or your loco team?
<humphreybc> easy, you just have to:
<humphreybc> generate hype by creating facebook/twitter accounts
<humphreybc> email blog sites and tell them about your project or team
<humphreybc> email ubuntu members with a blog on Planet Ubuntu and ask them to give you some hangtime on the planet
<humphreybc> run an event to explain what your project or team does
<humphreybc> if you're a loco team, attach yourself to a bigger project and ride off the wave that they're creating
<humphreybc> and, be unique, be ambitious, be creative
<humphreybc> be different
<humphreybc> oh and read jono bacons book "The Art of Community" - it's available free www.artofcommunityonline.org/
<humphreybc> [SLIDE 4]
<humphreybc> So, how can you help us?
<humphreybc> you can help the project in a tonne of ways, from programming to artwork, to writing a chapter or editing one etc etc
<humphreybc> but if you don't feel confident in those roles, we are still looking for someone to help me maintain the facebook and twitter and identi.ca accounts
<humphreybc> the logo/screenshots need to be updated on those accounts, and we need constant tweets and updates to keep the hype reel rolling
<humphreybc> but if you don't feel like helping the project directly, you can also do it indirectly
<humphreybc> if you think our project is cool, tell your friends or your loco team
<humphreybc> or, if you have some people who fit into our target audience (parents, family members, spouse etc), give them the current Ubuntu Manual PDF and ask them to read a bit. Ask them if it makes sense, if it's easy to follow
<humphreybc> ask them how it could be better
<humphreybc> and then email their comments to our mailing list or come into #ubuntu-manual on irc.freenode.net and tell us what they said!
<humphreybc> sorry about the talk being a bit jumbled guys
<humphreybc> i'm going to reorganize it and write it down properly, i'll make some better slides and then i might make a youtube video of it
<humphreybc> but generalize it more for projects in general, not just UMP
<humphreybc> okay, questions? :)
<humphreybc> jazz asked: now these projects are they all volunteer, are there any paying gigs (as in career)
<humphreybc> that's a good question.
<humphreybc> the FOSS world runs on volunteering, but there are companies like Canonical and Novell who employ notable people from the community
<humphreybc> there's no guarantee you'll be employed by them for working on ubuntu
<humphreybc> it's not meant to be an incentive, but it's a possibility
<humphreybc> I do know that if you're in IT, employers like seeing open source experience
<humphreybc> be it volunteer or paid, all this stuff is quite acceptable as experience for your CV/resume.
<humphreybc> yeah, it depends what you want to get out of it
<humphreybc> I think if you're just doing it to get a job in the end, you'll never succeed.
<humphreybc> You need to be genuinely interested in helping out the community, working towards a goal. In our case, or my case, I want to see Ubuntu's market share increase because I think it deserves to be used in the mainstream.
<humphreybc> One of Ubuntu's biggest flaws is lack of education
<humphreybc> the operating system itself is great, but it's ill-educated users that don't know about it or how to use it that's not helping our cause
<humphreybc> also the fact that people have been brought up on windows/mac and they're used to that. We need to make it easier for them to switch
<humphreybc> But in the end, the average consumer is always wanting to get more "bang for their buck"
<humphreybc> so if you have a $400 operating system in one hand, and a $0 one in your other hand that does all the same things as the $400 one, why wouldn't you choose the free one?
<humphreybc> the problem we have, is that people have one eye blinded, so they can't see the free operating system in one hand
<humphreybc> we need to open that eye and explain to them why it's better
<humphreybc> and we need to help them adjust. it's not their fault that Microsoft has a monopoly and has forced us Windows all through school and in our workplace
<humphreybc> but that's what they are used to because this is exactly what Microsoft has done
<humphreybc> so we need to teach them how to convert easily
<humphreybc> and that's what we're trying to do with UMP
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: LaTeX for authors and translators - Instructor: godbyk || Questions in #ubuntu-classroom-chat
<godbyk> [SLIDE 1] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/00.html
<godbyk> Hello, everyone.
<godbyk> This talk will cover the basics of LaTeX: what you'll need to know as an author, editor, or translator.
<godbyk> You can get handouts of this talk here: http://kevin.godby.org/ubuntu-manual/talks/latex-handout.pdf
<godbyk> [SLIDE 2] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/01.html
<godbyk> In this talk, we'll cover a basic overview of how the Ubuntu Manual project uses LaTeX.
<godbyk> [SLIDE 3] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/02.html
<godbyk> By this point, I'll assume that everyone knows the idea behind the Ubuntu Manual Project.
<godbyk> We're aiming to produce a manual for beginning users in a multitude of languages.
<godbyk> One of the most important tools we use to accomplish this is LaTeX.
<godbyk> [SLIDE 4] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/03.html
<godbyk> LaTeX has been around for over 20 years and it employs an underlying typesetting engine (TeX) that has been around for over 30 years.
<godbyk> LaTeX code is similar to HTML in that you can think of it as a markup language.
<godbyk> The .tex files contain plain text -- all the word you want to appear in the PDF -- plus some markup that tells the typesetting program how to format the text and where it goes on the page.
<godbyk> Unlike HTML, though, TeX is a full programming language.  Luckily for you, most of the programming work has already been done, so you won't have to worry about that side of things.
<godbyk> [SLIDE 5] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/04.html
<godbyk> All of the code is stored in .tex files.
<godbyk> These files are just text files and can be read and edited using your favorite text editor.
<godbyk> There are also some more advanced editors designed just for LaTeX (including Kile and TeXMaker).  Most editors have plugins to help with LaTeX code.
<godbyk> For most of the code you'll be using with our manual, however, a plain text editor will serve just fine.
<godbyk> LaTeX commands begin with a backslash (\).
<godbyk> Some LaTeX commands take no arguments (like the \dash command we'll see later},
<godbyk> while others take 1 or more arguments.
<godbyk> An example of a command and its argument is show on this slide: the \textbf command.
<godbyk> The \textbf command takes a single argument: the test that is should set in bold-faced type.
<godbyk> [SLIDE 6] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/05.html
<godbyk> In editing this manual, we'll avoid using the low-level bold, italics, etc. commands and instead use semantic markup.
<godbyk> Semantic markup lets us create new commands that can apply styles consistently across the entire manual.
<godbyk> [SLIDE 7] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/06.html
<godbyk> For instance, instead of putting each menu name in bold, we've created a \menu command.
<godbyk> If we were to decide later that we wanted menu names to appear in italics instead, we just have to edit one line of code in the style sheet instead of searching the entire manual for any menu names.
<godbyk> [SLIDE 8] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/07.html
<godbyk> While you can generally get away with simple typing whatever you like into the .tex file and having LaTeX make a nice-looking PDF from it, there are a few special characters you should be aware of.
<godbyk> The most common "special character" is the quotation mark.
<godbyk> LaTeX knows about quotation marks -- it uses what are sometimes called "smart quotes" or "curly quotes".
<godbyk> That is, the opening and closing quotation marks do not appear the same in the final document.
<godbyk> When you're editing the .tex files, opening quotation marks are entered using two "backticks" or grave accents.
<godbyk> The closing quotation marks are entered using two apostrophes.
<godbyk> So quoted material looks ``like this''.
<godbyk> Another special character you'll find in the manual is the dash.
<godbyk> We use the dash to interrupt a sentence -- Hi, mom! -- or to help place emphasis on an important point.
<godbyk> When we started writing the manual, we manually entered the dashes using three hyphens --- like this.
<godbyk> But I've recently written a \dash command (which that no arguments) to do this for us.
<godbyk> Using the \dash command allows us to use the proper dashes depending on the language.
<godbyk> In US English, we use an em dash---like this---surrounded by no spaces.
<godbyk> However, in the UK and elsewhere, they use an en dash -- like this -- surrounded by a small space.
<godbyk> As you're editing the manual, if you see an em dash written as ---, change it to \dash.
<godbyk> [SLIDE 9] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/08.html
<godbyk> There are another few characters that LaTeX considers special.  These characters are normally used in LaTeX syntax.
<godbyk> If you want one of these characters to appear as-is in the final PDF, put a backslash (\) in front of that character.
<godbyk> If you want a backslash character itself to appear, you will need to use the \textbackslash command.
<godbyk> (The \\ command actually inserts a line break instead of printing a backslash as you might expect.)
<godbyk> [SLIDE 10] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/09.html
<godbyk> The document structure of the manual has been fairly well established by this point.
<godbyk> However, I wanted to mention these commands briefly so you'll know what they mean when you see them.
<godbyk> Each of these commands starts a new part/chapter/section of the document.
<godbyk> They each take a single argument -- the name of the part/chapter/section.
<godbyk> The name is automatically formatted appropriately and put into the PDF.
<godbyk> These commands also add the entries to the table of contents automatically.
<godbyk> [SLIDE 11] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/10.html
<godbyk> LaTeX doesn't really care if you want to write a paragraph on multiple lines.  It will piece them back together into a paragraph for you.
<godbyk> To tell LaTeX that you want to start a new paragraph, just leave a blank between paragraphs.
<godbyk> We use short notes in the margin of the manual to tell the reader where to find more information about a topic, either online or in another part of the manual.
<godbyk> To create these short notes, use the \marginnote command.
<godbyk> Just tell the \marginnote command what text you'd like it to place in the margin and it'll take care of t for you.  It's magic!
<godbyk> [SLIDE 12] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/11.html
<godbyk> One more special character that you should take note of: the percent sign (%).
<godbyk> The percent sign starts a comment.
<godbyk> LaTeX will ignore the percent sign and everything on the line after it.
<godbyk> This is useful for making notes to yourself or another editor.  TODOs or FIXMEs, for instance.
<godbyk> If you want a percent sign to appear in the PDF, however, you'll have to precede it with a backslash character.
<godbyk> [SLIDE 13] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/12.html
<godbyk> When we're providing instructions for the readers, we reference a lot of GUI elements: menu, buttons, windows, checkboxes, etc.
<godbyk> Each of these elements has its own command to help keep their appearance consistent throughout the manual.
<godbyk> The \menu command is used to display menu names and menu items.
<godbyk> To separate menu items, use the \then command.
<godbyk> As you can see, writing \menu{Applications \then Accessories\then Calculator} will produce the text "Applications > Accessories > Calculator".
<godbyk> The \menu command used to be named the \nav command.
<godbyk> If you encounter the \nav command while editing the manual, please update it to use the \menu command instead.
<godbyk> Similarly, there was a \menuitem command.  This should also be updated to \menu.
<ClassBot> vdquynh asked: Is the blank space before "\then" optional or not?
<godbyk> vdquynh: The space is optional, yes.
<godbyk> The \then command will try to remove any extra space around it before printing the arrow.
<godbyk> Are there any other questions about the \menu or \then commands?
<godbyk> [SLIDE 14] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/13.html
<godbyk> Here is a list of the other GUI element commands we have.
<godbyk> One other outdated command is the \option command. This should be changed to the \checkbox command if you see it.
<godbyk> Are there any questions about any of these commands, what they refer to, or when they should be used?
<godbyk> [SLIDE 15] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/14.html
<godbyk> In the second part of the manual -- the advanced part -- we introduce a few useful terminal commands.
<godbyk> To display the command prompt, user input, and terminal output, we have a special environment that wraps around these commands.
<godbyk> The terminal environment is started with the command \begin{terminal} and finished with the command \end{terminal}.
<ClassBot> vdquynh asked: Could you put somewhere the list of commands to be replaced? like \option should be replaced by \checkbox, etc. ?
<godbyk> vdquynh: Yes, I will compile a list soon and post it to the mailing list.
<godbyk> Inside the terminal environment, all of the text is printed in a monospaced font.
<godbyk> The \prompt command simply prints a user-level bash prompt ($).
<godbyk> For printing root prompts (#), you can use the \rootprompt command.
<godbyk> Any time the user is typing something into a terminal, you should put that text inside a \userinput command.
<godbyk> The terminal output can by typed like normal text.
<godbyk> Are there any questions about the terminal environment or related commands?
<godbyk> [SLIDE 16] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/15.html
<godbyk> There are two different types of lists that we use in the manual: numbered lists and bulleted lists.
<godbyk> The only difference (in the code) between the two lists is their names.
<godbyk> The bulleted list is called 'itemize', and the numbered list is called 'enumerate'.
<godbyk> You start and end a list with the \begin and \end commands as shown.
<godbyk> Each item in the list starts with the \item command.
<godbyk> Are there any questions about the list environments?
<godbyk> [SLIDE 17] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/16.html
<ClassBot> vdquynh asked: is there a limit in the number of characters for any \item of the list?
<godbyk> vdquynh: There is no set limit; you can ramble on for as long as you like.
<godbyk> There are some practical considerations that may interfere if you're typing a novel as one list item, however. :-)
<ClassBot> dvd asked: can you control the first number in the list?
<godbyk> dvd: You can, if necessary.  Do you have a specific instance in mind where you need to do this?
<ClassBot> dvd asked: where the list is broken with a paragraph then continued
<godbyk> Gotcha.  It will depend on the reason for stopping in the middle of the list.  If you encounter a situation where you'd like to do this, find me on IRC in #ubuntu-manual or email the list and I can help you out.
<godbyk> Similar to HTML, we can include hyperlinks in the PDF.
<godbyk> We have a couple commands that help cross-reference other chapters and sections in the manual.
<godbyk> To cross-reference a chapter, use the \chaplink command.
<godbyk> To cross-reference a section, use the \seclink command.
<godbyk> Each of these commands takes a single argument: the chapter/section label.
<godbyk> To find the label for a specific chapter or section, open the .tex file containing that chapter/section.
<godbyk> Immediately after the \chapter or \section command, you will see a \label command.
<godbyk> The argument to the label command is the same argument you'll use with the \chaplink and \seclink commands.
<godbyk> All of the chapters have been assigned labels already.
<godbyk> Only a few of the sections have.
<godbyk> If the section you want to link to doesn't already have a label, you can create one.
<godbyk> Right after the \section{Why Linux Is Awesome} command, add a new command: \label{sec:why-linux-is-awesome}
<godbyk> The style we use to create the labels is to prefix the label with "ch:" for chapters and "sec:" for sections.
<godbyk> Then follow that prefix (no spaces!) with a short version of the chapter/section names.
<godbyk> Each 'word' should be separated by a hyphen.
<ClassBot> vdquynh asked: I'm a bit confused here : in "\chaplink{ch:installation}" where is the "\label" command ?
<godbyk> vdquynh: The \label command appears after the \chapter command in the installation.tex file.
<godbyk> So the \label command is telling LaTeX, "Hey, call this chapter ch:installation."
<godbyk> Then the \chaplink command is used as \chaplink{ch:installation} to refer to the installation chapter.
<godbyk> Are there any other questions on \label, \chaplink, \seclink, or cross-referencing?
<godbyk> [SLIDE 18] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/17.html
<godbyk> A few quick notes for any translators in the crowd.
<godbyk> When you're translating the text, make sure that you do *not* translate the LaTeX commands themselves.
<godbyk> If the word starts with a backslash (\), it should remain as-is.
<godbyk> Most of the arguments of the commands should be translated, however.
<godbyk> One exception to this rule is that you should *not* translate the labels -- that is, don't translate the arguments to the \chaplink, \seclink, \ref, or \label commands.
<godbyk> [SLIDE 19] http://kevin.godby.org/ubuntu-manual/talks/latex-slides/18.html
<godbyk> If you're translating it to a new language, send an email to the mailing list, please.
<godbyk> It gives me a heads up so I can be sure that your language is supported and can be compiled.
<godbyk> Are there any other questions about LaTeX?
<ClassBot> vdquynh asked: I think not all fonts are supportive of every foreign language in Unicode ? Example: I often see horrible fonts used for Vietnamese in the liveCD
<godbyk> vdquynh: That's definitely true.
<godbyk> We're hand-selected each font on a per-language basis.
<godbyk> That way we can use the best fonts for that particular language.
<godbyk> If you have suggestions on good fonts to use for the language you're translating to, please email them to me or hit me up in #ubuntu-manual.
<ClassBot> dvd asked: How do you see the output of what you are doing (never used latex before)
<godbyk> dvd: Good question!
<godbyk> If you want to see the English version of the manual, you can just run 'make' and it will generate a PDF called main.pdf.
<godbyk> If you want to see a translated version of the manual, run "make ubuntu-manual-LANG.pdf"
<godbyk> where LANG is the language code for your language.
<godbyk> (The language codes are listed in the po/ directory in our repository.)
<godbyk> To get started with running LaTeX, check out the ubuntu-manual code from the repository, then go into the pkgs/ directory and run the install-pkgs.sh script from the terminal.
<godbyk> This script will check to make sure you have the proper version of LaTeX installed along with all the required Ubuntu packages (mostly fonts) and LaTeX packages.
<godbyk> Are there any other LaTeX questions?
<ClassBot> dvd asked: what about just installing latex from the repositories?
<godbyk> dvd: Unfortunately, the packages in the 9.10 repositories are too old what what we need.
<godbyk> The packages in the Lucid repositories may be new enough -- I haven't tested them yet.
<godbyk> Installation instructions for LaTeX are on the wiki here: https://wiki.ubuntu.com/ubuntu-manual/Prerequisites
<godbyk> Are there any other questions?
<godbyk> If you come up with questions later (or run into problems), you can find me on IRC in the #ubuntu-manual channel.
<godbyk> You can also email the ubuntu-manual mailing list.
<godbyk> I will try to keep the handout up-to-date and also keep the install-pkgs.sh script updated (in case we require more fonts/packages in the future).
<godbyk> If there are no other questions, humphreybc will be with you shortly to discuss how the Ubuntu Manual Project employs Launchpad.
<ClassBot> vdquynh asked: Can we use the Texlive 2009 step by step installation described in prerquistes for Karmic ?
<godbyk> vdquynh: Yes, you sure can.
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Using Launchpad to manage the project - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
<godbyk> humphreybc is going to pass out and beg off his final talk.
<godbyk> If you missed it the first time around, you can read a transcript of the presentation here: http://irclogs.ubuntu.com/2010/02/22/%23ubuntu-classroom.html
<godbyk> You can grab a copy of his slides here: http://kevin.godby.org/ubuntu-manual/talks/launchpad.pdf
<godbyk> If you have any questions, you can email the Ubuntu Manual Project at ubuntu-manual@lists.launchpad.net
<godbyk> [SLIDE 1]
<godbyk> https://wiki.ubuntu.com/ubuntu-manual
<godbyk> humphreybc is going to pass out and beg off his final talk.
<godbyk> If you missed it the first time around, you can read a transcript of the presentation here: http://irclogs.ubuntu.com/2010/02/22/%23ubuntu-classroom.html
<godbyk> You can grab a copy of his slides here: http://kevin.godby.org/ubuntu-manual/talks/launchpad.pdf
<godbyk> If you have any questions, you can email the Ubuntu Manual Project at ubuntu-manual@lists.launchpad.net
<godbyk> humphreybc is going to pass out and beg off his final talk.
<godbyk> If you missed it the first time around, you can read a transcript of the presentation here: http://irclogs.ubuntu.com/2010/02/22/%23ubuntu-classroom.html
<godbyk> You can grab a copy of his slides here: http://kevin.godby.org/ubuntu-manual/talks/launchpad.pdf
<godbyk> If you have any questions, you can email the Ubuntu Manual Project at ubuntu-manual@lists.launchpad.net
* 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 || Event: 48 Hours of Ubuntu Manual Learning - Current Session: Finshing comments - Instructor: humphreybc || Questions in #ubuntu-classroom-chat
* 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
* 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 || Event: Learning Django - Current Session: Learning Django - Day 1 - Instructor: mhall119|work || Questions in #ubuntu-classroom-chat
<mhall119|work> good afternoon everyone
<mhall119|work> can I see a show of hands for who's listing?
<mhall119|work> going to give people a few minutes to arrive
<mhall119|work> in the mean time, I'll go over what this series of classes is going to be
<mhall119|work> there will be 4 session, 1 hour each over 4 days
<mhall119|work> the topics to be covered on each day can be found here: https://wiki.ubuntu.com/mhall119/classes/LearningDjango
<mhall119|work> it is meant to get you to the point where you have a working, functional Django application that you can continue to work on after this course is done
<mhall119|work> I will be taking a different approach from some other classes
<mhall119|work> we won't be writing a dummy program
<mhall119|work> nor will we be looking at an existing program
<mhall119|work> rather, we will be building a useful project that has the potential for continued development after the end of this class
<mhall119|work> and I hope that some of you will be a part of that continued development
<mhall119|work> specifically, we will be making a web application that will schedule session here in #ubuntu-classroom, so poor cjohnston won't have to spend so much time in wiki syntax ;)
<mhall119|work> are there any questions about the course or what we're going to cover
<mhall119|work> ?
<mhall119|work> Oh, I should mention, we are using the new Classbot https://wiki.ubuntu.com/Classroom/ClassBot
<mhall119|work> so if you start you question with "question: <text>", it'll automatically feed them to me
<ClassBot> cjohnston asked: what is the timing schedule for the course?
<mhall119|work> I think we are scheduled for 1500 UTC to 1600 UTC today through Friday
<mhall119|work> cjohnston: is that correct?
<cjohnston> 1800 UTC
<mhall119|work> any other questions?
<mhall119|work> ok, moving on then
<mhall119|work> What is Django?
<mhall119|work> Django is a web application framework for Python
<mhall119|work> it provides a lifecycle for HTTP request processing
<mhall119|work> it also provides a very large collection of classes and libraries for making it easy to write web-based applications
<mhall119|work> as well as some of the best object-relational mapping I've used
<mhall119|work> combined with python, it makes it very easy to start writing an application, as well as maintaining and enhancing them
<mhall119|work> sorry, yes, 1800-1900 UTC
<mhall119|work> Django follows a model-view-controller style, which we will see a little of today and more in the following days
<mhall119|work> so, where can you get Django?
<mhall119|work> well, if you're lucky enough to be running Ubuntu, you can apt-get install python-django
<mhall119|work> otherwise you can download it from here: http://www.djangoproject.com/download/
<mhall119|work> again, if you're lucky enough to be running Ubuntu, that's all you need to do, it will be installed in your python path automatically
<mhall119|work> if not, you will need to run the setup.py as instructed in the docs
<mhall119|work> I'm going to assume you all are running Ubuntu, or at least some distro that makes it easy to get Django, so I won't go into the manual setup
<mhall119|work> if you're curious about where django is installed run this: python -c "import django; print django.__file__"
<mhall119|work> if you're ever curious about how Django does something, the source is right there for you to inspect
<mhall119|work> any questions before we start creating our project?
<mhall119|work> for time, I've created a bzr repository that will walk through everything we're going to discuss
<mhall119|work> I'll give the commands you would use, but you don't need them this time around
<mhall119|work> okay, so the first thing you would do for a django project is "django-admin startproject $projectname"
<mhall119|work> for our example, I ran "django-admin startproject classroom_scheduler"
<mhall119|work> and if you run "bzr branch -r tag:day1.3 lp:classroom-scheduler" you will get a copy of what that created
<mhall119|work> if you "cd classroom-scheduler/classroom_scheduler" you will see the files that get created
<mhall119|work> manage.py is what you will use to control your django project
<mhall119|work> settings.py is where you configure your project (more on that next)
<mhall119|work> and urls.py is what you use to connect a URL to the code you want to handle that request
<mhall119|work> any questions so far?
<mhall119|work> okay, moving right along then
<mhall119|work> a project in django is composed of a collection of applications
<mhall119|work> if you look at the bottom of settings.py, you will see the INSTALLED_APPS array
<mhall119|work> this is what tells django what applications make up this project
<mhall119|work> and, as you can see, there's already some helpful applications installed for you
<mhall119|work> since a project doesn't do much without applications, our next step is to create an application for the functionality we want to add
<mhall119|work> to do that, you would cd to the project directory and run "django-admin startapp $appname"
<mhall119|work> for this example, I ran "django-admin startapp class"
<mhall119|work> and if you run "bzr pull -r tag:day1.4" you will get that
<mhall119|work> and now you should see a "class" directory under the project root
<mhall119|work> and under there you will see tests.py, views.py and models.py
<mhall119|work> remember I said that Django uses the model-view-controller pattern?  Well here is where that happens
<mhall119|work> first things first though, we need to configure our project
<mhall119|work> look at the top of settings.py in the project root, and you will see fields for configuring the database connection
<mhall119|work> this connection will be used throughout Django
<ClassBot> sucotronic asked: is the tests.py some kind of unit testing?
<mhall119|work> I believe so, that's something new that I haven't done much with
<mhall119|work> hopefully there will be classes on unit testing in Django in the future
<mhall119|work> for this course, we're going to focus on views.py and models.py
<mhall119|work> so, our next step is to tell our project where to find out database and application
<mhall119|work> for testing, it's easiest to just use 'sqlite3' as the database, so you don't have to go through the trouble of setting up a server
<mhall119|work> so run "bzr pull -r tag:day1.5" and then look at settings.py again
<mhall119|work> or run "bzr diff -r tag:day1.4" to see the changes
<mhall119|work> all that I did was set the engine to use sqlite3, with the file classroom_scheduler.db as the database file
<mhall119|work> I also added 'classroom_scheduler.class' to the INSTALLED_APPS list
<mhall119|work> now that Django knows where to look for the database, we have to initialize it
<mhall119|work> to do this, run "python manage.py syncdb" from the project root
<mhall119|work> this will create the sqlite.db file, necessary tables, and initial values needed
<mhall119|work> it should prompt you for an admin user, just enter a username and password you'll remember
<mhall119|work> you should now see the file classroom_scheduler.db in the project's root
<mhall119|work> you can also "sqlite3 classroom_scheduler.db" if you needed to access it directly
<mhall119|work> alright, so now we have our project, our application, and our database, it's time to make it actually do something
<mhall119|work> any questions before we move on?
<mhall119|work> ok, moving on
<mhall119|work> a view in Django is nothing more than a function that takes an HttpRequest, and returns an HttpResponse
<mhall119|work> there's a lot more you can do in between, but that's the essence of it
<mhall119|work> so, we're going to create our first view
<mhall119|work> run "bzr pull -r tag:day1.6"
<mhall119|work> now, when you look at classroom_scheduler/class/views.py, you should see the function "class_home"
<mhall119|work> and you can see that it gets 'request' as an argument
<mhall119|work> and all I'm doing is stuffing some HTML into an HttpResponse object
<mhall119|work> note that I had to import HttpReponse from django.http at the top of views.py
<mhall119|work> view functions can be named anything you want, and for the most part can be placed anywhere you want, as long as python can find them
<mhall119|work> now that we have our view, we need to give the user a path to it
<mhall119|work> to do that, we map it to a url in urls.py in the project root
<mhall119|work> again, run "bzr pull -r tag:day1.7" to get the updatre
<mhall119|work> and "bzr diff -r tag:day1.6" to see what changed
<mhall119|work> in this case, it was only one line in urls.py
<mhall119|work> with Django, you use a regular expression to match the URL of a request, and then forward that request to the view
<mhall119|work> '^class/' will match a url like http://host:port/class/
<mhall119|work> django will try each pattern in the urlpatterns list, and short-circuit on the first one that matches
<mhall119|work> so if you want to have both '^class/(.*)' and '^class/my_view/', you need to make sure the my_view one comes first
<mhall119|work> alright, now it's time to see what we've made
<mhall119|work> from the project root, run "python manage.py runserver"
<mhall119|work> if there aren't any problems, it should tell you that django is running on http://127.0.0.1:8000
<mhall119|work> and if you go to http://127.0.0.1:8000/class/ you should see the output of our view
<mhall119|work> and it should look something like this: http://growingupfree.org:8001/class/
<mhall119|work> and that concludes our first day of learning django
<mhall119|work> are there any questions?
<mhall119|work> okay, well then please come back tomorrow for part 2, where we will start making our models
<mhall119|work> you can always email me at mhall119@ubuntu.com if you have any questions later
* 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
#ubuntu-classroom 2010-02-24
* 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 || Event: Learning Django - Current Session: Learning Django - Day 2 - Instructor: mhall119|work || Questions in #ubuntu-classroom-chat
<mhall119|work> I guess that means it's time to start
<mhall119|work> can I see a show of hands for who's here?
<mhall119|work> alright, great
<mhall119|work> before I get started, does anyone need a recap of yesterday's session?
<mhall119|work> okay, yesterday we created our django project and application
<mhall119|work> as I explained, a Django project is a collection of related applications
<mhall119|work> we also created a very simple view, which in Django is just a function that takes an HttpRequest object, and returns an HttpResponse object
<mhall119|work> we then wired that view to a URL pattern
<mhall119|work> if you were not here yesterday, you can grab the code we stopped with by running "bzr branch -r tag:day1.7 lp:classroom-scheduler"
<mhall119|work> sorry, my connection is suddenly lagging
<mhall119|work> so today we're going to create our Models
<mhall119|work> Models are an integral part of a Django application
<mhall119|work> they provide an interface between your code and the backend database
<mhall119|work> they can also be used to generate forms and pages with a minimal amount of work on your part
<mhall119|work> so, first things first, cd into your classroom-scheduler directory, which should be at day1.7
<mhall119|work> and run "bzr pull -r tag:day2.1"
<mhall119|work> now if you open classroom_scheduler/class/models.py you will see an empty model called "Session"
<mhall119|work> those of you who were here yesterday will remember that we are building an app to track teaching sessions here in #ubuntu-classroom
<mhall119|work> "Session" will be our model for defining the data we are going to work with for those sessions
<mhall119|work> now, it's time to give this model some definition
<mhall119|work> Django models store metadata in an inner class aptly named "Meta"
<mhall119|work> so if you "bzr pull -r tag:day2.2" you will see the new Meta class in Session
<mhall119|work> now Meta has several optional attributes you can give it, I've only specified verbose_name and verbose_name_plural
<mhall119|work> these are what Django will use when displaying the Model's name
<mhall119|work> these too are optional, if we had not defined them Django would assume them from the class's name
<mhall119|work> now, our model still doesn't have any data of it's own, so we have to add Fields
<mhall119|work> Django supplied a rich assortment of Field types you can use
<mhall119|work> you can also define your own,should you ever find that you can't accomplish what you need with those built into Django
<mhall119|work> run "bzr pull -r tag:day2.3" to get the fields for our model
<mhall119|work> this will give you a look at just a few of the available fields
<mhall119|work> you can see we define a teacher, title, start and end dates and a url field
<mhall119|work> When you access these fields from an instance of your model, they are automatically converted to python datatypes
<mhall119|work> so if you had mysession=Session(title="Learning Django")
<mhall119|work> mysession.title would be a Django str (string) type
<mhall119|work> DateTimeFields are treated like datetime variables
<mhall119|work> so you can do mysession.start_time = datetime.datetime.now()
<mhall119|work> and Django handles all of the internals for you
<mhall119|work> speaking of internals, now that we have our Model, we need to create the tables in our database for them
<mhall119|work> to do this, run "python manage.py syncdb" from the project directory
<mhall119|work> those of you who were here yesterday may remember that step
<mhall119|work> whenever you add new Models, you have to run syncdb again to have Django create the necessary tables
<mhall119|work> any questions so far?
<ClassBot> hemanth asked: whenever we add/modify the Models we must syncdb right?
<mhall119|work> you add Models with syncdb, but it's not smart enough to know how to handle modifications
<mhall119|work> there is a separate project, django-south, that lets you automate modifications to tables
<mhall119|work> but that's a subject for another lesson
<mhall119|work> okay, so another very powerful tool Django provides is the concept of ForeignKeys and Many2Many relationships
<mhall119|work> not only does it provide for these in your python code, but it handles them in the database as well
<mhall119|work> suppose we wanted to add a Course model, that would be a collection of Sessions on a common topic
<mhall119|work> much like this series of lessons
<mhall119|work> we would want to link a Session to a Course through a ForeignKey field
<mhall119|work> if you run "bzr pull -r tag:day2.4" you will get exactly that
<mhall119|work> now if you look at class/models.py you will see that we added a Course model that is just a title, start and end dates
<mhall119|work> and at the bottom of the Session model, you will see a new field named 'course' that is a ForeignKey to this new model
<mhall119|work> again, Django will map this field to a python object, in this case it will be our Model class 'Course'
<mhall119|work> so you can do mycourse = Course(title="Learning Django Week")
<mhall119|work> mysession.course = mycourse
<mhall119|work> and again Django handles the mappings between python and the database for you
<mhall119|work> any questions before we move on?
<mhall119|work> guess not, okay
<mhall119|work> so, another common object-oriented paradigm is the notion of inheretance
<mhall119|work> and it turns out that Django can handle this too
<mhall119|work> if you sub-class a Django Model, it will create a new table with only your new fields, using the original model's table for the interited fields
<mhall119|work> you can also define a model as "abstract", by setting abstract=True in it's Meta class.  Doing that will keep Django from making a table for that parent class, and all fields will live in the table it creates for child classes
<mhall119|work> now, Jono Bacon has this really cool program called Lernid that some of you may have used (or may be using right now)
<mhall119|work> it basically combines #ubuntu-classroom, #ubuntu-classroom-chat with a web browser, terminal and schedule listing all in one app
<mhall119|work> it also has the ability to display slides from a downloaded PDF
<mhall119|work> so, if we wanted to capture the slide URL for a session using Lernid, we can create a subclass of our Session model for this field
<mhall119|work> and if run "bzr pull -r tag:day2.5" you will see that I did exactly that
<mhall119|work> we now have a model called LernidSession that inherits from Session, and adds a URLField for slides
<mhall119|work> and if you run "python manage.py syncdb" again, you will see it making the new table for this model
<mhall119|work> < hemanth> QUESTION : can something like mysession.course = Course(title="Learning Django Week"); be achieved
<mhall119|work>                  ? {inheritance}
<mhall119|work> that's not inheritance, that's just creating a new Course instance and assigning it to mysession.course
<mhall119|work> did you mean something else?
<mhall119|work> hemanth?
<mhall119|work> oh, no, the Session won't inherit the methods of Course
<mhall119|work> mysession.course will be an instance of Course
<mhall119|work> so you can do mysession.course.title
<mhall119|work> this of mysession.course as just a variable attached to mysession that holds an instance of Course
<mhall119|work> but if you did mylernid = LernidSession(title="Lernid Session"), then mylernid would have the fields from both Session and LernidSession
<mhall119|work> so you could also do: mylernid.course = mysession.course
<mhall119|work> does that make sense?
<mhall119|work> okay
<mhall119|work> now we have our wonderful models, lets go somewhere where we can see them
<mhall119|work> Django provides a very powerful Admin application that lets you manage instances of your models
<mhall119|work> it is located in django.contrib.admin
<mhall119|work> so enable it, we need to add it to INSTALLED_APPS, create a URL mapping to it, and finally register which models we want Admin to be aware of
<mhall119|work> running "bzr pull -r tag:day2.6" will get all of that for you
<mhall119|work> you should have a new file under class/admin.py
<mhall119|work> if you look in there, you can see that we are registering each of our models with the admin application
<mhall119|work> we also wired the application to the url '^admin/'
<mhall119|work> once again, we need to run "python manage.py syncdb", because we introduced a new application to INSTALLED_APPS, and it has it's own set of models that need a database table created
<mhall119|work> then, run "python manage.py runserver" and it should start up Django on localhost
<mhall119|work> it'll say Django is running on http://127.0.0.1:8000/ or something similar
<mhall119|work> then if you go to http://127.0.0.1:8000/admin/ it will take you to the login screen for the admin app
<mhall119|work> the login is the same one that was created on the first syncdb we did yesterday (or today, if you didn't do it yesterday)
<mhall119|work> did everybody get to logged in to the admin?
<mhall119|work> < hemanth> QUESTION : The current URL, , didn't match any of these.Should i change anything in settings.py ?
<mhall119|work> you need /admin/ after the host:port
<mhall119|work> alright, so once you're in, you will see the "Class" section has our models listed
<mhall119|work> each application in your project that registeres models will have it's own section
<mhall119|work> from here you can add/edit/delete models
<mhall119|work> you will see that "Class Session" (the verbose_name for Session), as well as "Lernid Session" have a field for Course, because it is a foreign key
<mhall119|work> go ahead and create a new Course instance, and then a Class Session instance for that course
<mhall119|work> you'll notice while you're doing this that the labels come from the verbose_name attribute of the field
<mhall119|work> and the help_text for the field is displayed below the widget
* 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
<mhall119|work> < hemanth> QUESTION : no such column: class_session.course_id; i had ran syncdb
<mhall119|work> can you guys still see me?
<mhall119|work> okay, we're running over, but I don't think anyone is on right away, so we'll continue
<mhall119|work> remember how I said that syncdb wasn't smart enough to edit a model's table?
<mhall119|work> well, we added Session.course as a ForeignKey after we ran the syncdb to create teh Session table
<mhall119|work> so we need to clear out our existing table structure, and put the correct one in place
<mhall119|work> with django-south, we could just add the one field, but for now we'll just start over
<mhall119|work> to do that run "python manage.py reset class"
<mhall119|work> this will drop all the tables for the "class" application, and rebuild them according to the current model
<mhall119|work> once you've done that, you can go back into the admin and add your courses and sessions
<mhall119|work> no, reset should recreate all the tables that syncdb would create
<mhall119|work> sorry
<mhall119|work> so, when you create your instances, you will probably notice that they're being displayed as "Session object" or "Course object"
<mhall119|work> well that's not very useful
<mhall119|work> we want them to identify themselves as something meaningful to us
<mhall119|work> to do that, we overwrite the __unicode__ method in the Model
<mhall119|work> if you run "pull -r tag:day2.7" you will see that I do this for Course and Session
<mhall119|work> I don't need to do it for LernidSession, because it will inherit the __unicode__ implementation from Session
<mhall119|work> now when you go back into the Admin, you will see Cources listed by their title, and Sessions listed by their title and teacher
<mhall119|work> and that concludes (a little late) day 2 of this course
<mhall119|work> tomorrow we will begin looking at Django Forms, another powerful set of classes that lets us connect users to our Models
<mhall119|work> again, you can email me at mhall119@ubuntu.com should you have any questions
<mhall119|work> thank you all for attending, and I will see you tomorrow
#ubuntu-classroom 2010-02-25
<Pawka> hi
<hemanth> o/
<leoquant> can someone make an announcement on top of this channel for a live session this Saturday? Ref.: https://wiki.ubuntu.com/Packaging/Training
<leoquant> thx
<persia> leoquant: What'S the subject for Saturday?
<persia> leoquant: Shouldn't it rather be added to http://people.ubuntu.com/~nhandler/classroom.html ?
<qense> persia: "How to effectively use a PPA and providing updated package"
 * persia pokes nhandler
<qense> by Rohan Garg and rowinggolfer at 17.00 UTC
<leoquant> qense indeed
<persia> leoquant: In fact, you probably want to get nhandler to list all your Packaging/Training topics (as they are scheduled).
<persia> I think ClassBot will then do the right thing.
<persia> Cool.  That does work.  But I still don't really want to change the /topic unless there's no other option.
<leoquant> persia i am ask to fix this as soon as possible
<persia> leoquant: fix which?
<persia> Was the class previously scheduled for now?
<leoquant> the annoucement persia
<persia> Oh, to make the announcement for the event?
<leoquant> yep
<persia> Ah, go ahead and announce it then.
<persia> nhandler should be around in a few hours, and can add it to the schedule.
<leoquant> ok
<Emilse-Paez> hello
<joakodlz> Emilse-Paez hi!
<cjohnston> leoquant: persia qense I need the instructors nicks please
<persia> cjohnston: For the upcoming event?
<persia> leoquant: ^^
<cjohnston> yes
<qense> I don't know their nicks, I was just asked if I was interested in helping with translating the session.
<cjohnston> Could someone find out please... I need their nicks to be able to schedule it
<qense> I'll try if I can find it out.
<persia> qense: What are the names again?
<persia> Or if you're looking lp.net/people might help :)
<cjohnston> ty
<qense> persia: Rohan Garg and rowinggolfer
<qense> the second session is done by persia himself
<persia> The 4th, right?
<qense> persia: the second
<persia> Rohan Garg is shadeslayer
<qense> I find these two people on LP: rohangarg
<qense> and rowinggolfer
<persia> qense: The 2nd?  I'm *really* busy on the 2nd.  Are you sure?
<qense> persia: ah, date
<qense> indeed, the 4th
<qense> right in the middle of the UODW
<persia> Neil Wallace is rowinggolfer
<persia> But at a sane time of day when nobody is ranting about upstream coding :)
<qense> 6 UTC sane!
<qense> ?
<qense> The only reason I'm awake at that time is because I have to cycle to school! :P
<cjohnston> qense: so its rowinggolfer and shadeslayer ?
<qense> cjohnston: indeed, like persia said
<cjohnston> ty
<binti> ah i dont have to register my nick?
<persia> binti: Depends what you're trying to do :)
<binti> registering my nick..., didn't work
<qense> I would recommend anyone who's often on IRC to register his or her nick.
<cjohnston> fwiw, the timedate link on the first class for packaging training is wrong
<shift_wreck> #ubuntu-classroom-chat
<shift_wreck> dur
<cjohnston> the two classess have been added to the training calendar
<qense> cjohnston: now you're here, are the two Adopt-an-Upstream sessions added to the calendar? Jorge and I did place them on the w.u.c/Classroom schedule
<persia> cjohnston: Thanks!
<cjohnston> sure are qense
<qense> cjohnston: good!
<binti> my first classroom in 27 years and xchat hangs
<ghostcube> :D
<binti> anyone else working with loqui ?
<binti> fixed, the problem was gnome xchat
<binti_> python class in 2 hours ?
<hemanth> in 5mins
<molok> more like 5 mins
<binti_> :) thanks
<rickspencer3> is anyone here?
<cjohnston> no.. im here
<cjohnston> at my house
<rickspencer3> hehe
<rickspencer3> lol
<cjohnston> I dont know where you are
<hemanth> :)
<cjohnston> Lets see if she works
<rickspencer3> I am in Seattle, and I am about to try to introduce the notion of programming in Python to folks who haven't programmed before
<rickspencer3> and I am really pumped
<rickspencer3> cjohnston, so I just go?
<rickspencer3> is there fanfare?
<cjohnston> I'm wondering why ClassBot isnt setting things up
<rickspencer3> trumpets, red carpet, curtain pulled back?
<Pendulum> rickspencer3: well we can pull them out if you really want, but we're a bit lazy ;)
<rickspencer3> Pendulum, yes, I require fanfare
<cjohnston> rickspencer3: go ahead and start.. ill work on classbot
<rickspencer3> cjohnston, thanks
<rickspencer3> so, I guess if I ask things here, people answer in #ubuntu-classroom-chat, right?
<cjohnston> yup
<rickspencer3> so first, everyone who is here doesn't know a programming language yet, but is interested in getting started right?
<binti_> yep
<NVSBLmonstr> More or less
<papapep> yep
<rickspencer3> hehe
 * CaptainHero too
<rickspencer3> ok
<cjohnston> there you go.. sorry
<rickspencer3> np
<rickspencer3> due to my compulsive personality, I found it necessary to more or less write out the class first
<rickspencer3> https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek/IntroToPythonForTotalBeginners
<rickspencer3> so you can follow along there if it helps
<rickspencer3> what I hope to do in the next hour is to give you a taste of programming and how Python works
<rickspencer3> so that you can go off and start really learning it
<rickspencer3> so, when I was a boy, the line between using a computer and programming it were a bit blurry
<rickspencer3> you had a computer, and to use a program you got a listing of the program printed it out, and you typed in the source yourself
<rickspencer3> typically using Basic (an early and pretty easy language)
<rickspencer3> so I wrote an "adventure game" for my first program
<rickspencer3> one of those text adventures where you go north, look in the gave, put the bird in the cage, etc...
<rickspencer3> does everyone know what I mean?
<rickspencer3> k
<rickspencer3> so we'll start making one in this session
<rickspencer3> but first, a few things about a program
<rickspencer3> a program is just a series of instructions that you type out for the computer to follow
<rickspencer3> computers are not smart at all
<rickspencer3> they are just very very obedient, and they can count really fast
<rickspencer3> this means that if you have a small error in what you type, the computer gets confused
<rickspencer3> like if I was "seattle" instead of "Seattle" any human can cope with that error
<rickspencer3> but to a computer, those two words are totally different, and the program will choke
<rickspencer3> (for the record that is called "case sensitivity")
<rickspencer3> so that's an example of how really stupid computers are
<rickspencer3> any questions before we start working on the game?
<rickspencer3> .
<rickspencer3> .
* 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 || Event: Ubuntu Opportunistic Developer Week Prep - Current Session: Intro to Python for Total Beginners - Instructor: rickspencer3 || Questions in #ubuntu-classroom-chat
<rickspencer3> ok, let's start them
<rickspencer3> it's a good idea usually to sketch out what your program will do sometimes
<rickspencer3> so I designed the game, and there is a picture of it on the wiki
<rickspencer3> basically, the player has to get the fork and the bulb from the living room ...
<rickspencer3> go to the kitchen, stick the fork in the toaster which will cause the bulb to light up ...
<rickspencer3> so they can see in the pantry, where they win
<rickspencer3> so let's get ready to write the program
<rickspencer3> open up your text editor, probably gedit, and save a blank file
<rickspencer3> I called it "prize_hunt.py"
<rickspencer3> it doesn't matter much what you name it so long as it ends in ".py"
<rickspencer3> (py is for python of course)
<rickspencer3> you also need a terminal window open
<rickspencer3> the terminal should be in the same directory where you saved the file
<rickspencer3> I'll give folks a moment to get that set up
<rickspencer3> let me know when I should move on
<rickspencer3> any questions?
<rickspencer3> ok
<rickspencer3> let's write some code!!
<rickspencer3> this is the fun part :)
<rickspencer3> let's start by making the computer say things to player
<rickspencer3> in Python we do that with a command called "print"
<rickspencer3> it doesn't print to the printer, it prints to console
<rickspencer3> here
<rickspencer3> 's my first line:
<rickspencer3> print "You are outside the front door of the house. The prize is inside."
<rickspencer3> that's the first line of the file
<rickspencer3> save it
<rickspencer3> now we need to run the program
<rickspencer3> (it's very important to save the file!)
<rickspencer3> we run the program with the terminal by telling python to run it:
<rickspencer3> $python prize_hunt.py
<rickspencer3> python prize_hunt.py
<rickspencer3> the "$" is just a convention to show you type it on the terminal
<rickspencer3> is ti working for everyone?
<rickspencer3> ok
<rickspencer3> you just wrote a program!
<rickspencer3> believe it or not, that's pretty much all there is to it
<rickspencer3> from here on out it's just refining that basic idea
<rickspencer3> we probably want to tell the player some  more stuff
<rickspencer3> so let's add some more printing to our program to get started
<rickspencer3> print "You can enter commands to do stuff"
<rickspencer3> print "The commands are go, look, take, use, and put"
<rickspencer3> print "Use commands with objects that you see around"
<rickspencer3> print "For example, you can enter 'look door'"
<rickspencer3> just add those lines and run it
<rickspencer3> (or similar, it's your game after all_
<rickspencer3> any questions?
<rickspencer3> is it working?
<rickspencer3> save and run again to make sure it's working
<rickspencer3> ok, great
<rickspencer3> so let's move on
<rickspencer3> we can tell the player stuff, so now let's let the player tell us stuff
<rickspencer3> this will introduce two basic concepts that you will use over and over and over again in programming
<rickspencer3> using a variable, and calling a function
<ClassBot> hemanth asked: how to decide on the quotes?
<rickspencer3> can you explain the question a little more?
<rickspencer3> is this about using " versus ' ?
<ClassBot> hemanth asked: yes "" ' '
<rickspencer3> ok
<rickspencer3> so ...
<rickspencer3> a string is a collection of characters
<rickspencer3> surrounded by either " or '
<rickspencer3> in python yu can choose eiher
<rickspencer3> I prefer " most of the time
<rickspencer3> so, moving on
<rickspencer3> let's get some user input
<rickspencer3> if command == "look door":
<rickspencer3> oops
<rickspencer3> wrong line
<rickspencer3> command = raw_input("Enter a command:")
<rickspencer3> ok, that's the correct one
<rickspencer3> add this to your program and run it
<rickspencer3> "command" is a variable
<rickspencer3> a variable is a word that you use in your program that is kind of a container for values
<rickspencer3> specifically values that can *vary* depending on what the program does
<rickspencer3> "command" is a variable that will store the results of "raw_input"
<rickspencer3> raw_input is a function
<rickspencer3> You "call" a function in a program. A function will do something, and it can also provide back some information. raw_input prints out a message that you tell it to print out and then collects whatever the user types. It then "returns" what the user typed. This line of code is storing what the function returns for you. Make sense?
<rickspencer3> Some functions need some information before they can work. raw_input needs a string to display. Information that you provide to a function is called an "argument". It is usually goes inside the parenthesis.
<rickspencer3> this is a bit to digest, but using it may help you understand
<rickspencer3> is everyone's program running?
<ClassBot> liemily asked: Does raw_input expect anything other than carriage return?
<rickspencer3> raw_input expects a string to be typed into the console
<rickspencer3> ended with a carriage return
<rickspencer3> but the carriage return is not added to the string
<ClassBot> hemanth asked: why is raw_input called so? cos it's bound to any data type when read?
<rickspencer3> raw_input will be a string
<rickspencer3> DON
<rickspencer3> 'T use input()
<rickspencer3> input is weird, it tries to interpret what is given to is as Python code, so weird stuff can happen
<rickspencer3> so you get a string from raw_input() and it's easy to work with that way
<rickspencer3> so are folks getting raw_input to work in the console?
<rickspencer3> shall we go ahead and actually use the provided input?
<ClassBot> Johonunu asked: are there types of variable like int,double,... or there is single one like in php ?
<rickspencer3> Johonunu, yes
<rickspencer3> but you can set a variable to any type
<rickspencer3> if you know another language already, the next session might be good, as I will
<rickspencer3> help you make a map from your current language to Python
<rickspencer3> this class assumes zero programming experience
<rickspencer3> alrighty
<rickspencer3> let's go ahead and look at the user input
<ClassBot> m_anish asked: Can raw_input be made to accept multiple lines, and special ASCII characters
<rickspencer3> hmmm
<rickspencer3> m_anish, I have never done that, so I don't know
<rickspencer3> I assume you could add "\n" to add a carriage return
<rickspencer3> might be something fun for you to test out!
<rickspencer3> shall we move on to using the input?
<rickspencer3> ok
<rickspencer3> this next block will introduce a couple of concepts
<rickspencer3> add this to your program
<rickspencer3> if command == "look door":
<rickspencer3>     print "The door to the house. It looks unlocked"
<rickspencer3> elif command == "go door":
<rickspencer3>     print "You go through the door into the living room"
<rickspencer3> else:
<rickspencer3>     print "You can't do that here"
<rickspencer3> can you guess what this done?
<rickspencer3> . Starting with line #1, what this code says is "if command has been set to the string 'look door' then run the lines of codes that are indented below here"
<rickspencer3> Typically, programmers will read this as "if command equals 'go door'".
<rickspencer3> The two "=" are important. There are two because sometimes you write code that sets the value of a variable, and that uses only one "=".
<rickspencer3> Note that line number 2 is indented exactly 4 spaces. Python uses indentation to define what blocks of code go together. So since line 2 is indented, if the users types something other than "look door" it will skip over line 2. Early on you may write lots of bugs because you get indentation wrong.
<rickspencer3> let me know when you've tried this out, and what questions you might have
<rickspencer3> Line 3 says "elif" to start. elif is read "else if"
<rickspencer3> The "else" is important, because if the user did type in "look door", you just want to run the code for that condition.
<ClassBot> virtuald_ asked: can't i use a tab for indentation?
<rickspencer3> virtuald_ yes
<rickspencer3> BUT don't
<rickspencer3> it's best to set gedit to use spaces for tabs and to use four spaces for the tabs
<rickspencer3> while the language permits other indentation schemes, the Python programmers of the world have agreed on 4 spaces for a tab
<ClassBot> stevefed529192 asked: I know you can use tabs for indentation as well, is there any reason one would opt for spaces over tabs?
<rickspencer3> yes
<rickspencer3> you can't tell the difference between spaces and tabs in most editors
<rickspencer3> if we don't all do it the same way, we will go crazy trying to read each other's code
<ClassBot> deegee asked: is it a must to have 4 spaces of indentation?
<rickspencer3> also, when your programs get big, you might find it's easy to read that way
<rickspencer3> deegee, again, technically you can use any number of spaces, but your life will be easier if you go with the standard
<rickspencer3> a lot of my early python programs I used 1 space instead of 4
<rickspencer3> I regret it now
<rickspencer3> ok, is this new code making sense to folks?
<rickspencer3> great
<rickspencer3> btw, this is called "conditional branching" and is one of the key concepts in programming
<rickspencer3> So you may notice that whatever happens, you code ends after testing the conditions.
<rickspencer3> oops
<rickspencer3> not a very fun game
<rickspencer3> Really what you want is your code to branch off and do stuff depending on what happened.
<rickspencer3> you probably want some code to handle the situation of the user going into the living room
<rickspencer3> They key thing to think about is that you want your code to "do something"
<rickspencer3> Sounds like it could use a function. So you can make your own function for entering the living room.
<rickspencer3> here's the code for a new function to put at the top of your code file:
<rickspencer3> def enter_living_room():
<rickspencer3>     print "You are in the living room. There is a tv cabinet, a"
<rickspencer3>     print "table with some dishes, and a lamp."
<rickspencer3>     command = raw_input("Enter a command:")
<rickspencer3> this needs to go at the top for reasons that will be clear soon
<rickspencer3> save the file and make sure your program still runs
<rickspencer3> still working for everyone?
<rickspencer3> You have just created a function that you can call in the same way you call raw_input.
<rickspencer3> "def" means define, as in define a function
<rickspencer3> Then there is the name for your function
<rickspencer3> The empty parens mean that your function can just work, it doesn't need any information
<rickspencer3> raw_input needs some information to work, it needs to know what you want it to display
<rickspencer3> so it has an "argument"
<rickspencer3> enter_living_room has no arguments
<ClassBot> ARR asked: Whats better to learn now, python 3 or 2.6 ? I have heard python 3 is quite different.
<rickspencer3> hmmm
<rickspencer3> ARR I would stick with 2.6 for now
<rickspencer3> you will need lots of samples and people to ask, etc...
<rickspencer3> python 3 is not yet widely adopted
<rickspencer3> also, python 3 is not supported everywhere yet
<rickspencer3> others may have different opinions, though
<rickspencer3> ok, so we need to call the function that we just created, shall we do that, or are there more questions now?
<rickspencer3> btw,
<rickspencer3> Note that lines 2-4 are indented 4 spaces. The fact that are indented under line 1, and all indented to the same level is how python knows they are part of the same function.
<ClassBot> immy asked: what version of python do ubuntu developers use?
<rickspencer3> aah
<rickspencer3> well, Ubuntu developers are comprised of folks from all over
<rickspencer3> Canonical folks tend to use 2.6
<rickspencer3> so do most other Ubuntu developers
<rickspencer3> let's go ahead and call the function now
<rickspencer3> if command == "look door":
<rickspencer3>     print "The door to the house. It looks unlocked"
<rickspencer3> elif command == "go door":
<rickspencer3>     print "You go through the door into the living room"
<rickspencer3>     enter_living_room()
<ClassBot> virkang asked: Will Lucid have Python 3 installed by default ?
<rickspencer3> else:
<rickspencer3>     print "You can't do that here"
<rickspencer3> virkang, I dunno
<rickspencer3> if so, it would be in the repos by now
<rickspencer3> ok, does everyone see where I added the call to our new function?
<rickspencer3> Notice that line 5 is where you call the function, and that python knows to run it if the command is "go door" because it's indented.
<rickspencer3> The reason that you added the function to the top of the code file is to make sure that the function got defined before you tried to use it. Here's the whole file so you can see the context:
<rickspencer3> oops, never mind
<rickspencer3> you can see the whole listing on the wiki
<rickspencer3> https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek/IntroToPythonForTotalBeginners
<rickspencer3> so creating and calling  your own functions is a big big part of programming
<rickspencer3> any questions?
<rickspencer3> ok
<rickspencer3> let's do a bit more with variables
<rickspencer3> Let's handle looking at the lamp and getting the bulb in the living room.
<rickspencer3> First, we want the player to see that there is a bulb that they can take.
<rickspencer3> But if they already took the bulb, we don't want them to keep seeing the bulb right?
<rickspencer3> So we handle this by creating a global variable
<rickspencer3> . "global" just means that you can use the variable everywhere in the program, not just within the function where it was defined.
<rickspencer3> Create a global variable at the top for your code file like this:
<rickspencer3> global has_bulb
<rickspencer3> has_bulb = False
<rickspencer3> save your program and make sure it runs
<rickspencer3> If you don't want the variable to be available everywhere in your program, just leave out line 1
<rickspencer3> but in this ase we do
<rickspencer3> , we assigned the variable to be "False"
<rickspencer3> note that this is False, not false !
<rickspencer3> As in, the player does not yet have the bulb, right?
<rickspencer3> so we start out the program saying that the player does not have the bulb
<rickspencer3> make sense?
<rickspencer3> you don't have to declare variable first
<rickspencer3> you just have to declare them *before* you use them
<ClassBot> theopensourcerer asked: so you do not have to declare variables first?
<rickspencer3> theopensourcerer, so for global variable, it's easier to put them at the top
<rickspencer3> also, it makes it easier to read your cod a bit
<rickspencer3> If you assign a variable to be True or False, this is called a boolean, btw. You've already seen that variables can be strings. They can be numbers as well.
<ClassBot> Boyan23 asked: I get NameError: name 'command' is not defined?
<rickspencer3> oops
<rickspencer3> this sounds like you are trying to use the command variable before you've declared it
<rickspencer3> we're a bit running out of time, but perhaps we can try to debug it later
<rickspencer3> are other people having this same bug?
<rickspencer3> ok
<rickspencer3> sorry Boyan23 I promise to help you later :)
<rickspencer3> so lets use has_bulb in our enter_living_room function
<ClassBot> ragesoss asked: I must have missed this... on the wiki, line 5 is blank. Why? A blank line means calling the function?
<rickspencer3> a blank line is just a blank line
<rickspencer3> it is useful for making your code easier to read
<rickspencer3> it's usually a good idea to stick a blank line in between chunks of code that are logically seperated
<rickspencer3> so your code forms "chunks" that are easier to skim and read
<rickspencer3> remember you will read your code 1000 times more than you will write it!
<rickspencer3> readability is very important
<rickspencer3> ok, where was I
<rickspencer3> right
<rickspencer3>     command = raw_input("Enter a command:")
<rickspencer3>     if command == "look lamp":
<rickspencer3>         print "It is a floor lamp. It is not plugged in."
<rickspencer3>         if not has_bulb:
<rickspencer3>             print "There bulb looks new"
<rickspencer3>         enter_living_room()
<ClassBot> ragesoss asked: thanks.  for some reason, enter_living_room wouldn't run before I added that space.  But I guess that wasn't the cause, and I'm not sure what was.
<rickspencer3> so here I use the has bulb variable to make sure I only print the info about the bulb if the player didn't take it yet
* 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 || Event: Ubuntu Opportunistic Developer Week Prep - Current Session: Intro to Python for programmers - Instructor: rickspencer3 || Questions in #ubuntu-classroom-chat
<rickspencer3> BUT
<rickspencer3> (almost done, last thing)
<rickspencer3> if you want to assign a value to has_bulb, you'll need to tell the enter_living_room() function about it
<rickspencer3> def enter_living_room():
<rickspencer3>     global has_bulb
<rickspencer3>     print "You are in the living room. There is a tv cabinet, a"
<rickspencer3>     print "table with some dishes, and a lamp."
<rickspencer3>     command = raw_input("Enter a command:")
<rickspencer3>     if command == "look lamp":
<rickspencer3>         print "It is a floor lamp. It is not plugged in."
<rickspencer3>         if not has_bulb:
<rickspencer3>             print "There bulb looks new"
<rickspencer3>         enter_living_room()
<rickspencer3>     if command == "take bulb":
<rickspencer3>         print "You now have a bulb"
<rickspencer3>         has_bulb = True
<rickspencer3>         enter_living_room()
<rickspencer3> so notice I redeclared has_bulb as a global within the "scope" of the function
<rickspencer3> also!
<rickspencer3> notice that I called the function from within itself!!
<rickspencer3> pretty cool, a function can call itself
<rickspencer3> this keeps the program from exiting
<rickspencer3> so we're two minutes over
<rickspencer3> how about if you want to, you can try working on the game today/tonight, and then tomorrow if you have questions ...
<rickspencer3> track me down and I can try to help
<rickspencer3> maybe set up a follow up session for next week if folks want
<rickspencer3> Ready for the next class?
<ClassBot> shift_wreck asked: could you pastebin the code?
<rickspencer3> shift_wreck, (nice nick btw) -  sure if the wiki doesn't work for you
<rickspencer3> but doing another class now
<rickspencer3> anyone here for Python for For Folks who know another language?
<rickspencer3> alright then
<rickspencer3> let us rock
<rickspencer3> if you know me at all, you can predict that I created a wiki page and over pre-pared for the class :)
<rickspencer3> https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek/IntroToPythonForProgrammers
<rickspencer3> keep in mind - I am not a python expert
<rickspencer3> sorry!
<rickspencer3> but I have learned lots and lots of languages over the years
<rickspencer3> so whenever I learn a new language I have to create a kind of map in my mind that maps old languages to the new one
<rickspencer3> so, what I want to do is just give you a jump start by providing that mental map
<rickspencer3> to me, Python is one of the "native" languages of the Ubuntu desktop
<rickspencer3> because Ubuntu is a Gnome based distro
<rickspencer3> it's well suited to app development and,
<ClassBot> dscassel asked: For me, language is lesss of an issue than environment, tooling and libraries. We'll get to that, yes?
<rickspencer3> over the years I have come to love programming in Python
<rickspencer3> dscassel, a bit, I'll answer your question in a moment
<rickspencer3> when I first started with python it seemed weirdly terse and constrictive
<rickspencer3> but now I find that my creativity really flows through the language
<rickspencer3> so
<rickspencer3> to dscassel question, what is python?
<rickspencer3> it is a language
<rickspencer3> but it is *also* a standard library
<rickspencer3> it's hard to talk about one without the other
<rickspencer3> so I won't try to make hard and fast distinctions here, I'll just mix it up
<rickspencer3> but I put a link to the language ref and the library ref on the wiki page
<ClassBot> Johonunu asked: is python procedural or object oriented language ?
<rickspencer3> python is also on interpreter
<rickspencer3> Johonunu, yes
<rickspencer3> :)
<rickspencer3> Python supports both paradigms well
<rickspencer3> I prefer to use the OO approach for larger programs, so I will cover that syntax near the end of this session
<rickspencer3> let's rock
<rickspencer3> if you type "python" into your terminal window
<rickspencer3> you get the python interpreter
<rickspencer3> where you can write a bit of python
<rickspencer3> in samples if you see a >>>
<ClassBot> AdamK19 asked: what makes Python so great? any notable advantages over say, C# or Java?
<rickspencer3> that means the sample was done in the "interactive shell"
<rickspencer3> AdamK19, well, linguistic choices are perosnal to some degree
<rickspencer3> I know C# and Java both quite well
<rickspencer3> I find Python to have significantly less syntactic and semantic overhead, and easier to read other people's python code
<rickspencer3> but I won't say one is "better"
<rickspencer3> Python is great for Ubuntu because it is a real FOSS community language in terms of origins and the community around it
<rickspencer3> so
<rickspencer3> let's start with some language concepts
<rickspencer3> 1. Indentation levels
<ClassBot> hemanth asked: market scope of python vs java ?
<rickspencer3> # controls scoping instead of {}, "end", etc...
<rickspencer3> # standard is to use 4 spaces for each indentation level
<rickspencer3> # you will get used to it, and probably format you code this way anyway
<rickspencer3> so this means that white space is meaningful in a way it is not in other languages
<rickspencer3> you will have many bugs in your code from this the first few days of using python
<rickspencer3> you may find you hate this at first, but you may learn to love it
<rickspencer3> anyway, real programmers indent their code for readability, so you probably have this habbit already
<ClassBot> abgalphabet asked: python gets different implementation, is it a language spec too?
<rickspencer3> for i in xrange(5,20):
<rickspencer3>     print i
<rickspencer3> "print i" is indented 4 spaces, thus the it is within the scope of the for loop
<rickspencer3> hemanth, deep question, let's talk later
<rickspencer3> abgalphabet, yes
<ClassBot> abgalphabet asked: 4 spaces? not tab?
<rickspencer3> 4 spaces!
<rickspencer3> technically, the language support both, but 4 spaces is standard
<rickspencer3> set your editor to do 4 spaces for tab with python, you will be much happier in the long run that way!
<rickspencer3> let's talk typing real quick
<rickspencer3> Python is Dynamically typed, but it is also Strongly typed
<rickspencer3> >>> x = 1
<rickspencer3> >>> x
<rickspencer3> 1
<rickspencer3> >>> type(x)
<rickspencer3> <type 'int'>
<rickspencer3> >>> x = "string"
<rickspencer3> >>> x
<rickspencer3> 'string'
<rickspencer3> >>> type(x)
<rickspencer3> <type 'str'>
<rickspencer3> this shows dynamic typing
<rickspencer3> x is an int just because I said it was
<rickspencer3> I said it was by assigning an int to it
<rickspencer3> then I changed x to be a string
<rickspencer3> I did this by assigning a string to it!
<rickspencer3> woah
<rickspencer3> so you don't declare the type of a variable because you can change the type laer
<rickspencer3> thus "dynamic" typing
<rickspencer3> but unlike some other dynamically typed languages, Python is strongly typed
<rickspencer3> so types are converted from one to other automatically
<ClassBot> kript asked: probably stupid,but how do you run code in the emulator?
<rickspencer3> >>> x = 1
<rickspencer3> >>> print x + " is a string"
<rickspencer3> Traceback (most recent call last):
<rickspencer3>   File "<stdin>", line 1, in <module>
<rickspencer3> TypeError: unsupported operand type(s) for +: 'int' and 'str'
<rickspencer3> kript, if you mean in the interactive shell, you just type it in
<rickspencer3> it will run as blocks of code are complete
<rickspencer3> also, install iPython
<rickspencer3> it's an interactive shell that supports tab completion
<rickspencer3> so you can inspect data structures and such as you are typing
<ClassBot> theopensourcerer asked: Can you enforce type so you can't change it later?
<rickspencer3> theopensourcerer, not that I know of, as it is a dynamically typed language
<rickspencer3> (but there may be a way I don't know about)
<rickspencer3> if you are used to statically typed languages this seems weirdly dangerous
<rickspencer3> but after a while static typing will seem like unneceesary programing overhead
<rickspencer3> ok, so moving on
<rickspencer3> since it is a strongly typed language, there are types
<rickspencer3> it's easy to look up the types, so I won't bore you with details here
<rickspencer3> but here is some info to get your mental map started
<rickspencer3> there are numeric types
<rickspencer3> Integer, Long Integer, Float, Complex
<ClassBot> AdamK19 asked: does python have something like c# interfaces (and if, how dose it fit with dynamic types)
<rickspencer3> AdamK19, no
<rickspencer3> interfaces are necessary for strongly typed languages
<rickspencer3> because you want different implementations to be callable, right?
<rickspencer3> so in Python, you just add the members to your class that will be needed by the caller
<rickspencer3> however, Python does have multiple inheritance, so you can do interface like things, but include a default implementation
<rickspencer3> (at least that's the way I understand it)
<rickspencer3> ok so one thing abut numeric types is that you can mix em up in your math
<rickspencer3> the result will always be the least restrictive type
<rickspencer3> so if you add an in to a float, the result will be a float
<ClassBot> m_anish asked: Is there a way to declare constant variables like we do in C/C++
<rickspencer3> if you want the result to be an int, you can conver it to an int like this:
<rickspencer3> x = int(x)
<rickspencer3> m_anish, I don't know for sure
<rickspencer3> there is a convention to use all caps
<rickspencer3> MY_CONSTANT_VARIABLE = "foo"
<rickspencer3> but I don't know that the language can enforce immutability
<rickspencer3> sorry
<rickspencer3> moving on
<rickspencer3> a quick word on string
<rickspencer3> strings are highly functional in Python
<rickspencer3> this is an example of where the line between language and library is nicely blurred
<rickspencer3> note that there is no "character" type
<rickspencer3> you can concat with "+" and stuff like that
<ClassBot> malev asked: capitals does not make a variable inmutable, sorry
<rickspencer3> and you get "foo".endswith("o"), etc... for free
<rickspencer3> you can use " or ' to surround your string
<rickspencer3> malev, no, it's just a convention
<rickspencer3> so when people read your code, they think "ah, all caps, the author believes this should not change"
<ClassBot> abgalphabet asked: is python case-sensitive
<rickspencer3> abgalphabet, yes
<rickspencer3> so more on types
<rickspencer3> there is an object called None
<rickspencer3> it is of the type NoneType
<rickspencer3> it;s kind of like null
<rickspencer3> None is an instance of NoneType
<rickspencer3> undeclared variables *are not* None, they are just undeclared
<rickspencer3> so you can't do:
<rickspencer3> if foo is not None:
<rickspencer3>     #do something
<rickspencer3> to test if foo is declared
<rickspencer3> that will be an error
<rickspencer3> ok
<rickspencer3> so python has three types are very feature rich
<rickspencer3> Lists, Tuples, and Dictionaries
<rickspencer3> lists and tuples are kind of like arrays in other languages
<rickspencer3> but they aren't typed
<rickspencer3> !
<rickspencer3> it would be like an array of Objects in C# or java
<rickspencer3> by "not typed", I mean, this is fine:
<rickspencer3> my_tuple = (1,"one",False)
<rickspencer3> you can mix up types in them
<rickspencer3> very cool
<rickspencer3> the main difference between tuples and lists is that tuple are immutable
<rickspencer3> this makes them a bit faster to iterate and stuff like that
<rickspencer3> also keeps other parts of your program from messing with them
<ClassBot> mcphargus asked: I'm unclear on the immutability of tuples, can you add or remove from a tuple? or just not change the objects in the tuple?
<rickspencer3> mcphargus, nope
<rickspencer3> you cannot add or remove items from a tuple
<rickspencer3> I assume that you can change an object that is in a tuple from outside of tuple
<rickspencer3> but I'm not 100% certain
<rickspencer3> I use tuple for stuff like this:
<rickspencer3> >>> wintermonths = ("December","January","February")
<rickspencer3> >>> wintermonths
<rickspencer3> ('December', 'January', 'February')
<rickspencer3> like I know I won't change that list, I care about the order, and I'll be iterating it
 * rickspencer3 tries changing a value in a tuple
<rickspencer3> >>> foo = "boo"
<rickspencer3> >>> t = (1, foo)
<rickspencer3> >>> t
<rickspencer3> (1, 'boo')
<rickspencer3> >>> foo = "baz"
<rickspencer3> >>> t
<rickspencer3> (1, 'boo')
<rickspencer3> >>>
<rickspencer3> immutable :)
<rickspencer3> tuple are created with ()
<rickspencer3> lists with []
<rickspencer3> >>> grades = ["A","A-","B","C"]
<rickspencer3> >>> grades
<rickspencer3> ['A', 'A-', 'B', 'C']
<rickspencer3> you index lists and tuples with [] as in most languages
<rickspencer3> >>> wintermonths
<rickspencer3> ('December', 'January', 'February')
<rickspencer3> >>> wintermonths[0]
<rickspencer3> 'December'
<rickspencer3> one sweet thing is that you can start from the back!
<rickspencer3> >>> grades
<rickspencer3> ['A', 'A-', 'B', 'C']
<rickspencer3> >>> grades[-1]
<rickspencer3> 'C'
<rickspencer3> >>> grades[-2]
<rickspencer3> 'B'
<rickspencer3> getting the last item in a list or tuple is so easy
<rickspencer3> to test if a list or tuple (or dictionary for that matter) contains a value (or key for a dictionary), use "in"
<rickspencer3> it's sweet"
<rickspencer3> >>> grades = ["A","A-","B","C"]
<rickspencer3> >>> grades
<rickspencer3> ['A', 'A-', 'B', 'C']
<rickspencer3> >>> "A" in grades
<rickspencer3> True
<rickspencer3> >>> "F" in grades
<rickspencer3> False
<ClassBot> hemanth asked: how immutability increases speed in iterations ?
<rickspencer3> hemanth, I have no idea, I assume it's implementation specific
<rickspencer3> sorry
<rickspencer3> so, let's move on to dictionaries
<rickspencer3> these are really common to use in Python and save tons and tons of time and code
<rickspencer3> a dictionary is basically a hash table, but it's built into the langauge
<ClassBot> virkang asked: So, you could use a tuple with length 1 to make a constant variable, right ? Is that used like that in practice ?
<rickspencer3> virkang, I suppose
<rickspencer3> this has never been something that I cared to do in a Python program
<rickspencer3> there may be other experts that could better answer that for you
<rickspencer3> like I say, I'm not a Python expert, I just know lots of languages ;)
<rickspencer3> so moving on to dictionaries:
<rickspencer3> >>> grades = {"English":"D","Math":"A-","History":"C+"}
<rickspencer3> >>> grades
<rickspencer3> {'History': 'C+', 'Math': 'A-', 'English': 'D'}
<rickspencer3> using {} you can easily create a dictionary
<rickspencer3> again, they don't require certain types to be used for keys and values
<rickspencer3> though some types can't be used for keys
<rickspencer3> like you can't use a dictionary to be a key in another dictionary
<ClassBot> hemanth asked: i was unclear when you said "this makes them a bit faster to iterate and stuff like that"
<rickspencer3> hemanth, well, if you don't need to change the contents of a list, you can get some slight speed boosts in your code by using a tuple
<rickspencer3> because it won't have to support "append" and all this
<rickspencer3> so it can be optimized inside the Python run time
<rickspencer3> at least that's what I think
<rickspencer3> so, dictionaries
<rickspencer3> use 'em, love 'em
<rickspencer3> looks like I screwed up the wiki a but
<rickspencer3> a bit, even
<rickspencer3> I'll add the dictionary stuff in later today
<ClassBot> theopensourcerer asked: So a dictionary is like an associative array?
<rickspencer3> Note that dictionaries don't store their items in any particular order, so indexing into them with [] and some integer doesn't work. You must use [] with a key.
<rickspencer3> >>> grades
<rickspencer3> {'History': 'C+', 'Math': 'A-', 'English': 'D'}
<rickspencer3> >>> grades["History"]
<rickspencer3> 'C+'
<rickspencer3> To change the value associated with a key, simply reassign to the indexed key:
<rickspencer3> >>> grades
<rickspencer3> {'History': 'C+', 'Math': 'A-', 'English': 'D'}
<rickspencer3> >>> grades["History"] = "B-"
<rickspencer3> >>> grades
<rickspencer3> {'History': 'B-', 'Math': 'A-', 'English': 'D'}
<rickspencer3> You can add a key/value pair the exact same way:
<rickspencer3> >>> grades
<rickspencer3> {'History': 'B-', 'Math': 'A-', 'English': 'D'}
<rickspencer3> >>> grades["Gym"] = "F"
<rickspencer3> >>> grades
<rickspencer3> {'Gym': 'F', 'History': 'B-', 'Math': 'A-', 'English': 'D'}
<rickspencer3> To delete a key/value pair, use the global del() function:
<rickspencer3> >>> grades
<rickspencer3> {'Gym': 'F', 'History': 'B-', 'Math': 'A-', 'English': 'D'}
<rickspencer3> >>> del(grades["English"])
<rickspencer3> >>> grades
<rickspencer3> {'Gym': 'F', 'History': 'B-', 'Math': 'A-'}
<rickspencer3> You can retrieve all the keys from a dictionary using the "keys()" function, and all of the values using the values() functions. To retrieve all of the key/value pairs as a list of tuples, use  items().
<rickspencer3> >>> grades
<rickspencer3> {'Gym': 'F', 'History': 'B-', 'Math': 'A-'}
<rickspencer3> >>> grades.keys()
<rickspencer3> ['Gym', 'History', 'Math']
<rickspencer3> >>> grades.values()
<rickspencer3> ['F', 'B-', 'A-']
<rickspencer3> >>> grades.items()
<rickspencer3> [('Gym', 'F'), ('History', 'B-'), ('Math', 'A-')]
<rickspencer3> to see if a dictionary has a certain key, don't look in keys, just look in the dictionary
<rickspencer3> so you go:
<rickspencer3> if Gym in grades:
<rickspencer3>     #do something
<rickspencer3> Remember that a dictionary does not store items in any particular order, so the list of tuples returned by items() may not be in the order that items were created.
<rickspencer3> never count on a dictionary having anything in a particular order!
<ClassBot> abgalphabet asked: dictionary created by {}?
<rickspencer3> abgalphabet, right
<rickspencer3> very similar to json
<ClassBot> theopensourcerer asked: Can you have multi-dimension dictionaries?
<rickspencer3> also like jason, a list is defied with[]
<rickspencer3> theopensourcerer, yes, a dictionary can be a value in another dictionary, but it can not be a key in another dictionary
<rickspencer3> let's skip to OO syntax since someone asked about that at the beginning, and I only have 7 minutes
<rickspencer3> sound ok?
<rickspencer3> if I wanted to define a class called "program2" I do it like this:
<rickspencer3> class program2:
<ClassBot> wharp asked: grades and grades.items() produce the same output, is there a difference?
<rickspencer3> if I want program3 to derive from program2, I do it like this
<rickspencer3> wharp. that's just because of what would be the to_string() funciton in other languages
<rickspencer3> in the interactive interperted when you just type a variable, it tries to print something sensible for you to read
<rickspencer3> in a program grades and grades.items() are very different
<rickspencer3> grades is the dictionary, grades.items() returns a list of the values
<rickspencer3> so, back to classes real quick
<rickspencer3> a couple of points I want to touch on
<rickspencer3> before we break
<rickspencer3> __init__(self):
<rickspencer3> this is a function that is more or less the constructor for a class
<rickspencer3> it is optional
<rickspencer3> unless your super class has one, your subclass has to call the super class's __init__() at some point
<rickspencer3> finally, a point about private members
<rickspencer3> this is a bit odd in Python
<rickspencer3> *there are no private members in Python*
<rickspencer3> this badly breaks encapsulation
<rickspencer3> however, there are two ways around this
<rickspencer3> if you want a private member that you want to be available to subclasses
<rickspencer3> use a single underscore to start the variable name
<rickspencer3> so:
<rickspencer3> self._private
<rickspencer3> it's not really private, but the underscore is a convention
<rickspencer3> if you don't want it to be accessible to sub classes, use two underscores
<rickspencer3> self.__my_very_private
<rickspencer3> python will "munge" the variable name at run time
<rickspencer3> so it won't be accessible
<rickspencer3> well, it kind of will be, but it's harder for other programmers to get at it
<rickspencer3> ok, I am out of time :/
<rickspencer3> sorry, there was more I wanted to go into
<cjohnston> more classes!
<rickspencer3> I would stay, but I have to run to a meeting
<rickspencer3> please let jono know if you would like more or a follow up or something
<rickspencer3> also, #ubuntu-all-devel is a good place for questions
<cjohnston> #ubuntu-app-devel
<rickspencer3> oops
<rickspencer3> sorry, typing and calling :/
* 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
<jakiw_> Whats the coming version of Ubuntu called?
<thekorn> lucid
<jakiw_> Will it be 9.14?
<cjohnston> 10.04
<cjohnston> YY.MM
<jakiw_> Is it really Year and Month???
<Pendulum> yes
<abhi_nav> what is ubuntu-classroom?
<jakiw_> So 10.04 hasnt to be a new OS, just a new version of 9.04?
<cjohnston> the next version.. after 9.10
<binti_> can i re run the python class ?
<abhi_nav> !ubuntu-classroom
<cjohnston> binti_: you mean the logs
<cjohnston> ?
<binti_> yes
<cjohnston> abhi_nav: a place for teaching classess
<cjohnston> binti_: irclogs.ubuntu.com
<abhi_nav> place for teaching Ubuntu?
<abhi_nav> cjohnston: place for teaching Ubuntu?
<jakiw_> So how do I see if an OS is just a new Version or a whole new OS (Like Mac OS 10.4 and 10.5)
<cjohnston> abhi_nav: ubuntu, programming, other stuff
<binti_> thanks ! for the log link
<jakiw_> And when/how do u teach here_
<cjohnston> windows 7 is a new version of windows... 10.5 is a new version of osx....
<RainCT> jakiw_: there is no "new OS", just new releases every 6 months
<abhi_nav> cjohnston: How #ubuntu-classroom is different from #ubuntu?
<cjohnston> jakiw_: look at the link in the topic
<cjohnston> abhi_nav: #ubuntu is a support channel
<MustafaAli> sorry guys I missed the class
<cjohnston> this isnt a support channel
<cjohnston> MustafaAli: get it on the logs. :-)
<RainCT> abhi_nav: #ubuntu is for asking all sorts of questions, this channel is for scheduled sessions with someone teaching some topic related to Ubuntu
<abhi_nav> cjohnston: so I cannt ask question here, I just have to enroll in the current running class? Is class timings are defined?
<MustafaAli> could you please tell me how
<cjohnston> MustafaAli: irclogs.ubuntu.com
<abhi_nav> cjohnston: and RainCT so I cannt ask question here, I just have to enroll in the current running class? Is class timings are defined?
<RainCT> abhi_nav: Yeah. (You can only ask questions about the running class, in #ubuntu-classroom-chat)
<cjohnston> abhi_nav: if you need support help you need to go to #ubuntu... there are classes scheduled here.. that you can attend.. and ask relevant questions to the class
<MustafaAli> thanks for help
<RainCT> And the schedule for the next classes should be somewhere on the wiki
<cjohnston> MustafaAli: yup
<abhi_nav> RainCT: how to get the class schedule?
<cjohnston> abhi_nav: the link in the topic
<abhi_nav> !topic
<ubottu> Please read the channel topic whenever you enter, as it contains important information. To view it at any time after joining, simply type /topic
<abhi_nav> and what about time zones?
<abhi_nav> I am from India
<binti_> !topic
<ubottu> Please read the channel topic whenever you enter, as it contains important information. To view it at any time after joining, simply type /topic
<cjohnston> all times are in UTC
<abhi_nav> then how to know that what that time means India?
<abhi_nav> India is GMT +5.30
<cjohnston> run date -u in the command line
<hemanth> abhi_nav, date -u
<abhi_nav> date -u
<cjohnston> this isnt the command line
<angvp> lol
<hemanth> abhi_nav, Thu Feb 25 17:15:16 UTC 2010
<abhi_nav> ok.
<abhi_nav> UTC uses 24 hours clock?
<cjohnston> yes
<abhi_nav> ok
<abhi_nav> thnx
<cjohnston> !support
<ubottu> The official ubuntu support channel is #ubuntu. Also see http://ubuntu.com/support and http://ubuntuforums.org
<abhi_nav> yah i know ok
<abhi_nav> thnx
<cjohnston> i was testing
<abhi_nav> ok
<hemanth> ha ha
<abhi_nav> :)
<hemanth> date -u +'%I.%M.%S' get it in 0..12 hrs clock
<jakiw_> Damned, I passed the python class today :D
<binti_> irclogs.ubuntu.com 25 feb
<Torikun1> oi
<timbury> Hi, all. Are we waiting for Rick to start?
<pleia2> timbury: that was several hours ago
<pleia2> logs are here: http://irclogs.ubuntu.com/2010/02/25/%23ubuntu-classroom.html
<timbury> Thanks, pleia2. I missed the UTC, I think. ;)
<pleia2> I figured, it happens :)
<timbury> bye.
#ubuntu-classroom 2010-02-26
 * shadeslayer is excited about tomorrow
<cjohnston> tomorrow?
<shadeslayer> cjohnston: eh?
<shadeslayer> cjohnston: oh ill be giving a packaging session ;)
<cjohnston> gotcha
<shadeslayer> :D
<Pendulum> cjohnston: and hggdh is giving a bug q&a
<cjohnston> I knew about hggdh's
<cjohnston> I knew about the PPA thing too..
<cjohnston> just fergot about it
<Pendulum> heh
<cjohnston> since I put it on the calendar..
<cjohnston> lol
<shadeslayer> :P
<cjohnston> shadeslayer: PM...
<shadeslayer> im just writing notes write now on it
<hggdh> what happens with me?
<cjohnston> hggdh: you are doing a bug q&a later
<hggdh> cjohnston: yes, indeed. Adn you wanted to talk with me
<cjohnston> yup.. Got a few?
<hggdh> yes
<cjohnston> PM hggdh
* 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 || Event: Intro to Django - Current Session: Learning Django - Part 3 - Instructor: mhall119|work || Questions in #ubuntu-classroom-chat
<mhall119|work> hello and good afternoon
<mhall119|work> today we're going to do a double class, since I had to cancel yesterday
<mhall119|work> for those of you who misses yesterday, logs from the first two sessions can be found here: https://launchpad.net/classroom-scheduler
<mhall119|work> A quick recap of what we covered yesterday...
<mhall119|work> we made Django Models for Session (a single online class), Course (a collection of classes), and LernidSession (a derivative of Session, that includes a URL for slides)
<mhall119|work> we also configured the Django Admin application so we can view our Models and create instances of them in the database
<mhall119|work> today we finally get to the rewarding part of Django, creating the views and forms that will let our users interact with our models
<mhall119|work> now, before we begin, I made some changes to the application that are going to require you to modify your database
<mhall119|work> If you go to https://wiki.ubuntu.com/mhall119/classes/LearningDjango and scroll down to the section for Day 3
<mhall119|work> you will see my note
<mhall119|work> I'll briefly explain what changes I made and why
<mhall119|work> "class" is a python keyword for defining, what else, classes
<mhall119|work> by calling my application 'class' initially, I caused a conflict with this keyword when I tried to use it as a namescape in python
<mhall119|work> so, I renamed the application to "classroom" to avoid the conflict
<mhall119|work> however, when django created tables in the database, it defaults to naming them "application_model"
<mhall119|work> by changing the name of the application, I also changed the name of the tables it will use
<mhall119|work> so, once you run "bzr pull -r tag:day3.1"
<mhall119|work> you will need to either re-run "python manage.py syncdb", or just download the classroom_scheduler.db I uploaded here: https://wiki.ubuntu.com/mhall119/classes/LearningDjango?action=AttachFile&do=view&target=classroom_scheduler.db
<mhall119|work> I'll give a few minutes for everyone to get their local copy updated to day3.1
<mhall119|work> ask a QUESTION: if you have trouble with this
<mhall119|work> if you update your old database, go into the admin and create a session and course for testing
<mhall119|work> alright, time to get started
<mhall119|work> day3.1 brought in several updates
<mhall119|work> it creates a new view method "schedule_view"
<mhall119|work> along with templates/schedule_view.html
<mhall119|work> and wired them up to the url /schedule/
<mhall119|work> if you again run "python manage.py runserver" you should see something like this: http://www.growingupfree.org:8001/schedule/
<mhall119|work> let's look into classroom/views.py
<mhall119|work> as you can see, schedule_view is very simple
<mhall119|work> Session.objects.filter() returns a list of Session objects from the database
<mhall119|work> you can add key/value pairs to filter() to restrict what is returned, we'll see that in action later
<mhall119|work> next it creates a Context instance, and adds the list of sessions to it
<mhall119|work> it then calls render_to_response, passing it the name of the template and the context
<mhall119|work> render_to_response is a utility method that will render the template into an HttpResponse object for us
<mhall119|work> now look at classroom/templates/schedule_view.html
<mhall119|work> Django templates are HTML with additional markup
<mhall119|work> {% %} blocks are "tags" that perform logic operations
<mhall119|work> {{ }} blocks will inline the value of the contained expression into the HTML
<mhall119|work> Django supplies many built in tags for you to use, and you can see we are using the {% for value in list %} tag here to iterate through our list of sessions
<mhall119|work> you'll also notice that the {{ }} blocks let you properties of a variable as well
<mhall119|work> so {{ session.course.title }} will try to get the title of the course this session is a part of
<mhall119|work> any questions so far?
<mhall119|work> alright, moving on
<mhall119|work> run: "bzr pull -r tag:day3.2"
<mhall119|work> then "bzr diff -r tag:day3.1"
<mhall119|work> here you can see that we are using the {% if %}{% else %}{% endif %} blocks
<mhall119|work> then do exactly what you would expect
<mhall119|work> {% if value %} will be true if value has a non-false value in python
<mhall119|work> so, None, 0 and empty lists will execute the {% else %} block
<mhall119|work> {% else %} is optional
<mhall119|work> now we are currently returning the datatime as python's default string representation
<mhall119|work> but if you look at the schedule on the wiki https://wiki.ubuntu.com/Classroom you see that the date and time are split into 2 columns
<mhall119|work> if you run "bzr pull -r tag:day3.3", then "bzr diff -r tag:day3.2"
<mhall119|work> you will see that i split it into 2 columns, and use template "filters" to format what is displayed
<mhall119|work> again, Django provides a number of built in filters such as "date"
<mhall119|work> filters use the syntax: {{variable|filter:"extra"}}
<mhall119|work> the :"extra" is optional, not all filters need it
<mhall119|work> filters are used to act on the value of a variable, and return a different result
<mhall119|work> Now you should be seeing something like this: http://www.growingupfree.org:8001/schedule/
<mhall119|work> we're starting to look a lot more like the wiki schedule now
<ClassBot> hemanth asked: can the filtering of time and date be done as per the clients local time?
<mhall119|work> I don't think so, if store your time in UTC, you will have to change it to local time before using the filter
<mhall119|work> now, looking back at https://wiki.ubuntu.com/Classroom#Schedule
<mhall119|work> you will see that their times are links to an external site that does give times in several locations
<ClassBot> hemanth asked: can't we get the location of the client and do UTC +/- ?
<mhall119|work> yes, and in fact python has a helpful method of doing this in datetime.timedelta
<mhall119|work> alright, so next we want to turn out time display into a link
<mhall119|work> we can do this in our template itself, but this is used all the time within the Ubuntu wiki when times are displayed, and we don't really want to copy/paste it into every template we make
<mhall119|work> instead, we're going to make our own template filter to do it
<mhall119|work> run "bzr pull -r tag:day3.4"
<mhall119|work> and then "bzr diff -r tag:day3.3"
<mhall119|work> you will see the new file classroom/templatetags/scheduler_tools.py
<mhall119|work> this a file that will contain any number of custom tags and filters
<mhall119|work> we use {% load scheduler_tools %} to include them in our schedule_view.html template
<mhall119|work> then we can get the URL for our link by simply using {{session.start_time|timelink}}
<mhall119|work> if you look at classroom/templatetags/scheduler_tools.py, you see that filters are pretty easy to write
<mhall119|work> they are basically a function that takes the associated variable as an argument (and optionally any "extra" values)
<mhall119|work> and returns a value to be inlined into the HTML
<mhall119|work> @register.filter is a python decorator that registers your filter with Django when {% load %} is called on the file
<mhall119|work> now, just as Filters are exceptionally easy to write, Tags are quite hard
<mhall119|work> which is why I am not covering them in this series
<mhall119|work> but if you are curious, you can view them in the Django source files to see how they are implemented
<mhall119|work> any questions at this point?
<mhall119|work> anyone need a break before we get started on the next hour?
<ClassBot> lsteeger asked: yes. how about 5 mins?
<mhall119|work> okay, we'll take a short break then
<mhall119|work> okay, is everyone back?
<mhall119|work> alright
<mhall119|work> time to get into forms!
<mhall119|work> much like a model, a Form is a collection of Field instances that map python values to HTTP parameters
<mhall119|work> that makes it easy to pass the contents of request.GET or request.POST to a Form, and get the right python data types out
<mhall119|work> form fields will validate their own content, and raise an exception of it can not be converted into the right python data type
<mhall119|work> for example, if you pass "abc" to an IntegerField, it will raise an exception
<mhall119|work> you call form.is_valid() to determine if all the fields in a form contain well formatted values
<mhall119|work> you can then get the corresponding python data type from form.cleaned_data[]
<mhall119|work> Django form fields also contain widgets that are used to create the HTML necessary to build the form
<mhall119|work> so you don't even have to worry about that
<mhall119|work> a full listing of Django's form fields can be seen here: http://docs.djangoproject.com/en/1.1/ref/forms/fields/#ref-forms-fields
<mhall119|work> however, you won't actually have to explicitly use them all the time
* 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 || Event: Intro to Django - Current Session: Learning Django - Part 4 - Instructor: mhall119|work || Questions in #ubuntu-classroom-chat
<mhall119|work> Django provides a helpful ModelForm type, that will create a Form class with all the fields
<mhall119|work> in your Model
<mhall119|work> run "bzr pull -r tag:day3.6"
<mhall119|work> and "bzr diff -r tag:day3.4"
<mhall119|work> (yes, day3.5 is missing)
<mhall119|work> now, you will see a new file: classroom/forms.py
<mhall119|work> this file contains 2 very small classes, SessionForm and CourseForm, both of which extend Django's ModelForm
<mhall119|work> you will also notice that, just like your Models, it contains an internal Meta class
<mhall119|work> in this class, we specify which of our Model definitions we want this Form class to use
<mhall119|work> and that's really all we need
<mhall119|work> we can now call form = SessionForm(request.POST)
<mhall119|work> we can also bind an instance of our model to the form: form = SessionForm(instance=mysession, data=request.POST)
<mhall119|work> if we have a bound instance, we can call form.save() to apply all of the HTTP values to the instance, and save the instance to the database
<mhall119|work> this really saves a lot of boiler plate code you would need to write in other frameworks
<mhall119|work> we can also pass the bound form instance to a template for display
<mhall119|work> run "bzr pull -r tag:day3.7"
<mhall119|work> now you will have 2 new files, classroom/templates/session_view.html and classroom/templates/course_view.html
<mhall119|work> they are largely the same, so we'll just look at classroom/templates/session_view.html for now
<mhall119|work> by default, forms will render themselves as a series of table rows and cells
<mhall119|work> you can also use {{form.as_p}} or {{form.as_ul}} to have it render as a series of <p> or <ul><li> tags
<mhall119|work> notice that it does not create the <form> or <table> tags itself, this makes it easy to add thing before or after the form fields
<mhall119|work> such as submit and reset buttons
<mhall119|work> now if you look at classroom/views.py you will see 2 new view functions
<mhall119|work> session_view and course_view
<mhall119|work> both take an additional id argument
<mhall119|work> again, the view functionality is similar between them, so we'll only look at session_view
<mhall119|work> first we determine if the session_id is 0, this lets us know if we are creating a new session, or modifying an existing one
<mhall119|work> if it's 0, we just create an empty Session() instance
<mhall119|work> otherwise, we use the helper method get_object_or_404 to see if a session by that id exists in the database
<mhall119|work> if it doesn't exist, this method will raise an exception, and Django will forward the request to an error page saying that the Session for that id can't be found
<mhall119|work> next, we check to see if this is an HTTP POST request.
<mhall119|work> if it is a POST, then we need to process the submitted values from our form
<mhall119|work> we create a new SessionForm, bound to both the Session instance we created and the POST data that was submitted
<mhall119|work> calling is_valid() will return true if all of the form's fields contain good data
<mhall119|work> if it's all good, we call save() to apply the data to the record in the database
<mhall119|work> if it's not a POST request, we are just going to display the form to the user
<mhall119|work> we create a SessionForm that is only bound to the session instance
<mhall119|work> and add that to a Context object for our template
<mhall119|work> and then call render_to_response again
<mhall119|work> finally, let's look at urls.py
<mhall119|work> we added 2 new entries there, for session_view and course_view
<mhall119|work> these use a slightly more complex url pattern than we've previously used, so lets take a closer look at them
<mhall119|work> r'^session/(?P<session_id>\d+)'
<mhall119|work> this will match /session/#, where # can be any digit
<mhall119|work> or multiple digists
<mhall119|work> as long as it's a number
<mhall119|work> 123 works
<mhall119|work> 12abc doesn't
<mhall119|work> it then assigns the matching value to session_id, which is passed to the view function
<mhall119|work> so, to view session #1, use the url /session/1
<mhall119|work> to view session #2, use /session/2
<mhall119|work> and to get a form for creating a new session, use /session/0
<mhall119|work> that is because our view is treating session_id==0 as a special case
<ClassBot> ryanprior45 asked: where do I type /session/1 ?
<mhall119|work> sorry, that would be at the end of your URL, like http://127.0.0.1:8000/session/1
<ClassBot> hemanth asked: does dw+ match words and digit, is it the same logic?
<mhall119|work> any valid regular expression will work
<mhall119|work> \d\w+ would work
<mhall119|work> to match 1abc
<mhall119|work> for example
<mhall119|work> we also added links to the schedule view to take you to the correct URL
<mhall119|work> it should look something like this: http://www.growingupfree.org:8001/schedule/
<mhall119|work> if you look at classroom/templates/schedule_view.html you will see how we're doing this
<mhall119|work> now, since views are mapped to url patterns in urls.py, you won't necessarily know what the URL pattern will look like when you're writing your templates and views
<mhall119|work> to accomodate this, Django has a powerful reverse-lookup ability that when given the name of a view, can give you a URL that it is mapped to
<mhall119|work> so we use {% url session_view session.id %} to lookup a URL pattern named "session_view" that takes a single argument
<mhall119|work> Django then locates the URL pattern, and inlines the argument value you passed
<mhall119|work> so {% url session_view session.id %} will return /session/1 if session.id==1
<mhall119|work> if we wanted to change you URL pattern to '^classroom/session/(?P<session_id>\d+)'
<mhall119|work> then {% url %} would return /classroom/session/1
<mhall119|work> this makes Django applications very portable, as you can write them without knowing (or caring) how the urls will ultimately be mapped in a given project
<mhall119|work> any other questions on what we just covered?
<mhall119|work> alright
<mhall119|work> now, while Django is smart enough to validate the format of data, it's doesn't know enough to determine if the value makes logical sense
<mhall119|work> for example, when adding a new Session, it wouldn't make sense to create one with an end_time in the past
<mhall119|work> you can do this in your view, but if the validation is something that should always exist, it's best to add it to the Form
<mhall119|work> that way, is_valid() will run your custom validations, and return false if any one of them raises an exception
<mhall119|work> run "bzr pull -r tag:day3.8.1"
<mhall119|work> now if you look at classroom/forms.py you will see that I've added a method to our Form classes
<mhall119|work> Django looks for methods named "clean_$fieldname" for each $fieldname in the form
<mhall119|work> since we are using ModelForms, that means for every field name in the Model itself
<mhall119|work> so when it is validating the format of the data in 'end_time', it will look for a method called 'clean_end_time', and call it for the final cleaned value
<mhall119|work> in there, I retrieve the current clean value for the field, and if the Session is new, check that the 'end_time' value exists sometime in the future
<mhall119|work> if it doesn't, an exception will be raised.  is_valid will return false, and the user will be directed back to the form page, only now the text of the exception will be displayed above the 'end_time' field
<mhall119|work> now, that's an easy way for validating an field's value by itself
<mhall119|work> but often times you need to validate a field's value when compared to another field's value
<mhall119|work> for example, it wouldn't make sense for a session's end_time to come before it's start_time
<mhall119|work> to do that, we need to implement a 'clean()' method on the form, that will be called after all the 'clean_$fieldname' methods are called
<mhall119|work> run "bzr pull -r tag:day3.8.2"
<mhall119|work> and "bzr diff -r tag:day3.8.1"
<mhall119|work> now you will see the clean() method on each of our Form classes
<mhall119|work> the first thing I do is get the values for start_time and end_time
<mhall119|work> notice that I'm using self.cleaned_data.get('start_time'), rather than self.cleaned_data['start_time']
<mhall119|work> that's because of 'start_time' failed validation, it won't be added to self.cleaned_data, but Django will continue to call all clean and clean_fieldname methods anyway
<mhall119|work> so we need to account for that field not existing in cleaned_data
<mhall119|work> calling cleaned_data.get('start_time') will return None if it doesn't exist
<mhall119|work> calling cleaned_data['start_time'] will raise a KeyError
<mhall119|work> next I check that both 'start_time' and 'end_time' are not None, and then if 'end_time' comes before 'start_time', raise an exception
<mhall119|work> don't forget to return self.cleaned_data, otherwise you won't be able to use it in your view, or when calling form.save
<mhall119|work> any questions so far on forms validation?
<mhall119|work> alright
<mhall119|work> in tag:day3.9 I just added an extra table to the schedule view for listing courses, there isn't really anything in it that we haven't already discussed
<mhall119|work> by now, we can see our data, we can add data, and we can modify data
<mhall119|work> but, we can't delete it!
<mhall119|work> it's time to implement that
<mhall119|work> run "bzr pull -r tag:day3.10"
<mhall119|work> you will get the new files classroom/templates/session_delete.html and classroom/templates/course_delete.html
<mhall119|work> you will also get 2 new view fuctions in classroom/views.py
<mhall119|work> let's look at those first
<mhall119|work> since we don't need to think about new (unsaved) records when deleting, we just call get_object_or_404 to retrieve the instance of the record we want to delete
<mhall119|work> now, it's polite to double check that the user wanted to actually delete something
<mhall119|work> it's also good policy to not delete things on a GET request
<mhall119|work> so, if it is a GET request, we first show them a page (course_delete.html or session_delete.html) to warn them about what they are about to do
<mhall119|work> this page builds a <form> that will POST back to the view if the user confirms the deleting by clicking the submit button
<mhall119|work> when the view sees a POST method, it will then delete the instance from the database, and redirect the user back to the schedule view
<mhall119|work> if you look at the view templates for Session and Course, you will see the link added to the bottom to delete that instance
<mhall119|work> by now your application should look like this: http://www.growingupfree.org:8001/schedule/
<mhall119|work> you can add, edit and delete your sessions and courses to your heart's content
<mhall119|work> and in only 4 hours time too!
<mhall119|work> now, there is still much to implement, like access control, a better looking template, etc
<mhall119|work> and I plan to offer more classes in this series to cover those topics after Ubuntu Opportunistic Developer Week (all of next week)
<mhall119|work> this is also a live project: https://launchpad.net/classroom-scheduler
<mhall119|work> so development will certainly continue on it, even after these classes are over
<mhall119|work> well, my time is almost over, are there any questions on today's classes, or any previous ones?
<mhall119|work> any suggestions or wants for future classes?
<mhall119|work> okay, well the IRC logs are linked on the launchpad page now
<mhall119|work> and as always, you can email me if you have any other questions; mhall119@ubuntu.com
<ClassBot> hemanth asked: pre preparation list for the class? {suggestion}
<mhall119|work> I only had a basic syllabus outline this time
* 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
<mhall119|work> I will try to prepare a list of required apps to have installed before future classes
<mhall119|work> is that what you were asking for?
<malev> mhall119|work: I'm sorry, where do you say are the logs?
<mhall119|work> https://launchpad.net/classroom-scheduler has links to all 4 hours
<mhall119|work> hemanth: I will make sure I have better setup material next time
<malev> mhall119|work: and.. is there a wiki?
<hemanth> mhall119|work, ok :)
<mhall119|work> now you guys have a working, useful Django application, start hacking on your own now!
<mhall119|work> malev: only a syllabus outline: https://wiki.ubuntu.com/mhall119/classes/LearningDjango
<malev> mhall119|work: cool!! thanks!
#ubuntu-classroom 2010-02-27
* 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 || Current Session: Bugs Q&A - Hggdh - Instructor:  || Questions in #ubuntu-classroom-chat
<hggdh> OK, folks, sorry for the delay
<hggdh> I will answer questions you may have about bugs -- mostly bug triaging, so please do ask them
<hggdh> BTW, thanks go to pleia2 for tracking me down ;-)
<hggdh> er.
<hggdh> I do really welcome questions, so please *do* ask them.
<hggdh> the channel is open -- I asked the mods to open it so that you all would be able to ask them questions
<pleia2> hggdh: if I had some free time and wanted to get involved, where would I start?
<hggdh> the best would be to join us on #ubuntu-bugs. It is very easy to help, and we do not require much:
<hggdh> (1) interest in helping
<hggdh> (2) interest in *learning* -- you do not need to know all about a programme/package to help, you can learn on the fly
<hggdh> (3) very important is respect -- treat the people that open the bugs nicely. This does wonders to help *us*
<hggdh> finally, reading http://wiki.ubuntu.com/HelpingWithBugs will allow you to find the way
<hggdh> some people worry about how much time they will spend on triaging. There is *no* requirement. If one in every 1,000 Ubuntu users look at ONE bug
<hggdh> per day... we will be sooo happy...
<Pendulum> hggdh: just want to let you know that you are not forgotten, I'm just reading your link before I figure out if I have any questions :)
 * hggdh waits...
<hggdh> no hurry, no hurry ;-)
<Pendulum> okay, I have a question!
<Pendulum> I'm looking at the How to Triage page
<hggdh> and?
<Pendulum> and it's talking about starting with simple untriaged bugs. is that something that's going to be readily apparent (which are relatively simple bugs to start with) or more something that will require a bit more mentoring from someone on the bug squad?
<hggdh> it is usually better for one to start by, er, browsing the NEW/INCOMPLETE bugs, looking for something understandable
<hggdh> which is to say, something that the new triager can follow. Usually this is on a programme that is used by the triager
<hggdh> there is no requirement -- in fact, I would rather suggest *not* to do -- to get the first bug and try to find out what it is about
<hggdh> so: browse. Find something you can understand, or follow. Go from there -- and always, *ALWAYS* remember we are at #ubuntu-bugs to help you
<hggdh> we don't bite. We don't yell. We *do* help :-)
<pleia2> from the perspective of a package maintainer, would it be appropriate to ask the bugs team to help out on some bugs?
<hggdh> yes, it would. This is usually done via the Bug Days, when a specific package is looked at.
<pleia2> great :)
<hggdh> Although I do not know how it went, just today a maintainer asked for a Bug Day for gnome-power-manager, for example
<hggdh> of course, every day is a bug day for us...
<pleia2> so is it typically maintainers who propose a day for their package?
<hggdh> I would say half the times. We also propose them ourselves, based on some simple metrics
<pleia2> so something like "wow, this important package has tons of bugs, let's work on it!"
<hggdh> like "it looks like we need to pay attention on package X"
 * pleia2 nods
<hggdh> yes. Maybe because one of us also uses this package, and there are bugs bothering... (we are humans, after all)
<pleia2> :)
<hggdh> by the way, sometimes we are asked something like "I know C (or Haskell, or whatever). How can I help triage bugs?"
<hggdh> well.
<hggdh> *before* I can code a fix, I first have to understand what *is* the problem.
<hggdh> It does not necessarily follow that all bugs are code issues, nor that all bugs need a developer-type person to fix it
<hggdh> and this is perhaps very important: we have to be able to differentiate between cause and consequence
<hggdh> for example, (a bit technical) a SEGV is usually a *consequence* of a bad memory usage
<hggdh> for one to fix it, one has to find the real cause (following the -- bad -- example, where the memory was incorrectly overlaied/freed/whatever)
<hggdh> in triaging, we are trying to identify the *causes*
<hggdh> so we have to parse the reporter's language, looking for the real issue
<hggdh> also -- sometimes we get a bug in a different language. The official language for bugs is English, BTW.
<FreeFall_> Is there som kind of list when these Bug Days are?
<hggdh> Bug Days usually happen every Thursday, and are announced on a series on mailing lists. Usually we do not project more than 2 weeks in the future
<hggdh> and Thursday, I mean *your* Thurday, from 00:01 to 23:59. Anywhere is the world.
<Pendulum> < Acar> Question: what will we need to report a bug?
<hggdh> try to clearly explain your issue; always mention the Ubuntu version; if it is in a programme, you usually can click on Help/Report a Bug
<hggdh> and -- please -- wait.
<hggdh> We are few, doing triage, and there are a lot of bugs to be looked at.
<hggdh> Or, better, come in and help us with the backlog ;-)
<hggdh> there is an important difference between bugs and support
<hggdh> we accept package/programme bugs -- i.e., the documentation is wrong, the results are wrong, it suddenly crashes
* 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
<hggdh> we do not accept support requests -- e.g. "how do I connect to my internet provider"?
<pleia2> thanks hggdh!
<hggdh> welcome
<Pendulum> thank you hggdh!
<prakash_irc> hi there.. i just read that there was some session about python on this channel couple of days back..
<prakash_irc> As i missed it, i would like to know if i can get any notes or video or audio of that session.
<prakash_irc> Anybody knows about any site where i can find it?
<lvfadeaway_> Im ready to learn! Somebody teach me something
<ddecator> lvfadeaway_, https://wiki.ubuntu.com/Classroom#Schedule
<lvfadeaway_> i saw that schedule but that all looks pretty advanced. Where is the beginner course?
<kermiac> lvfadeaway_: https://wiki.ubuntu.com/UbuntuOpportunisticDeveloperWeek/IntroToPythonForTotalBeginners
<kermiac> lvfadeaway_: also http://irclogs.ubuntu.com/2010/02/25/%23ubuntu-classroom.html
<enli1> The google calender schedule timing at http://is.gd/8rtIi is my local time or GMT?
<enli1> nvm its UTC
<enthdegree>  
<shadeslayer> manuelciosici: yes!
<shadeslayer> :P
* 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 || Current Session: How to effectively use a PPA and providing updated packages - Instructors: rowinggolfer, shadeslayer || Questions in #ubuntu-classroom-chat
 * shadeslayer gets notes in order
<shadeslayer> apparently rowingolfer couldnt make it
<shadeslayer> * Hi there , first of all thank you for attending this session and welcome to #ubuntu-classroom,lets see how many people we have here.Raise your hands and say hi! in #ubuntu-classroom-chat :D
<shadeslayer> Ah nice we have a good turn out!
<shadeslayer> * Ok,first a bit of intro about my self, Im Rohan Garg aka shadeslayer on the irc,im a 19 years old and live in Gurgaon,India.You can find out all about me at : www.identi.ca/shadeslayer and www.launchpad.net/~rohangarg
<shadeslayer> ok before we begin i want all of you to register on launchpad and start making PGP keys
<shadeslayer> !pgp
<shadeslayer> ok heres the link : https://wiki.ubuntu.com/GPGKey
<shadeslayer> please follow the instructions there,upload your PGP keys to the ubuntu key server and sign the Ubuntu Code of conduct
<shadeslayer> If you have any problems please say so in #ubuntu-classroom-chat
<shadeslayer> Ok here we go!
<shadeslayer> * So what are PPA's basically?
<shadeslayer> * PPA's are Personal Package Archives,which means you can upload all sorts of apps and launchpad builds the binaries for you!
<shadeslayer> * You can accomplish that via pbuilder too ( more on that at the end of the class ),but LP ( launchpad ) goes a step further and gives you your own repository ( repo ),limited to 1GB,to publish your own packages!
<shadeslayer> I really hope you guys have started on GPG keys ;)
<shadeslayer> !binary | abhi_nav
<shadeslayer> abhi_nav: Apps are written in C++,Java ,etc, we need to convert them to binaries to run them as Computers just understand 0's and 1's
<shadeslayer> abhi_nav: The code is basically characters which have to be converted to 0's and 1's
<ClassBot> abhi_nav asked: what is the difference between apps and binaries? what the binary is actually?
<shadeslayer> ok thats done :)
<ClassBot> abhi_nav asked: one which is published on lp is my public key. but where is my private kay? how to find it?
<shadeslayer> abhi_nav: you can list your keys with :  gpg --list-secret-keys
<shadeslayer> * I think thats pretty amazing,dont you?
<shadeslayer> * So just highlighting some of the amazing repos we have on LP are :
<shadeslayer>     * Mozilla's Daily PPA : https://launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
<shadeslayer>     * Chromium Daily PPA : https://launchpad.net/~chromium-daily/+archive/ppa
<shadeslayer>     * Kubuntu Backports PPA : https://launchpad.net/~kubuntu-ppa/+archive/backports
<shadeslayer>     * Kubuntu Beta Backports PPA : https://launchpad.net/~kubuntu-ppa/+archive/beta
<ClassBot> abhi_nav asked: does this same as that of convertin a c program to hex when writing to ic?
<shadeslayer> abhi_nav: yes!
<shadeslayer> abhi_nav: its basicall Machine code..
<shadeslayer> *basically
<ClassBot> ben72 asked: what are ppa:s usually used for? bugfixes I've seen but what else? are the Ubuntu maintainers of every package using their own personal ppa:s for the packets they maintain?
<shadeslayer> ben72: anything and everything,they can hold packages of the latest KDE versions,apps that are frequently used by the community,apps you have helped developed and want to provide to the ubuntu community
<shadeslayer> * All of us use these repos on a day to day basis and over this session ill be teaching you how to use PPA's to provide users with more up to date packages
<shadeslayer> * What i will NOT be covering are libraries and new packages,those are much more complex and have to be taken up at a later stage.
<shadeslayer> As i have learnt over the past few weeks... very painfully :P
<ClassBot> enthdegree asked: Can't PPAs be used for the spread of malicios packages?
<shadeslayer> enthdegree: of course! As you will learn,your PPA page contains a explicit warning about this issue
<shadeslayer> * So lets get started with the actual building of a package!
<shadeslayer> * Oh and if you have a question just shout QUESTION : <Type your question here> : in #ubuntu-classroom-chat ;)
<shadeslayer> * So first of all to upload to a PPA you need a LP account,make one quickly at : https://launchpad.net/+login
<shadeslayer> Ill wait for a few mins before continuing :)
<shadeslayer> ok cool
<shadeslayer> * So after you do that you need to sign the ubuntu COC,which is needed to enable PPA's,in order to sign the COC you need to have a gpg key,you can read about making a gpg key here : https://help.ubuntu.com/community/GnuPrivacyGuardHowto : now upload your keys to the ubuntu key server : gpg --send-keys --keyserver keyserver.ubuntu.com <KEY-ID> : and download the coc and sign it and then upload it back ;)
<shadeslayer> The signing part is achieved by : gpg --sign ubuntucoc
<shadeslayer> where ubuntucoc is the Ubuntu Code of Conduct you downloaded
<shadeslayer> You should be able to download the COC from your launchpad profile page
<shadeslayer> A ssh key is not needed as LP operates on FTP
<shadeslayer> OK it might take a while for the keyserver to accept your key
<shadeslayer> Continuing....
<shadeslayer> * Now install ubuntu-dev-tools with : sudo apt-get install ubuntu-dev-tools
<shadeslayer> These are needed for packaging your source and uploading them
<shadeslayer> Heres a better description : https://wiki.ubuntu.com/UbuntuDevTools
<ClassBot> abhi_nav asked: How to know is that ubuntu-dev tools are already installed?
<shadeslayer> abhi_nav: well if apt-get install will print out some thing like : ubuntu-dev-tools already instaled
<shadeslayer> *installed
<shadeslayer> Ok has everyone installed ubuntu-dev-tools ?
<shadeslayer> Should i continue?
<shadeslayer> * Ok now we need to authorize ubuntu-dev-tools to LP, open a terminal and type : manage-credentials create -c CONSUMER --level 2 : where CONSUMER is your LP id.
<shadeslayer> for eg : * Ok now we need to authorize ubuntu-dev-tools to LP, open a terminal and type : manage-credentials create -c rohangarg --level 2 : where CONSUMER is your LP id.
<shadeslayer> use the read ALl non private data option
<ClassBot> ben72 asked: level of access? should I choose "Change anything" on the webpage?
<shadeslayer> ben72: see my last line
<shadeslayer> Dont forget to press Enter in the terminal after youre done
<shadeslayer> * Now type : manage-credentials create -c ubuntu-dev-tools -l 2
<shadeslayer> * That gives access to ubuntu-dev-tools to LP.
<shadeslayer> * Again we will only give access to read non-private data
<shadeslayer> * Now back to your home page.
<shadeslayer> * Now click Create New PPA
<shadeslayer> * Give the PPA a name and description!
<shadeslayer> You should be able to do this only if your gpg key was accepted
<shadeslayer> and the COC was accepted
<shadeslayer> CAUTION : You cannot change your LP url after publishing packages to your LP
<shadeslayer> for eg: my LP url was : www.launchpad.net/~rohan16garg and i got it changed to www.launchpad.net/~rohangarg
<shadeslayer> Anyone having problems?
<shadeslayer> ok Continuing
<shadeslayer> * Now onto the exciting part,for my demo here ill be using a fairly simple package to build,something we all use everyday,usually everybody gives a presentation with deb helper,but i just thing thats a bit old school
<shadeslayer>   So im going to package choqok a kde microbloging client
<ClassBot> abhi_nav asked: I have gnome. so will thim e.g. kde package work for me?
<shadeslayer> abhi_nav: yes!
<shadeslayer> abhi_nav: you will not be building the package locally but LP will build it for you!
<shadeslayer> Speeding things up a bit
<shadeslayer> * Now choqok is already in the repos so open a terminal and make a new directory in your home like this : mkdir my_dir_name : ill be using packaging as the dir name.
<shadeslayer> * Now the official repositories dont always have the latest builds of packages and features users want are in SVN/GIT repositories and they generally dont want to compile from sources,so theyre in a fix.
<shadeslayer> * The best workaround for K/X/Ubuntu users are PPA's which host loads of packages.
<shadeslayer> * So lets get cracking on ours ;)
<shadeslayer> Should i continue?
<shadeslayer> * First of all we need to tell dput which uploads our packages where they are supposed to go,configure yours by reading this : https://help.launchpad.net/Packaging/PPA/Uploading : and as a example here's my .dput.cf : http://paste.ubuntu.com/385120/
<shadeslayer> * So all done?
<shadeslayer> * Ok,now you need to enable source repositories in you apt sources,just do this via synaptic or kpackagekit and tick the checkbox : [ ] Sources : You will need to reload your sources.list after this
* 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
* 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 || Current Session: How to effectively use a PPA and providing updated packages - Instructors: rowinggolfer, shadeslayer || Questions in #ubuntu-classroom-chat
<shadeslayer> ok were back ;)
<shadeslayer> now i have only 40 mins left
<shadeslayer> so ill speed it up
<shadeslayer> * Now we need to export some options to our .bashrc,so open a terminal and type : nano .bashrc
<shadeslayer> * Now add these lines to the end : export DEBFULLNAME='Your_name_here' and export DEBEMAIL='your_email_id_here'
<shadeslayer> * Save the file using Ctrl+O and hit Ctrl+X and then y to exit
<shadeslayer> * Now we need to load the options we specified using : source .bashrc
<shadeslayer> heres a example : http://paste.ubuntu.com/385199/
<shadeslayer> NOTE : you need just the debmail and debname
<shadeslayer> Continuing....
<shadeslayer> * Save the file using Ctrl+O and hit Ctrl+X and then y to exit
<shadeslayer> * Now we need to load the options we specified using : source .bashrc
<shadeslayer> * Now cd to the packaging folder with : cd packaging
<shadeslayer> * Now since were working on choqok we need its debian/ folder for packaging,so do : apt-get source choqok
<shadeslayer> * This downloads the orginal tarball and the choqok folder with the deian/ folder in it
<shadeslayer> Done?
<shadeslayer> Ill have to continue
<shadeslayer> * Now open a file manager and go to ~/packaging/
<shadeslayer> * Now enter the choqok folder there and copy the debian directory to ~/packaging
<shadeslayer> * Now you can remove the choqok folder and all the other files in ~/packaging excpet the debian/ folder
<shadeslayer> * Now Download the choqok sources from here : http://choqok.gnufolks.org/download/ to ~/packaging
<shadeslayer> Done?
<shadeslayer> Make some noise in chat! :P
<shadeslayer> Ok im continuing
<shadeslayer> * Untar the tarball by using : tar xvfz filename.tar.gz
<shadeslayer> * Now rename the tarball to choqok_0.9.4.orig.tar.gz
<shadeslayer> * Ubuntu packaging versions follow this criteria : packagename_version.orig.tar.gz
<shadeslayer> * For GIT/SVN packages we use : packagename_version+gitdate.orig.tar.gz like : choqok_0.9.4+svn20100227.orig.tar.gz
<shadeslayer> * Now change the name of the untarred folder to choqok-0.9.4
<shadeslayer> * Again folders follow : packagename-version+svndate
<shadeslayer> * The svndate part is optional,its used only if we are packaging svn checkouts or git clones
<shadeslayer> In packaging names are the most important part!
<shadeslayer> Make sure you get these absolutely correct
<shadeslayer> * Now in the terminal cd to the choqok folder : cd ~/packaging/choqok-0.9.4
<shadeslayer> * Now Since were building this for lucid initially and then backporting it to karmic,the first entry in debian/changelog should be a lucid entry
<shadeslayer> * So run : dch -D lucid -v 0.9.4-0ubuntu1~ppa1
<shadeslayer> * What that command does is make the entry in debian/changelog and opens a debian/changelog in nano,with a * bullet for a description
<shadeslayer> * These * represent any stuff you changed in the debian/ folder
<shadeslayer> * Since this a new upstream release we write : * New Upstream Release
<shadeslayer> * Close the editor with Ctrl+X
<shadeslayer> The session is a bit slow so im just going on ;)
<shadeslayer> * Now open the contro file with : nano debian/control
<shadeslayer> * The control file lists the build deps of choqok,and other important info we need to build binaries
<shadeslayer> * Now the latest Standards-Version is 3.8.4 not 3.8.1 so first of all we check if its compliant (it is) and we change it to 3.8.4
<shadeslayer> * Next thing we change is the Home page url,it should read : http://choqok.gnufolks.org , so we change that
<shadeslayer> * Everything else is fine as is
<shadeslayer> ben72: yes,thats perfectly fine
<ClassBot> ben72 asked: I get a warning for lucid I guess. is that ok?
<ClassBot> ben72 asked: what is the Standards-Version btw?
<shadeslayer> ben72: http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Standards-Version
<shadeslayer> * Now we need to document what we changed, so do : dch -a in the choqok-0.9.4 folder
<shadeslayer> * This command opens up debian/changelog with another bullet, Type : Changed Homepage url to http://choqok.gnufolks.org after the bullet
<shadeslayer> * Close nano with ctrl+X and type dch -a again
<shadeslayer> * This will put another bullet in debian/changelog, after the Bullet type : Bumped standards version to 3.8.4
<shadeslayer> * And were almost done!
<shadeslayer> I use dch -a to just to put the bullets,you can just use nano debian/changelog to do it,but dch -a always does it correctly with equally spaced bullets
<shadeslayer> * Any Questions uptill now?
<shadeslayer> * OK good!
<shadeslayer> * Now in the choqok-0.9.4 folder run this : debuild -S -sa
<shadeslayer> * What this command does is that it makes 3 files : choqok_0.9.4-0ubuntu1~ppa1.diff.gz , choqok_0.9.4+svn20100223-0ubuntu1~ppa1.dsc , and choqok_0.9.4+svn20100223-0ubuntu1~ppa1_source.changes in the packaging directory
<shadeslayer> * Now cd to the packaging directory
<shadeslayer> * Now were going to upload the choqok_0.9.4+svn20100223-0ubuntu1~ppa1_source.changes which contains all the info about the changes we made
<shadeslayer> * So we use : dput ppaname choqok_0.9.4+svn20100223-0ubuntu1~ppa1_source.changes , where ppaname is the name of the ppa you configured in dput.cf
<shadeslayer> * Thats it! Now your upload is in the LP build queue waiting to be built!
<shadeslayer> Oh be sure to install cdbs and debhelper!
<shadeslayer> I think i forgot to mention that you need to move the debian folder into the choqok folder
<shadeslayer> [ Extra Hacks! ]
<shadeslayer> * Now if your impatient like me,you can build your package in a few mins instead of waiting for LP builders to do their job.
<shadeslayer> * Install pbuilder using : sudo apt-get install pbuilder
<shadeslayer> * Creat a pbuilderrc  like this one : http://paste.ubuntu.com/385143/ : change the distro and the mirror to a local mirror to create the chroot quickly
<shadeslayer> * Ok,now cd to ~/packaging and type : sudo pbuilder build choqok_0.9.4+svn20100223-0ubuntu1~ppa1.dsc
<shadeslayer> * This builds your package in a clean chroot,you can even use this to find out if youve missed out on Build deps for new packages ;)
<shadeslayer> [ New Packages ]
<shadeslayer> * New packages are a bit hard to package,since they have no debian/ dirs in them,you have to use dh_make -e <your_email_id_here> to create the debian/ folder and the stuff that goes inside it
<shadeslayer> * For eg i packaged a brand new KDE app recorditnow in my PPA,and found that it required a unpackaged lib : libjoschy : for creating the package
<shadeslayer> * So i had to first package the joschy libs and then recorditnow,and this took me a entire 3 days to figure out ;)
<shadeslayer> * What i would suggest is package stuff already in the repos and then switch to new stuff!
<shadeslayer> So  that wraps it up folks!
<shadeslayer> I had a wonderful time
<shadeslayer> Ill be answering questions in chat
<shadeslayer> Also i forgot to mention that you also need pkg-kde-tools,so im sorry
* 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
<shadeslayer> back to normal
#ubuntu-classroom 2010-02-28
<hamza>  when i click on "computer", all of my system devices except for "filesystem" has disappeared.  when i click on disk utility, they show up there :S it has been a problem since whenever i plug in a usb, it does not show up on my desktop or nautilus, and i have to go through disk utility to access it.  anyone have any ideas?? :(
<hamza>  no system devices (partitions, usb, cd/dvd drive) are showing in my nautilus, but they show in disk utility, any fix?
<nizarus> hamza, this is not a support channel
<nizarus> see #ubuntu or you loco channel
#ubuntu-classroom 2011-02-23
<c2tarun> How can I request for a classroom session? I want to request a session on fixing FTBFS bugs. As feature freeze is close, those who are familiar with packaging can help by fixing FTBFS bugs. Thank you
<c2tarun> How can I request for a classroom session? I want to request a session on fixing FTBFS bugs. As feature freeze is close, those who are familiar with packaging can help by fixing FTBFS bugs. Thank you
#ubuntu-classroom 2011-02-24
<hakermania> I need a basic knowledge of the files debian/install and debian/dirs. This is mabe for #ubuntu-packaging, but it's not answering after about an hour, and #ubuntu-motu suggested me this channel. In debian/install I will place all the commands that copy/move/rename etc files and in debian/dirs all the dirs that need to be created for my package (e.g. /usr/share/myapp). Is this right?
<hakermania> thx for the much needed help.
<doudouhightech> test
#ubuntu-classroom 2011-02-25
 * jcastro taps the mic
<jcastro> hello, anyone there?
<bjf> jcastro, nope
<jcastro> alright!
<jcastro> 5 minute warning!
<jcastro> how's everyone doing today?
<sconklin> oh, heh
<sladen> afternoon
<rickspencer3> hi all
<jono> hey all
<jono> two mins :-)
 * rickspencer3 closes irc channels and email
<jono> I see my Facebook post worked :-)
<shah> yes
<shah> i have some question about Ububut
<shah> i have some question about Ubuntu
<mhall119> shah: support questions should be asked in #ubuntu
<mhall119> this channes is used for teaching
<mhall119> channel
<jcastro> let's just give it one more minute for the stragglers
<rickspencer3> jcastro, do I have voice?
<jcastro> yeah, the bot will kick in and set all the modes
<monish> What are we going to learn today?
<sladen> MootBot: depends what you ask rickspencer3
<rickspencer3> is it out yet?
<rickspencer3> j/k
<ardchoille> jono: what facebook page? I want to follow it
<rickspencer3> classbot is not responding to me yet
<kilian_> HELL SHIT YEAH!!!!!!
<jono> ardchoille, http:://www.facebook.com/ubuntulinux
<ardchoille> thanks
<kilian_> HELL SHIT YEAH!!!!!! lol
<rickspencer3> jcastro, shall we start?
<jcastro> yeah, why don't you introduce yourself while I sort out the bot
<rickspencer3> sure
<rickspencer3> hi all
<popey> it is here
<rickspencer3> thanks for coming
<rickspencer3> I am Rick Spencer
<kilian_> HELL SHIT YEAH!!!!!! lol
<rickspencer3> hmm
<maco> kilian_: please watch the language, and also don't talk in here, keep it to -chat
<rickspencer3> oh, there he goes
<rickspencer3> hi all
<rickspencer3> so, starting again
<rickspencer3> I am Rick Spencer
<rickspencer3> I'm the current Director of Engineering for Ubuntu Engineering
<rickspencer3> I've been doing this particular role since last June, I think
<rickspencer3> before that I was Engineering Manager for the Desktop for a couple of years
<rickspencer3> good times ;)
<rickspencer3> anyway, I'll try using Classbot ...
<rickspencer3> see if there are any questions
<rickspencer3> feel free to ask me about anything
<jcastro> ok folks
<jcastro> line up the questions in #ubuntu-classroom-chat
<jcastro> remember to preface them with QUESTION: so the bot can pick them up
<jcastro> for example
<jcastro> QUESTION: How are you today?
<rickspencer3> jcastro, should I go now?
<jcastro> By all means!
<rickspencer3> coolio
<rickspencer3> basically, my job is to help all the people who create the Ubuntu Community Open Source Distros to ship the Ubuntu, Ubuntu Server, ARM images, etc...
<rickspencer3> but you can ask me anything, I'll do my best to answer
<rickspencer3> nothing? ok, cool, ttyl!
<rickspencer3> :)
<rickspencer3> jcastro, classbot isn't replying to me, can you paste in questions?
<jcastro> QUESTION: Do you know when we'll see Ubuntu Monospaced font... and will it be ready in 11.04?	
<rickspencer3> good question
<rickspencer3> I know it is being worked on, but I'm not aware of the exact schedule
<rickspencer3> I'll gladly chase that down
<jcastro> sladen is the font guy
<rickspencer3> you might ask sladen, as I believe he is responsible for that
<rickspencer3> thanks for steelign my thunder jcastro ;)
<jcastro> Question: How do we contribute monetarily to Ubuntu?
<rickspencer3> interesting question
<rickspencer3> for direct donations ... I believe the web site used to have a "donate" button somewhere
<rickspencer3> sladen pasted this link for me: http://www.ubuntu.com/community/get-involved/donate
<rickspencer3> thanks sladen
<rickspencer3> however, while that is a good way to do it
<rickspencer3> there are other ways to support the project in terms of making it financially viable
<rickspencer3> for instance, if you work somewhere that uses Ubuntu on servers or desktops, maybe they need a support contract?
<rickspencer3> maybe convince your friends that a Ubuntu1 account would be really useful
<rickspencer3> a lot of people help a lot by marketing Ubuntu
<rickspencer3> getting more users who might need services or who might contribute in other ways to the project helps make it sustainable
<rickspencer3> I'm sure there are other great ideas as well
<rickspencer3> jcastro, more questions?
<jcastro> QUESTION: I am newbie to Ubuntu developer community. How can i start contributing? I mean which part do i start with?
<rickspencer3> well ...
<rickspencer3> there are lots of ways that people first get involved, it tends to depend on what you are good at and passionate about
<rickspencer3> it's really great that you want to contribute, joining hte Ubuntu community had a hugely positive impact on my life, I hope you find the same for yourself
<rickspencer3> so, some ways to get started ...
<rickspencer3> if there is an app that you really love, a good way to get started is to help a team with bug triaging
<rickspencer3> care and feeding of bug reports, helping users to get information that developers need, that can really make you invaluable to a developer community and has a low barrier of entry
<rickspencer3> if you are a developer, you can pick off smallish bugs and offer back merge proposals with bug fixes
<rickspencer3> you don't have to know everything about how an app works to fix some of the smaller bugs
<rickspencer3> and most developers are really happy to get merge proposals, and will help you learn more and more about the app you are contributing to
<rickspencer3> you could also try your hand at writing a small but useful app, and work to get it into Ubuntu via Debian, another good way for someone with some coding skills to go
<rickspencer3> if you are more interested in evangelism and such, you can join or start a loco
<rickspencer3> there are also things like helpign with ISO testing
<rickspencer3> those are some thoughts that come to mind, but I guess the most important thing is to just find something and start, be open to feedback, and have fun
<rickspencer3> jcastro, are there more questions?
<jcastro> Question: Can you do more to make the Ubuntu Store more widely known? I have used Ubuntu since 2005 and just now learned of the store.
<rickspencer3> if by Ubuntu Store, you mean Software Center ....
<rickspencer3> hmmm, it's been in Ubuntu for about 3 or 4 versions
<jcastro> I think he means the place to buy tshirts
<rickspencer3> oh
<jcastro> and other assorted swag!
<rickspencer3> hmmm
<rickspencer3> good to know that is important to you
<rickspencer3> I think I should talk to our marketing team and let them know that there is interest in making that more disoverable
<rickspencer3> jcastro, more questions?
<jcastro> QUESTION: Will ATI-graphics get better driver support in the future versions? Or is the available information still too limited to advance? - (Comparing against Nvidia hardware)
<rickspencer3> this is multi-faceted
<rickspencer3> from my perspective there are two avenues for support for ATI
<rickspencer3> most people are thinking about the closed-source binary driver
<rickspencer3> since it's not Open Source, we're all pretty much at the mercy of the developers of that driver for the quality of the driver itself
<rickspencer3> I think people like bryce, tselliot, and RAOF do a great job of working with them so the developers can work with our schedule
<rickspencer3> and we do work to make them easy to test and install
<rickspencer3> so, I suspect that will get better
<rickspencer3> but then there are Open Source drivers
<rickspencer3> I believe that there are some projects to produce open source drivers, but of course, creating a driver is non-trivial, and without a lot of support from the hardware vendor, it's hard to stay up to date
<rickspencer3> so, until graphics chip vendors start emulating Intel and creating their drivers in the open, there is little we as a community can do to help them improve
<rickspencer3> jcastro, more questions?
<jcastro> [QUESTION] if someone is interested in packaging is MOTU still the prefered path or should someone focus on a particular package and work on per package upload rights.
<rickspencer3> oooh
<rickspencer3> well, tbh, I don't feeling comforatable speaking for motu on this
<rickspencer3> not that it's a contentious issue, I'm  just not sure it's for me to say
<rickspencer3> I guess would say that if you have a very strong interest in a specific package, you should go that route
<rickspencer3> hold on, it looks like my good friend maco wants to add something, and she *can* speak for motu ;)
<rickspencer3> <maco> rickspencer3: it all depends on what you want to end up doing. if you have a specific interest, then PPU is fine. if you want to make sure that the quality level of the entirety of packages that don't have specific caretakers is high, then motu. personal preference
<rickspencer3> ok, so consistent with my POV, which is good ;)
<rickspencer3> jcastro, are there more questions?
<jcastro> Question: As regards to upgrading in the future to Ubuntu 11.04 (Not alpha release) can I keep my current Gnome (2.30.2) version if I wish?
<rickspencer3> well, you can easily keep 2.3x
<rickspencer3> I'm not sure what specific GNOME version you will get
<rickspencer3> but what you *will* get is something that the desktop team is calling "classic desktop"
<rickspencer3> so in GDM you will be able to choose between the desktop that you currently know, and Unity
<rickspencer3> for some people, classic will be their only option, as Unity requires 3D hardware support
<rickspencer3> if you have specific questions about supporting specific GNOME package versions, the people in #ubuntu-desktop are generally very helpful, assuming it's not a Thursday ;)
<rickspencer3> jcastro, more questions?
<jcastro> QUESTION: will Ubuntu be participating in GSOC-2011 and how can one make his application strong enough to be selected as a student developer ?	
<rickspencer3> good question
<rickspencer3> we have discussed this
<rickspencer3> I would like us to participate, and do a really awesome job
<rickspencer3> in terms of being selected, I'm probably not a great person to ask, as I have only been involved in looking at a couple of applications
<rickspencer3> so, take this advice with a grain of salt
<rickspencer3> but ... I looked for someone who seemed like they would stick to it for the whole project
<rickspencer3> so that my investment as a mentor would pay off
<rickspencer3> and also, I looked for projects that I personally found interesting, so that I would be a better mentor
<rickspencer3> so, if I were you, I would ask people who have been succesfully chosen what htey think, but I would think of a possible mentors, and projects that they would be interested in
<rickspencer3> and then I would talk to them about my application (via IRC most likely) before I made the application
<rickspencer3> jcastro, are there more questions?
<jcastro> Question: Rick Spencer are you in favor of removing X11 from Ubuntu gfx stack?
<rickspencer3> I think the question is about "should Ubuntu move to Wayland"
<rickspencer3> well, I don't have a lot of emotional attachment either way
<rickspencer3> I think the Ubuntu community should stay focused on:
<rickspencer3> 1. what is the latest and greatest in open source
<rickspencer3> 2. what is the best thing for our users
<rickspencer3> and let that answer the question
<rickspencer3> jcastro, more questions?
<jcastro> QUESTION: Would it be right to say that Ubuntu, Kubuntu and Edubuntu differs the way as Ubuntu differs from debian OS? and other ones like openSUSE or redHat	
<rickspencer3> hmmm
<rickspencer3> can you tell me more about your question? do you mean technical differences, communities?
<rickspencer3> no?
<jcastro> I'll ask for a follow up
<jcastro> QUESTION: Considering Software Center is written in Python (and some other tools am guessing). Is Ubuntu planning on opening a spot for a Python developer. At the moment you are accepting only C++ programmers (according to web site).
<rickspencer3> <ardchoille> rickspencer3: I have used Ubuntu, Kubuntu and Edubuntu and they seem to be essentially the same save for the desktop environment
<rickspencer3> jcastro, let me answer the othe one first
<jcastro> oops sorry, let's hold on that
<rickspencer3> sure, I'll get back to it
<rickspencer3> so ...
<rickspencer3> Ubuntu is based on Debian
<rickspencer3> so, there should be a lot of similarity between Ubuntu and Debian at the plumbing and infrastructure level
<rickspencer3> please be clear, that Debian is part of the foundation of Ubuntu
<rickspencer3> without Debian, Ubuntu could not be as good as it is (at least imnsho)
<rickspencer3> so, similarities between Debian and Ubuntu, that's by design and a compliment to Ubuntu
<rickspencer3> (again, imnsho)
<rickspencer3> in terms of Kubuntu, Edubuntu, *buntu ...
<rickspencer3> I think the relationship is a bit less straightforward
<rickspencer3> certianly the infrastructure (repositories, package format, etc..) is shared
<rickspencer3> kernels and most of the plumbing is shared
<rickspencer3> and obviously the dekstop environments are way different
<rickspencer3> but I don't see Kubuntu, for example, as downstream from Ubuntu, more like a sister project
<rickspencer3> </pontifications>
<rickspencer3> <jcastro> QUESTION: Considering Software Center is written in Python (and some other tools am guessing). Is Ubuntu planning on opening a spot for a Python developer. At the moment you are accepting only C++ programmers (according to web site).
<rickspencer3> in general, and this is a generalization, not a rule ...
<rickspencer3> in general, in Ubuntu we write applications in Python, libraries in vala, and the system is, of course, in C
<rickspencer3> but of course, the libraries and applications that other upstreams create are written in the languages they choose
<rickspencer3> so ...
<rickspencer3> this means that, in general, I look for devleopers who have demonstrated that they are awesome in some language, but can learn to do anything in other languages
<rickspencer3> because you never know what you might need to do
<rickspencer3> so, to answer your specific question, I expect there will be positions opened from time to time that require awesome Python chops
<rickspencer3> but since we hire for specific roles, the status of the web site just means that we currently only have open positions to support things that require C++
<rickspencer3> jcastro, more questions?
<jcastro> QUESTION: Will the SC be able to manage software updates on Natty?	
<rickspencer3> no
<rickspencer3> that's still update manager
<rickspencer3> I'm not sure what the plans are there for the future though
<rickspencer3> please feel free to contribute to any blueprints on this topic for Natty +1 if it's an area you are passionate about
<rickspencer3> jcastro, are there more questions?
<rickspencer3> (whilst we wait, I've been PM'ed with a couple of questions)
<rickspencer3> please note that I'm not in a good position to answer suppor questions, I usually suggest #ubuntu for those
<rickspencer3> and also, to ask a question, please use #ubuntu-classroom-chat, and start your question with "QUESTION:"
<jcastro> waiting on questions
<jcastro> about 10 minutes
<rickspencer3> while we're waiting, can I get on a soapbox?
<rickspencer3> <soapbox>
<rickspencer3> thanks for coming her and asking questions
<rickspencer3> one thing that I sincerely hope is that anyone who wants to join the Ubuntu community in whatever way suits their interests
<rickspencer3> can do so
<rickspencer3> there are a lot of ways to contribute, but I understand that it can be hard to see how to get started at times
<rickspencer3> Canonical pays a lot of developers to work on Ubuntu and to support Open Source
<rickspencer3> helping people contribute in whatever way is part of the job description
<rickspencer3> Canonical employees are part of the Ubuntu community, afterall
<rickspencer3> so what that means for you is that you shouldn't feel that must wait for invitation to events like this to communicate and ask questions
<rickspencer3> irc and mailings lists are great resources
<rickspencer3> </soapbox>
<rickspencer3> jcastro, are there more questions while i was boring people with my speach?
<jcastro> jcastro: Question: Ubuntu has the titlebar buttons moved to the left. What is being planned for the right side of the titlebar?	
<jcastro> 5 minutes left!
<rickspencer3> a design question! not exactly my forte, but I can say what I think
<rickspencer3> I believe that what ended up happening was that with the global menu (titlebars appearing on the top panel) ...
<rickspencer3> the right hand side is not all indicators
<rickspencer3> I remember there was talk about indicators that were offered by specific applications, but I haven't seen a spec or any work related to that recently
<rickspencer3> there is an ayatana mailing list that might be a good place to discuss that
<rickspencer3> jcastro, more questions?
<jcastro> jcastro: QUESTION: will the upgrades to ubuntuone-client that are in 11.04 make there way to 10.10?
<jcastro> last one!
<rickspencer3> hmmm
<rickspencer3> I don't know for sure
<rickspencer3> I think that would be a hard sru (Stable Release Update) to get through
<rickspencer3> Ubuntu has a strong ethic of being predictable, not changing the user experience during a stable release
<rickspencer3> and that seems like a pretty big change, and would be risky
<rickspencer3> perhaps it could be made available in backports or a PPA
<rickspencer3> I believe there is a #ubuntuone or similar where you might find someone to discuss that with in more detail, though
<rickspencer3> jcastro, was that really the last one?
<rickspencer3> I can do 1 more, if there is one
<jcastro> QUESTION: QT will be included in Natty yes?, but since nokia has announced it is moving to Windows Mobile, isnt QTs future abit uncertian?	
<rickspencer3> dang it, out of time!
<rickspencer3> j/k
<rickspencer3> so, QT is not in Ubuntu by default
<rickspencer3> of course Kubuntu is a different matter
<rickspencer3> however, it is easy to install
<rickspencer3> for instance if you install version of Unity that uses Qt, Qt will be installed for you
<rickspencer3> in terms of the uncertainty, speaking for myself ...
<rickspencer3> yeah, I think we should wait and see
<rickspencer3> however, Qt is a strong toolkit
<rickspencer3> with great tools
<rickspencer3> I expect it to stick around and be well supported, even if someone takes a fork
<rickspencer3> should be interesting!
<rickspencer3> ok, I think that's time
<rickspencer3> everyone ....
<jcastro> yep
<jcastro> thanks everyone for showing up!
<rickspencer3> please please please don't consider me inaccessible
<rickspencer3> you have my irc nick, feel free to use it!
<rickspencer3> that's what I'm here for
#ubuntu-classroom 2011-02-26
<kaydsoft> hi
<farr311_> #ubuntu
<farr311> #ubuntu
<biami> anyone knows any GOOD game on Ubuntu?
<AndrewMC> !best > biami
<ubot2> biami, please see my private message
<biami> what?
<madfox> hey
#ubuntu-classroom 2011-02-27
<techbreak_> hi everybody :)
<techbreak_> can anybody help me with the lernid ? whats the diff between chatroom and classroom ?
<jmarsden> techbreak_: This is a "chat room" (really an IRC channel) where classes are held.  But there is no class right now.  For support on Ubuntu, /join #ubuntu or /join #ubuntu-beginners
<techbreak_> jmarsden, :) thanks
<jmarsden> techbreak_: You're welcome.
<sumit> hi friends
<Abhishek_Singh> where can I find logs of this channel?
<Abhishek_Singh> from tomorrow the ubuntu developer week is going to start
<Abhishek_Singh>  so all ubuntu users will really be benefited if they scroll through some of the logs
<Abhishek_Singh> personally I feel that most of the attendees won't be able to attend each and every session
<Abhishek_Singh> so please can someone ask the administrators to maintain a log of the main chat on this channel
<serfus> Abhishek_Singh, there will be logs
<serfus> don't worry
<Abhishek_Singh> can you please give their links?
<serfus> for some reason the wiki page doesn't says so but i'm sure there will be
<serfus> let me check
<serfus> BTW, this channel is always logged in irclogs.ubuntu.com
<Abhishek_Singh> http://irclogs.ubuntu.com/2011/02/27/%23ubuntu-classroom.txt
<Pendulum> Abhishek_Singh: there will be logs linked on the wiki page specifically for each session after it happens as well (at least that's what we usually do, although I think it might take a little longer than normal this week, they will go up so that you can look at logs just for a specific class)
<Abhishek_Singh> Pendulum: thanks for your information :)
<serfus> like i thought. tough it should be mentioned on the wiki page
<breakneck21_ulti> date -u
#ubuntu-classroom 2012-02-20
<jrgifford> this has got to be one of the most boring development releases ever.
<jrgifford> :P
<jrgifford> (from a testers point of view)
#ubuntu-classroom 2012-02-21
<wildman_> anyone there
<wildman_> hello is there anyone here could use a little help here
<pangolin> wildman_: join #ubuntu for support.
<wildman_> am i on here alone or am i in the right place to ask for help
<wildman_> i need some net work help for ubuntu 11.10
<pangolin> wildman_: #ubuntu has 1400+ users please type /join #ubuntu
<wildman_> ok i will try that
#ubuntu-classroom 2012-02-22
<shashank> hi to all......
#ubuntu-classroom 2012-02-23
<JokerInDisguise> Hey guys. Is there any resource to learn libunity API using C?
<pangolin> #ubuntu-unity might know
<JokerInDisguise> ok, thanks.
#ubuntu-classroom 2012-02-24
<Guest33453> vous Ãªtes la
<benonsoftware> Guest33453: Hello, this channel is for classroom lessons, please do to #ubuntu for help
#ubuntu-classroom 2012-02-25
<ghu15del> :D
* 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 || Current Session: Ubuntu Women Career Days: Community Manager - Instructors: akgraner
<Cheri703> Hello everyone, and welcome to another session of Ubuntu-Women Career Days!
<Cheri703> Today's session will be featuring the amazing Amber Graner and her work as a Community Manager
<Cheri703> (as well as other positions I believe)
<akgraner> Thanks Cheri703!
<Cheri703> Please ask any questions in #ubuntu-classroom-chat with the preface of QUESTION:
<Cheri703> Take it away akgraner. :)
<akgraner> Hi everyone!
<akgraner> Thanks for joining me today, I appreciate you taking time out of your weekend to be part of this session.
<akgraner> I wanted to take a few minutes of your time and talk how being part of the Ubuntu Community helped me improve skills I learned in other roles (both working and volunteering) to get the job(s) I have today.
<akgraner> There should be time at the end of the session for Q&A but feel free to ask for clarification during the session as well - just ping in -chat and ask your questions so I'll stop for a moment and look there
<akgraner> Currently I work for Linaro (http://www.linaro.org/) as their  User Experience and Community Specialist.
<akgraner> Those of you who may have military experience  or know someone in the military probably understand the term "specialist",  but for those who are curious it basically means that what I focus on or specialize a particular area or topic and in this case it's various aspects of community and its growth and management.
<akgraner> I'm also a freelance writer and journalist who contributes to Ubuntu User Magazine and other Linux New Media publications as well as one of the current co-authors of the Offical Ubuntu Book (Pearson).  Currently under revision for Edition 7 set to hit shelves after the 12.04 release.
<akgraner> Does that mean I claim to know all there is to know about community? Nope.  Does anyone? Nope.  However, I learn something new everyday and I try to share that knowledge daily.
<akgraner> So how did I get here?
<akgraner> A question I get asked a lot is if I am a developer. I'm not. I once declared I never wanted to be, but now I am learning a little more about that side of things, but not enough yet to say, "I write code."  One day maybe.
<akgraner> The other thing I get asked is if I am a sys-admin the answer is no there as well.  (Unless you count admin'ing my own website and *I* don't count that)
<akgraner> The next question always shocks me no matter how many times it's asked.
<akgraner> "Well then how did you get a job in FOSS?"
<akgraner> o.O  Yep I get asked that *a lot*!
<akgraner> I usually just smile, and remind them just because I don't write code doesn't mean that I am not technical. Nor does it mean I am not capable of understand or learning the concepts and processes behind FOSS nor does it mean I can't get involved and make a difference.
<akgraner> And you know what the coolest thing is about that?
<akgraner> The same holds true for anyone who wants to be involved in an open source project or find a job in open source.  However, before I get into that let me give you a little background.
<akgraner> Community and volunteer-ism is something I grew up learning about - with out realizing how important of a role it played.
<akgraner> I grew up in a rural town in Western North Carolina.  We had a volunteer fire department, schools that were K-12th grade in the same building (when I started school - that later changed), and a church or some sort every few miles it seemed.
<akgraner> As I mentioned, I grew up learning how to be part of a community.
<akgraner> Whether it was raising money to buy the next fire truck, pitching in to help out a neighbor, playing a team sport, or being on the student council--the opportunities for learning about being a volunteer abounded.
<akgraner> Not just being a volunteer but also growing into various leadership roles along the way.
<akgraner> And isn't that what we do in FOSS, we start at one part of the community and grow into another.
<akgraner> However, we didn't look at it that way, we just looked at it as what everyone did to make the community a success.
<akgraner> Everyone did their part and over the years roles changes and we gained more responsibilities as we were accountable for more things.
<akgraner> This was just the way things worked.  I had never even heard of the term meritocracy .
<akgraner> Oh, and if you don't think everything you do in rural American isn't transparent think again.  Everyone knows what everyone else is up to, and there are even those who will be more than happy to tell anyone about it at anytime.  "Bless their hearts"  So being part of a community shaped who I am at a very young age.
<akgraner> My interest in computers was shaped in the mid to late 80's as well.
<akgraner> ok so I am telling my age here ;-)
<akgraner> It was also during this time I got my first computer - a TI-99, then when I was in 8th grade (about the age of 13) my school was given a TRS-80 model III, and as luck would have it my Uncle who was a local Dr. also got one for his office.  I loved it!  If I wasn't on the computer at school, I was on the one my Uncle had in his office.
<akgraner> After I graduated High School (12th grade) and completed 1 year of college, I joined the Army to become an Intelligence Analyst (96B for the curious).
<akgraner> I was stationed at Ft. Bragg, North Carolina  and had the opportunity to work on conflicts such as Panama, Liberia, Deployed to the First Gulf War and Haiti it was a wild ride to say the least (and that was in just 4 years time).
<akgraner> so what's all this have to do with a join in open source - you'll see :-) I promise...
<akgraner> I also got to test all the latest automation that was being developed for the intelligence agencies.  Not only that I helped test J-Stars as well, as it replaced the older SLAR technology during the First Gulf War. (Note here for my efforts in testing this technology in deep attack missions I was awarded a Bronze Star)  It was also in the Army where I was first introduced to Unix then Linux via slackware an some testing that the 82nd
<akgraner> Airborne Division was experimenting with.
<akgraner> If you've ever read Ret. Gen. Hugh Shelton's Book, "Without Hesitation" (He's on the board of Red Hat) this was also about the time he learned about Linux as well.  He also goes into more detail about how similar the military is to FOSS as well.
<akgraner> So I haven't exactly been a stranger to technology.
<akgraner> In later roles - I helped test other systems, trained people at the companies I worked for on the latest desktop technologies, and even helped with a few manual conversions over the years.
<akgraner> However, somewhere a long the way, I got the impression I wasn't technical enough to work in FOSS...go figure.
<akgraner> WRONG!
<akgraner> I mentioned all this because I talk to people almost everyday who question what they can offer open source companies.
<akgraner> If you have something to offer a project chances are you have something to offer a company and its community.
<akgraner> Don't discount any of your experience - regardless of whether you got a paycheck to do it or you volunteered.  Work is work regardless of if you can deposit money for having done the work.
<akgraner> There were other things that I did in my roles as a Director of Sales and Catering, or that of a General Manager that helped out on this journey as well.  I also did volunteer work for schools, churches, and other non-profit agencies.  All these skills and knowledge help me today.
<akgraner> So I can't stress enough, INCLUDE all the skills you've learned, regardless of where or how you learned them.
<akgraner> Don't sell yourself short.
<akgraner> Remember you're amazing and talented and let people know that about you.
<akgraner> Fast forward to 2009 when I started using Ubuntu.
<akgraner> I started blogging about that experience, then I joined the Ubuntu Women Project and the rest seems like history to me.
<akgraner> Rikki Endsley of Linux Pro Magazine, happened to see my blog, and started following me.  Then one day they asked me to write for them.
<akgraner> So it's important, if you are writing a blog, do the best job you can and let your personality shine through.  Don't be afraid to promote your blog, and let others know what you are interested in.
<akgraner> sorry about that  - the joys of running a development release
<akgraner> My machine just had a hard lock and I had to reboot
<akgraner> sorry about that  - the joys of running a development release
<akgraner> My machine just had a hard lock and I had to reboot
<akgraner> From the time Rikki saw my blog and I was working with them, I was asked to review not only Jono Bacon's Art of Community, but the Official Ubuntu Book
<akgraner> so it's important that you let people know what you are interested in, and what you like to do, as well as what your non FOSS skills are  - chances are still skills that are needed on FOSS projects and companies.
<akgraner> Another really important moment came after I joined the Ubuntu Women Project
<akgraner> I asked "Do I have to become a motu to contribute?"
<akgraner> s/motu/MOTU
<akgraner> I think there were some giggles at that question - the answer is absolutely NOT, but that's all I heard people talk about was development (yes I know it's important, but so are other things)
<akgraner> Ubuntu Women Project member and author of several Drupal books,  Emma Jane Hogbin told me once, don't think everyone who joins and open source project has to become a developer. Use the skills you have, learn the ones you want, and just be yourself.  AWESOME advice.  And one I often use when people tell me they think they have to be a developer to be a success in FOSS.
<akgraner> From there I started figuring out where I fit in an learning everything I could
<akgraner> I know I drove pleia2 nuts at times - I asked so many questions
<akgraner> But she was kind enough to point me to the documentation and encouraged me to figure some things out on my own.  While it wasn't always easy it's paid off more than I can tell you
<akgraner> so learn by doing, don't ask people to give you answers all the time - I promise it will pay off for you.
<akgraner> So we are going to fast forward to UDS-P last November
<akgraner> It was there I had the opportunity to interview with Linaro and from there I started with them later than month
<akgraner> I can tell you that by applying those suggestions that Jono gives in Art of Community to various teams I was on, it helped.  He also lists many qualities to look for in a Community Manager in that book.  From the time I reviewed the book I started seeking ways to improve those qualities in myself.
<akgraner> Find a mentor.  Find someone who does what you want to do.  Find out how they got there, how they do what they do, then set a course for self-improvement.
<akgraner> I also asked some trusted CEOs I know to look at my CV and had the red-ink it so to say.  The advice they gave me was perfect.  Limit it to one page and create a webpage for all the other details.  Organize it in logically categories and include a link on the CV or resume.
<akgraner> Also they said - my CV was flat it did not represent the me all of them knew - wow!  I had some work to do, but in the end it was well worth the critique.
<akgraner> So there you go that in a nutshell is how I got to be where I am now - I had a lot more to go into but I can save that for another day.
<akgraner> We've extended the session by 30 minutes - so if you have any questions for me - ask a way!
<akgraner> Oh and Thank you for sticking around!
<ClassBot> pleia2 asked: Did you have any trouble transitioning to what you were doing "for fun" to having it as a job? (articles now have deadlines, more intensive CM stuff now that it's your job)
<akgraner> Great question!  Thanks pleia2.
<akgraner> Short answer is yes.
<akgraner> I put in a lot more hours for the "fun" stuff that is for sure, and I still wanted to be able to do everything I was doing on the volunteer side, and do all the for pay stuff.  That is a disaster waiting to happen
<akgraner> The cool thing is on the Ubuntu side we have a CoC and LCoC that gives guidelines for stepping down or transitioning out of leadership roles.  For example, I am not able to do as much with the News Team anymore and that's hard for me, but pleia2 you and others have stepped up.
<akgraner> For work, I use many of the same tools we have in the community, and I had to set limits on when I could be in IRC and set clear working hours etc.  Working in a diversified company where everyone works from home takes some getting used to, and some discipline.
<akgraner> Are there any more questions?
<ClassBot> pleia2 asked: Do you have specific suggestions for resources for people looking to get involved on the community side of Ubuntu?
<akgraner> Oh wow  - where do I begin :-)
<akgraner> I always tell people - women especially join the Ubuntu Women Project - and remind them it's a great springboard into not only the Ubuntu Community but the greater FOSS communities as well.
<akgraner> I recommend people attend Ubuntu Open Week and any of the other Ubuntu Weeks/Days
<akgraner> if they can't join them then at least check out the logs
<akgraner> Also participate in UDS - remotely at least once.  Hit all the community sessions.  The first one I attended remotely I had to get up at 2am and participated from the comfort my home.
<akgraner> I made notes and jotted down all the stuff I wanted to learn more about
<akgraner> Also check out developer.ubuntu.com, cloud.ubuntu.com, loco.ubuntu.com
<akgraner> see if there is a LoCo Team near you and get involved with that
<akgraner> also if you don't have a Launchpad account, sign up, sign the Code of Conduct, it's a great (if not sometimes frustrating) way to improve the process and learn about electronically signing things if you don't already know
<akgraner> Also check out what the Ubuntu Community Team at Canonical are working on - follow at home with Jono Bacon, he tells what all his team is doing on there from testing to translations to app development and more
<akgraner> Use System Testing on your computer and test your machine and give the feedback to the Ubuntu Friendly Team
<akgraner> also we have the Beginners Team and more.
<akgraner> Ok that's the start of where I tell people to look - I don't give them all that at once but I do ask a few questions then based on their answers I point them in a direction - I also send people to Ubuntu.com as well.  :-)
<akgraner> Anything else?
<akgraner> Oh before I forget - Don't look at involvement in the Ubuntu Community as a ladder with Steps 1 through whatever you have to complete- look at it as a lattice that you can move from point to point in all directions based on your growing interests and skills.
<ClassBot> There are 10 minutes remaining in the current session.
<akgraner> Thanks everyone  - I hope this was encouraging and helpful - Remember Don't Sell Yourself Short!  You are amazing and you have amazing skills to offer!
<akgraner> Thanks for participating!  If you want you can email me at akgraner [at] ubuntu [DOT] com.
<akgraner> Have a great weekend!
<ClassBot> There are 5 minutes remaining in the current session.
<ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/02/25/%23ubuntu-classroom.html
* 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 ||
<zhuang> could anyone tell me why upon logging in ubuntu 11.10 with scrotwm selected from the dropdown tab, I freeze at the login screen?
#ubuntu-classroom 2013-02-19
<Malsasa> Hello, lintian says copyright-file-contains-full-gpl-license, i have read lintian page about it and debian policy manual, but i don't understand. What should I fill in copyright file? I have filled it with copy of GPL text...
<xnox> There is no class held at the moment. For upcoming lessons schedule please see http://is.gd/8rtIi
#ubuntu-classroom 2013-02-20
<RZAFC1> the webpages in firefox have some images that are blueish when I browse. i just install ubuntu 12.04 on my system any idea what's wrong?
<JoseeAntonioR> RZAFC1: please, go to #ubuntu for support
#ubuntu-classroom 2013-02-22
 * genii-around checks the fridge
<ketan985> hello everyone
#ubuntu-classroom 2014-02-21
<dc602003> quit
<chottu> i am using internet behind proxy server i am unable to clone repository form git and unable to checkout from svn
<chottu> i observed i am unable to ping websites how shoul i configure then??
<PaulW2U> chottu: if you're looking for support then #ubuntu is where you should ask your question
<chottu> ok thanq
#ubuntu-classroom 2015-02-17
 * Frugals goes sit in a corner
<geek1on1> Isn't a classroom? No sessions currently in progress?
<jose> as you read
<jose> nothing scheduled at the moment
<geek1on1> All right...
<geek1on1> thanx buddy...
#ubuntu-classroom 2015-02-21
<Psyke> lol
<Psyke> who is the teacher=
<Psyke> thers no teatcher
<Psyke> ROFLOL
<Psyke> ubuntu fake
<Psyke> UBUNTU IS FAKE  VAPORWARE
<Psyke> FAKE INTERNET
<Psyke> COPS DIRTY LIL SECRET
#ubuntu-classroom 2016-02-26
<sebbu> nhandler, this channel will be closed too ? the wiki on the Learning page still refer to it
<sebbu> there's no learning promotion anymore ?
<nhandler> sebbu: Most of the stuff has moved to http://ubuntuonair.com/ . If any wiki pages do reference this channel, feel free to update them. But yes, I will be closing down this IRC channel as well.
<sebbu> https://wiki.ubuntu.com/Learning
<sebbu> that one
