GetStarted

Revision 1 as of 2011-03-01 14:11:31

Clear message

Dev Week -- Getting Started with Ubuntu Development -- dholbach -- Mon, Feb 28th, 2010

   1 [16:00] <dholbach> HELLO MY FRIENDS!!!
   2 [16:00] <c2tarun> hello dholbach
   3 [16:00] <AbhijiT> hi
   4 [16:00] <MTecknology> howdy
   5 [16:00] <dholbach> It's Ubuntu Developer Week and it's starting RIGHT NOW!
   6 [16:00] <saket> hi
   7 [16:00] <awsominator> Start
   8 [16:01] <techbreak> dholbach, :) start
   9 [16:01] <acarpine> hello!
  10 [16:01] <dholbach> ok, so first things first
  11 [16:01] <monish001> hello!
  12 [16:01] <dholbach> can all kinds of chat and questions please please please (with sugar on top) go to #ubuntu-classroom-chat please?
  13 [16:01] <dholbach> if you haven't joined that channel yet, can you please do that now?
  14 [16:01] <mkumar> hello !
  15 [16:02] <dholbach> to review the schedule and get more information about the sessions, check out https://wiki.ubuntu.com/UbuntuDeveloperWeek
  16 [16:02] <dholbach> that's the only page you need to bookmark for now :)
  17 [16:03] <dholbach> excellent, let's get started
  18 [16:03] <dholbach> if you have any kinds of questions, please ask in #ubuntu-classroom-chat
  19 === hakimsheriff_ is now known as hakimsheriff
  20 [16:03] <dholbach> and please make sure you prefix it with QUESTION:
  21 [16:03] <dholbach> ie: "QUESTION: What is your dog's name?"
  22 [16:03] <dholbach> etc
  23 [16:03] <dholbach> it makes it easier to figure out what exactly the question is :)
  24 [16:04] <dholbach> first of all I'd like to thank all speakers - we have a pretty divserse schedule and it's going to be an awesome week
  25 [16:04] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/02/28/%23ubuntu-classroom.html following the conclusion of the session.
  26 [16:04] <dholbach> my name is Daniel Holbach, I live in Berlin and have been part of the Ubuntu Community for ~6 years
  27 [16:04] <dholbach> my primary interest is and always was the developer community
  28 [16:05] <dholbach> so it's my honour today to talk about "getting started with Ubuntu Development" and you'll be stuck with me for the next 2 hours :)
  29 [16:05] <dholbach> in the first hour I'd like to give you a very broad overview of Ubuntu development, Ubuntu's infrastructure, give you an idea of our processes, how we interact with other projects, etc.
  30 [16:06] <dholbach> I won't answer all the questions you have, but I hope I can give you an idea how all the bits and pieces fit together
  31 [16:06] <dholbach> in the second hour I'll help you get your development environment set up
  32 [16:06] <dholbach> so for the rest of the week you should be all set up and ready to go
  33 [16:06] <dholbach> do we have any first questions already?
  34 [16:06] <dholbach> (if not, I'd say we get cracking now :-D)
  35 [16:07] <dholbach> <20QAAV4RZ> QUESTION: I'm a total newbie with lernid - do I need to hear something or is all done via chats?
  36 [16:07] <dholbach> 20QAAV4RZ, yes, it will be done all via chat - some of the sessions will be more tutorial style, so you might have to do a few things in the terminal
  37 [16:08] <dholbach> ok, let's get cracking :)
  38 [16:08] <dholbach> as you all know Ubuntu is made of thousands of packages
  39 [16:08] <dholbach> libraries, tools, apps, games, etc
  40 [16:08] <dholbach> they're written in many different languages, and they're all available as source packages
  41 [16:09] <dholbach> a source package typically consists of the actual source code and some meta-data
  42 [16:09] <dholbach> every single change that gets made (be it just a small fix or a new version, etc.) requires an upload to the build machines (part of Launchpad), where the source package gets transformed into binary packages (.deb packages)
  43 === 20QAAV4RZ is now known as hugohirsch
  44 [16:10] <dholbach> <susenj> QUESTION: i am using pidgin..not lernid..is it okay??
  45 [16:10] <dholbach> susenj, yes, totally
  46 [16:10] <dholbach> <gartral> QUESTION: will multiple shells be covered?
  47 [16:10] <dholbach> gartral, it shouldn't really matter which shell you're using
  48 [16:10] <mauriciocinelli> how to see video?
  49 [16:11] <dholbach> ok, once the .deb files (binary packages) are available, they are pushed to various mirrors
  50 [16:11] <dholbach> and they're also used to build CDs of all kinds of Ubuntu flavours (Ubuntu server, Kubuntu, Ubuntu Desktop, etc.)
  51 [16:12] <dholbach> so no matter if you use Kubuntu or Ubuntu or Xubuntu or anything else... all the changes are uploaded to the same build machines and are part of the same archive
  52 [16:12] <dholbach> <Kroosec> QUESTION: Do I need to be on Ubuntu for this session ?
  53 [16:12] <dholbach> Kroosec, no, not necessarily - later on for the tutorials probably
  54 [16:12] <dholbach> <raju> QUESTION: was session started ?
  55 [16:12] <dholbach> raju, yes - if you missed the start there will be logs on https://wiki.ubuntu.com/UbuntuDeveloperWeek later on
  56 [16:13] <dholbach> the CDs are mostly built every single day, so that's what we use for installation tests, etc.
  57 [16:13] <dholbach> <middle> QUESTION: WIll there be a formal QnA later on? I want to ask questions but not interrrupt you
  58 [16:13] <dholbach> manish raju: you dont put that
  59 [16:14] <dholbach> middle: please just ask - I'll decide myself when I take a small break to answer a couple of questions :)
  60 [16:14] <dholbach> ok, so much for the Ubuntu archive, packages and how they're built
  61 [16:14] <dholbach> let me talk a bit about the Ubuntu release cycle
  62 [16:15] <dholbach> what Ubuntu developers focus on heavily depends on the release schedule
  63 [16:16] <dholbach> as you know Ubuntu is released every 6 months, and to able to deliver on the exact date, we need to stick to the dates in the schedule
  64 [16:16] <dholbach> if you want to see the schedule for the current development release,  check out https://wiki.ubuntu.com/NattyReleaseSchedule
  65 [16:17] <dholbach> if you don't have problems with seeing colours, you see that there's green at the start and red at the end
  66 [16:17] <dholbach> "green" does NOT mean: "it's all working, it's all great"
  67 [16:17] <dholbach> it rather means "everything goes, you can upload whatever changes you want/need" :)
  68 [16:18] <dholbach> towards the end of the release cycle we introduce more and more freeze dates, where the changes are becoming less and less intrusive
  69 [16:18] <dholbach> but let's go back to the beginning
  70 [16:18] <dholbach> first the toolchain (the most basic build-relevant packages) are set up, then we work on merging changes that have happened in Debian (and other software projects) since we got out the last release
  71 [16:19] <dholbach> then there's Ubuntu Developer Summit (UDS), which I'll talk about a bit later - for now it should be enough to say that it's where the features of the release are defined and agreed on
  72 === tarun is now known as Guest97414
  73 === Guest97414 is now known as c2tarun
  74 [16:20] <dholbach> Debian Import Freeze is the first freeze date that appears in the list - it's where we stop to automatically "sync" source packages from Debian
  75 [16:20] <dholbach> this is done as a measure to start to stabilise the code in Ubuntu, but can be overriden in warranted cases
  76 [16:21] <dholbach> next up is Feature Freeze, where we expect big parts of features to be landed
  77 [16:21] <dholbach> if they still have bugs, that's fine, but if they're not there in rudimentary form, then that's a problem and we might consider to postpone them to the next release
  78 [16:22] <dholbach> Feature Freeze is also the date where try to slow down introducing new versions of packages (again: in order to stabilise, and yes there might be warranted cases where we want to override)
  79 [16:22] <dholbach> from Feature Freeze on, we introduce more and more other freezes, UI, Docs, Kernel, etc etc
  80 [16:23] <dholbach> this is done, so that we focus on show stopper bugs and don't introduce any big changes any more and bring Ubuntu in a releasable form :)
  81 [16:23] <dholbach> April 28th is the date we're aiming for this release and I'm quite sure that that's where we'll get the release out :)
  82 [16:24] <dholbach> <udienz> Question: How long someone can be a MOTU? 6 month from first upload or depends on how much uploaded or depends from recommendations?
  83 [16:24] <dholbach> udienz, to become an Ubuntu developer I'd prefer not to give and concrete number of weeks/months
  84 === MickStep is now known as QUESTION
  85 === RobertM is now known as Guest98250
  86 [16:24] <dholbach> I personally feel that if you gained the trust of other developers you've worked with (more on the topic later on), you're ready
  87 [16:25] <dholbach> ok, so much for the release schedule for now :)
  88 [16:26] <dholbach> but I guess you got a better idea now why it makes more sense to upload a rewrite of a piece of software EARLY in the cycle, and not 5 days before release :)
  89 [16:26] <dholbach> etc :)
  90 [16:27] <dholbach> and you can also imagine now that with thousands of packages, millions of lines of code, hundreds of project and hundreds of developers communication/coordination is very important
  91 [16:27] <dholbach> <monish001> QUESTION: How would developer's code get into the main ubuntu code? Which tools are used for development and commits, how these commits are tested by others for authentication?
  92 [16:27] <dholbach> monish001, I'll get to that in a bit
  93 [16:28] <dholbach>  <hugohirsch> QUESTION (later): I find a bug in a gnome package, checked out the sources, discovered that the bugfix merely is a 'remove commented out line in sources' - how do I get this into Ubuntu?
  94 [16:28] <dholbach>  hugohirsch: I'll get to that in a few minutes as well :)
  95 [16:28] <dholbach> I touched on UDS (Ubuntu Developer Summit) a bit earlier on already
  96 [16:29] <dholbach> it's where hundreds of people get together in one location and for one week discuss all kinds of problems they want to solve in the next cycle
  97 [16:29] <dholbach> the great thing is, if you can't be there physically, you can attend remote (talk on IRC and listen in via audiocast)
  98 [16:30] <dholbach> the outcomes of the sessions are written up as specifications, so all the ideas, assumptions, rationale and action plan is recorded publicly and others can involved helping to solve those problems
  99 [16:31] <dholbach> while this works well for "big picture" things, there are loads of day-to-day decisions that are made on mailing lists (ubuntu-devel@lists.u.c for example) or on IRC channels, such as #ubuntu-devel
 100 [16:31] <dholbach> of course if there's a specific software project that interests you that is outside of Ubuntu, you might want to be on the project's mailing list and IRC channel as well
 101 [16:32] <dholbach> another important medium for discussion and coordination is bug reports
 102 [16:32] <dholbach> you can find all of Ubuntu's bugs at https://bugs.launchpad.net/ubuntu
 103 === pixelmeister_ is now known as rechengehirn
 104 [16:33] <dholbach> it makes it much easier to stay on top of what needs to be fixed if you're subscribed to a specific package's bugs, talk to its authors, etc
 105 [16:34] <dholbach> we also make deliberate use of bug statuses, tags and assignee fields to track what's in progress and who's working on it
 106 [16:34] <dholbach> <hugohirsch> QUESTION: What's the 'process' model of Canonical/Ubuntu? Scrum? XP? How are you guys managed/tracked?
 107 [16:35] <dholbach> hugohirsch, first you need to distinguish between Canonical and Ubuntu - Canonical's engineers are part of the Ubuntu community as is everyone else
 108 [16:35] <dholbach> there are a lot of software projects that originate in the Ubuntu world and they make use of whatever release management they like best
 109 [16:36] <dholbach> there is the Kanban approach in Launchpad for example, there is others that "release when it's ready"
 110 [16:36] <dholbach> there's others who have regular meetings, etc. - there's a huge variety
 111 [16:36] <dholbach> I mentioned it before already... we rely on a lot of other software projects
 112 [16:37] <dholbach> not all the code that is shipped in Ubuntu is written by Ubuntu developers
 113 [16:37] <dholbach> projects that release code which we integrate into Ubuntu are called "upstream projects" or short "upstreams"
 114 [16:37] <dholbach> it's critically important to us to have a great relationship to all of these
 115 [16:38] <dholbach> we need to talk about timeframe of releases, pass on information about bug reports, pass on code changes, etc
 116 [16:38] <dholbach> one of the most important Upstream projects for us is Debian (luckily, there'll be dedicated session about Debian later in the week)
 117 [16:38] <dholbach> Debian is a distribution itself and we inherit a lot of changes immediately from Debian
 118 [16:39] <dholbach> also were most of the technical decisions made in (or in conjuction with) Debian too
 119 [16:40] <dholbach> so there's package maintainers or package maintenance teams in Debian, with whom it's very interesting to have a conversation if you plan changes or want to coordinate work
 120 [16:40] <dholbach> (as I said earlier: there'll be a session about that later in the week - YES!)
 121 [16:40] <dholbach> <wolfpack> QUESTION: on Which Irc channel can I get help on develoment related question/problems?
 122 [16:40] <dholbach> wolfpack, #ubuntu-motu on irc.freenode.net should be a good start
 123 [16:41] <dholbach> ok... some of you wanted to know earlier already... how do I get my changes into Ubuntu
 124 [16:41] <dholbach> so let's talk about that now
 125 [16:41] <dholbach> it's not daunting at all and it's very rewarding - not only because you learn something new every single time (at least I did), but also because you fix problems for millions of users out there
 126 [16:42] <dholbach> because new contributors can't immediately upload to the build machines themselves (we use GPG to track who uploaded changes, etc.), they need somebody who reviews their changes first and uploads for them
 127 [16:43] <dholbach> and that's a great way to learn, as you interact with loads of different people and they all might teach you something new
 128 [16:43] <dholbach> and also you make loads of great friends
 129 [16:44] <dholbach> barry will later on talk about Ubuntu Distributed Development, so explaining the exact process of how to branch a source package, how to submit changes, etc.
 130 [16:44] <dholbach> so I won't steal his thunder by going into technical details :)
 131 [16:45] <dholbach> basically: you get the source, you make your changes, you test build the code, test it, push it for review, get it reviewed and uploaded - BUG FIXED :)
 132 [16:45] <dholbach> <hugohirsch> QUESTION: Do I need to choose a reviewer or is a reviewer assigned via Launchpad automatically?
 133 [16:45] <dholbach> hugohirsch, you don't have to choose
 134 === dholbach_ is now known as dholbach
 135 === rahadian is now known as razorBAT
 136 [16:47] <dholbach> sorry
 137 [16:47] <dholbach> fell out of the internet for a second :)
 138 [16:48] <dholbach> hugohirsch, naturally if somebody has their special area of expertise with some package, you might talk to them over and over again :)
 139 [16:48] <dholbach> <mauriciocinelli> QUESTION: What languages are used for Ubuntu Development?
 140 [16:48] <dholbach> mauriciocinelli, all kinds: C, C++, Python, Perl, Java, Mono, Vala, etc etc etc.
 141 [16:48] <dholbach> the good thing is: you don't need to know "all of them" to get started
 142 [16:49] <dholbach> you can easily lay back, take it easy, fix a few simple and obvious bugs first and take it from there
 143 [16:49] <dholbach> and as I said a couple of times already: you learn more and more over time
 144 [16:49] <dholbach> <abcd87> QUESTION: how to customize the bootloader?
 145 [16:50] <dholbach> abcd87, I'm afraid I don't know - if you elaborate on your question, you might find somebody who's cleverer than me in #ubuntu-devel :)
 146 [16:50] <dholbach> I really like mauriciocinelli's question, so I'll talk about that a little bit more
 147 [16:51] <dholbach> if you ask me it's not so much about knowing n+1 programming languages already
 148 [16:51] <dholbach> it's about having a knack for making things work again
 149 [16:51] <dholbach> it's about doing some detective work
 150 [16:51] <dholbach> it's about being a team player
 151 [16:51] <dholbach> it's about not being afraid of reading documentation
 152 [16:51] <dholbach> it's about not being afraid of asking a few (seemingly) stupid questions
 153 [16:52] <dholbach> if you answered "Yes" more often than "no" to the points above, you should fit right in
 154 [16:53] <dholbach> detective work also involves talking to upstreams and people from other distributions, coordinating with them - sometimes a fix for a specific issue might be available already and you just need to get it into Ubuntu as well
 155 [16:53] <dholbach> <MeanEYE> QUESTION: Are you considering using Go (Google's language) at one point since it's designed for OS/service development
 156 [16:53] <dholbach> MeanEYE, I don't know how many packages already make use of it
 157 === bobthebob is now known as bobthebob1234
 158 [16:54] <dholbach> but I'm sure it will get considered if there's demand for it
 159 [16:54] <dholbach> Ok... with that I suggest we take a 5 minute break before I help you get started and get your development environment set up
 160 [16:54] <dholbach> so get yourself a coffee or tea or glass of water and I'll see you in 5 minutes
 161 === abc_ is now known as Guest32570
 162 [17:00] <dholbach> ok... we're back for part 2 of "getting started with ubuntu development"
 163 [17:01] <dholbach> for those of you who came late... don't worry - we'll put up logs of all sessions up at https://wiki.ubuntu.com/UbuntuDeveloperWeek later
 164 [17:01] <dholbach> also, if you want to chat, ask questions and all the rest of it, please head to #ubuntu-classroom-chat
 165 [17:01] <dholbach> and prefix questions with QUESTION
 166 [17:01] <dholbach> <jack002> QUESTION: What about for people that don't know any programming language? How can they help with development process? Translations, reporting bugs, testing the code, discussing in the brainstorm. Is there more? Any web page?
 167 [17:02] <dholbach> jack002, you can do all of what you mentioned, but you can also try to fix small and obvious bugs - don't hesitate :)
 168 [17:02] <dholbach> <middle> QUESTION: What do yo uthink hte best route froa student currently studying A-levels woulkd be to get intot eh wolrd of open source software development?
 169 [17:03] <dholbach> middle: yes, I think it's a great choice to get involved in Ubuntu development - you'll learn loads because you basically touch all parts of an operating system - it's a fun experience and will help you figure out what you really enjoy doing
 170 [17:03] <dholbach> <darkdevil56> QUESTION:  James Gosling resigns from sun/oracle and now oracle wont provide support for J2SE n J2M. will this affect ubuntu packaging in java?
 171 [17:03] <dholbach>  *J2ME
 172 [17:04] <dholbach> darkdevil56, I'm not a Java hacker, so I don't know - I personally haven't heard of any big concerns in the open source community yet though
 173 [17:04] <dholbach> <qayshp> QUESTION: will ubuntu/canonical be taking part in the Google Summer of Code this year?
 174 [17:04] <dholbach> qayshp, Ubuntu will definitely apply as a mentoring organisation - the decision will be with Google though :)
 175 [17:05] <dholbach> alrightie
 176 [17:05] <dholbach> that's all the outstanding questions from part 1 as far as I could see
 177 [17:05] <dholbach> in part 2 I'll help you get your ubuntu development environment set up
 178 === QUESTION is now known as MickStep
 179 [17:06] <dholbach> you will need reasonably fast internet for this, so if things take longer for you, don't despair - take it easy and just open a second terminal and continue with other steps in the meantime
 180 [17:07] <dholbach> also there might be some steps involved that you already did on your own some time ago - feel free to skip those
 181 [17:07] <dholbach> (ie: you set up a GPG key already - you don't need two :-))
 182 [17:07] <dholbach> alrightie
 183 [17:07] <dholbach> let's get cracking :-D
 184 [17:07] <dholbach> in a terminal, please run this command
 185 [17:07] <dholbach>   sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb
 186 [17:08] <dholbach> while it runs and installs a few packages, I'll talk a bit more about what we're doing here
 187 [17:08] <dholbach> once we're done with this session,
 188 [17:08] <dholbach>  - you have all the tools to do Ubuntu development installed on your machine
 189 [17:08] <dholbach>  - your local developer tools know about you, which simplifies work a lot
 190 [17:08] <dholbach>  - you can do local builds of packages
 191 [17:09] <dholbach>  - you can interact with other developers and propose your changes on Launchpad to get merged
 192 [17:09] <dholbach>  - you can upload packages to Launchpad, so they are hosted in your Personal Package Archive (PPA)
 193 [17:09] <dholbach> another word of advise: if you do Ubuntu development, it's incredibly helpful to run the current development release
 194 [17:10] <dholbach> we all know that from time to time the current development release is quite broken, so it's obvious that you might not want to run it as your one and only Ubuntu system
 195 [17:10] <dholbach> https://wiki.ubuntu.com/UsingDevelopmentReleases explains how you can easily and safely use the development release
 196 [17:10] <dholbach> (you don't need to do that now)
 197 [17:11] <dholbach> <hugohirsch> QUESTION: If I have a private GPG-key and one for ubuntu development. What do you recommend? Work as a separate user with the ubuntu-GPG-key or is there an easy way to switch between keys when working on ubuntu-stuff on the console ?
 198 [17:11] <dholbach> hugohirsch, you can easily specify whichever one you want to use
 199 [17:11] <dholbach> <fisch246> QUESTION: did you mean to say PGP, instead of GPG?
 200 [17:11] <dholbach> fisch246, I meant to say GPG (GNU Privacy Guard), which implements the OpenPGP standard
 201 [17:12] <dholbach> <mauriciocinelli> QUESTION: During install it asks general type of mail configuration?
 202 [17:12] <dholbach> mauriciocinelli, sorry about that - you can also run the install command with "--no-install-recommends" if you want to avoid the mail configuration
 203 [17:12] <dholbach> <stefwal82> QUESTION: how is the gpgkey introduced in the mended package
 204 [17:12] <dholbach> stefwal82, I don't understand the question
 205 [17:13] <dholbach> <darkdevil56> QUESTION: what's postfix config?
 206 [17:13] <dholbach> darkdevil56, you can also run the install command with "--no-install-recommends" if you want to avoid the mail configuration
 207 [17:13] <dholbach> ok.. let's see what kind of packages we're installing right now.......
 208 [17:13] <dholbach> there's:
 209 [17:13] <dholbach>  - gnupg which you will need to create a GPG key with which you will sign files you want to upload to Launchpad
 210 [17:14] <dholbach>  - pbuilder which is a great tool to do a reproducible build of a package in a clean and isolated environment
 211 [17:14] <dholbach>  - ubuntu-dev-tools (and devscripts, a direct dependency) which provide you with a collection of tools that make a lot of packaging tasks a lot easier
 212 [17:14] <dholbach>  - and there's bzr-builddeb (and bzr, a dependency) which will get you set up for working in the distributed development environment, that makes it easy for many developers to collaborate and work on the same code while keeping it trivial to merge each others work
 213 [17:16] <dholbach> A few people seem to have problems downloading packages - if you hit any problems, please head to #ubuntu-classroom-chat - there's people who are going to help you out.
 214 [17:16] <dholbach> ok... let's talk about gpg (GnuPG) first
 215 [17:16] <dholbach> it is important that you can sign files with your key, so they can be identified as something that you worked on
 216 [17:17] <dholbach> if you upload a source package to Launchpad, it will only accept the package if it can tell who uploaded the package
 217 [17:17] <dholbach> If you don't have a GPG key yet, please run this command in a terminal:
 218 [17:17] <dholbach>   gpg --key-gen
 219 [17:17] <dholbach> GnuPG will first ask you which kind of key you want to generate. Choosing the default (RSA and DSA) is fine.
 220 [17:17] <dholbach> Next it will ask you about the keysize. The default (currently 2048) is fine, but 4096 is more secure.
 221 [17:18] <dholbach> Afterwards it will ask you if you want it to expire the key at some stage. It is safe to say “0”, which means the key will never expire.
 222 [17:18] <dholbach> The last questions will be about your name and email address. Just pick the ones you are going to use for Ubuntu development here, you can add additional email addresses later on.
 223 [17:18] <dholbach> <middle> QUESTION: gpg --key-gen
 224 [17:18] <dholbach> middle: sorry, my mistake
 225 [17:18] <dholbach> it's:
 226 [17:19] <dholbach>   gpg --gen-key
 227 [17:20] <dholbach> once you're done with the questions it asked, there'll be also one about a "comment"
 228 [17:20] <dholbach> Adding a comment is not necessary.
 229 [17:20] <dholbach> Then you will have to set a passphrase. Choose a safe one.
 230 [17:20] <dholbach> Now GnuPG will create a key for you, which can take a little bit of time, as it needs random bytes, so if you give the system some work to do it will be just fine.
 231 [17:21] <dholbach> just keep it sitting there and do its work - if it takes very long, open another terminal :)
 232 [17:22] <dholbach> the next step will be to generate a SSH key
 233 [17:22] <dholbach> SSH is a network protocol that allows you to exchange data in a secure way over the network. In a lot of cases you will use it to access and open a shell on another machine. It is also very useful to transfer files in a secure way.
 234 [17:22] <dholbach> if you don't have an SSH key yet, just run
 235 [17:22] <dholbach>   ssh-keygen -t rsa
 236 [17:22] <dholbach> The default filename makes sense, you can just leave it as it is. Also you can choose to use a passphrase or not.
 237 [17:23] <dholbach> We will use the SSH key to securely push code changes to Launchpad.
 238 === msnsachin12 is now known as msnsachin
 239 [17:23] <dholbach> next we'll set up pbuilder
 240 [17:23] <dholbach> pbuilder allows you to build packages locally on your machine. It serves a couple of purposes:
 241 [17:24] <dholbach>  - the build will be done in a minimal and clean environment, where you can see if it succeeds in a reproducible way (with no modifications of the local system
 242 [17:24] <dholbach>  - there is no need to install all necessary build-dependencies locally
 243 [17:24] <dholbach>  - you can set up multiple instances for various Ubuntu and Debian releases
 244 [17:24] <dholbach> <gartral|watcher> QUESTION: why should communications be secured with RSA instead of AES?
 245 [17:25] <dholbach> gartral|watcher, I'm afraid I don't know the answer to that question - it's what we use... you might get a more elaborate answer on #ubuntu-devel though :)
 246 [17:25] <dholbach> <wolfpack> QUESTION: Does pushing code neccesary nedds ssh connection? As I am working university network proxy and can make connection through http only.
 247 [17:25] <dholbach> wolfpack, that might be a problem then - the nice people in #launchpad might give you an alternative option
 248 [17:26] <dholbach> <abhinav51> QUESTION: I already have ssh keys set up (I created them for use with github). Do I need to regenerate ?
 249 [17:26] <dholbach> abhinav51, no, not necessary
 250 [17:26] <dholbach> Setting pbuilder up is very easy. Edit ~/.pbuilderrc and add the following line to it:
 251 [17:26] <dholbach> COMPONENTS="main universe multiverse restricted"
 252 [17:26] <dholbach> and save the file
 253 [17:27] <dholbach> This will ensure that build-dependencies are satisfied using all components.
 254 [17:27] <dholbach> then run:
 255 [17:27] <dholbach>   pbuilder-dist natty create
 256 [17:27] <dholbach> This will take a while as it will download all the necessary packages for a “minimal installation”. These will be cached though.
 257 [17:28] <dholbach> the great thing about pbuilder-dist is, that you can also set up build environments for other Ubuntu (or Debian) releases
 258 [17:28] <dholbach> (just replace "natty" with whatever else you need)
 259 [17:28] <dholbach> <gartral|watcher> QUESTION: more of an extension of the previous question, but, will launchpad accept keys larger than 2048 bits?
 260 [17:28] <dholbach> gartral|watcher, I could very well imagine that yes they do, but you might want to ask that question in #launchpad too :)
 261 [17:28] <dholbach> (sorry :))
 262 [17:29] <dholbach> <cire831> QUESTION: you specify natty on the pbuilder-dist cmd line,   does it matter that I'm running on a lucid box?
 263 [17:29] <dholbach> cire831, no, it should still work :)
 264 [17:29] <dholbach> <middle> QUESTION: I htink some of your commands are off, there was nothing in the file that we added the line to ans nuilder-dist wasn#'t found =s
 265 [17:29] <dholbach> middle: if ~/.pbuilderrc was empty, that's totally fine
 266 [17:29] <dholbach> <maco> QUESTION:  will pbuilder-dist be upstreamed to Debian? I was surprised to learn that it's in ubuntu-dev-tools rather than devscripts
 267 [17:30] <dholbach> maco, it'd be great to see it in Debian too - if you want to propose it for devscripts, please go ahead and do it :)
 268 [17:30] <dholbach> maco, you of all people should know how to get that done :-D
 269 [17:30] <dholbach> <hugohirsch> QUESTION: Is there a way to make pbuilder use more than one core on a multicore machine?
 270 [17:31] <dholbach> hugohirsch, I would think so - can somebody confirm in #ubuntu-devel? :)
 271 [17:31] <dholbach> <mainerror> QUESTION: There is no ..pbuilderrc in my home directory
 272 [17:31] <dholbach> mainerror, that's fine - just create it
 273 [17:31] <dholbach> <gmargo3> QUESTION: Must pbuilder-dist be run as root?  Or does it use a fakeroot behind the scenes?
 274 [17:31] <dholbach> gmargo3, the reason why pbuilder-dist (via pbuilder) uses root is that it uses chroot internally
 275 [17:32] <dholbach> <cire831> QUESTION: where is it putting the natty files?
 276 [17:32] <dholbach> cire831, ~/pbuilder
 277 === IAmNotThatGuy is now known as M0hi
 278 [17:32] <dholbach> <monish001> QUESTION: In  ~/.pbuilderrc  , which directory does ~ means?
 279 [17:32] <dholbach> monish001, your home folder
 280 [17:33] <dholbach> alright, let's crack on :)
 281 [17:33] <dholbach> next we'll teach Bazaar about yourself
 282 [17:33] <dholbach> Bazaar is the tool we use to store code changes in a logical way, to exchange proposed changes and merge them, even if development is done concurrently.
 283 [17:33] <dholbach> Simply run:
 284 [17:33] <dholbach>   bzr whoami "Frank Chu <fchu@example.com>"
 285 [17:33] <dholbach>   bzr launchpad-login fchu
 286 [17:33] <dholbach> (please, if your name is not "Frank Chu", replace with your own name, thanks)
 287 === wolfpack is now known as Guest40940
 288 [17:34] <dholbach> if you don't have a launchpad account yet, you can get it if you sign up at https://launchpad.net/+login
 289 [17:35] <dholbach> (and do that step later on)
 290 [17:35] <dholbach> if you have launchpad account, your launchpad id is whatever is after "~" in the URL that https://launchpad.net/people/+me redirects you to
 291 [17:35] <dholbach> <middle> QUESTION: What do we do with our SSh key, can we jsut close the terminal as it is saved somewhere or do we need to write it down?
 292 [17:35] <dholbach> middle: yes, just close it - that's fine
 293 [17:36] <dholbach> ok, next we'll teach the development tools about ourselves
 294 === Guest40940 is now known as wolfpack
 295 [17:36] <dholbach> Edit ~/.bashrc (if you use a different shell use whatever configuration file it comes with)
 296 [17:36] <dholbach> and add something like this to the bottom:
 297 [17:37] <dholbach>   export DEBFULNAME="Frank Chu"
 298 [17:37] <dholbach>   export DEBEMAIL="fchu@example.com"
 299 [17:37] <dholbach> (again, please replace with whatever YOUR name and YOUR email is :))
 300 [17:37] <dholbach> afterwards save the file and run
 301 [17:37] <dholbach>   source ~/.bashrc
 302 [17:38] <dholbach> sorry, please make this DEBFULLNAME
 303 [17:38] <dholbach> (thanks sapphirepaw)
 304 [17:39] <dholbach> if you have a look back at the terminal where your gpg key was created, you might see a message like this:
 305 [17:39] <dholbach> pub   4096R/43CDE61D 2010-12-06
 306 [17:39] <dholbach>       Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
 307 [17:39] <dholbach> uid                  Daniel Holbach <dh@mailempfang.de>
 308 [17:39] <dholbach> sub   4096R/51FBE68C 2010-12-06
 309 [17:39] <dholbach> in this case "43CDE61D" is my GPG ID
 310 [17:40] <dholbach> if you had a GPG key before, run this:
 311 [17:40] <dholbach>   gpg --fingerprint <email@address.com>
 312 [17:40] <dholbach> it should give you a similar output
 313 [17:40] <dholbach> once you know your gpg key id, you can run:
 314 [17:40] <dholbach>   gpg --send-keys <KEY ID>
 315 [17:40] <dholbach> which will upload your key to the keyservers, which allows others to confirm that something you signed is actually from you
 316 [17:41] <dholbach> (if you uploaded it already, you can obviously skip that step)
 317 [17:42] <dholbach> it would take too much time to go through all the individual steps (it's not that bad actually) to register you gpg and ssh key with LP, so for now I'll just give you the links you need:
 318 [17:42] <dholbach>  - https://launchpad.net/people/+me/+editpgpkeys (GPG key registration)
 319 [17:42] <dholbach>  - https://help.launchpad.net/YourAccount/ImportingYourPGPKey (docs for gpg key registration)
 320 [17:42] <dholbach>  - https://launchpad.net/people/+me/+editsshkeys (ssh key registration)
 321 [17:42] <dholbach>  - https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair (docs for ssh key registration)
 322 [17:42] <dholbach> and that's really it :-)
 323 [17:43] <dholbach> <fisch246> QUESTION: "bzr: ERROR: The user paul-mcspadden has not registered any SSH keys with Launchpad." and how do i go about doing this?
 324 [17:43] <dholbach> fisch246, you can fix this at https://launchpad.net/people/+me/+editsshkeys
 325 [17:43] <dholbach> <HoellP> QUESTION: How can i delete an outdated key from the keyserver?
 326 [17:43] <dholbach> HoellP, as far as I know you can revoke a gpg key locally and then upload the revoked key to keyservers
 327 [17:44] <dholbach> <stefwal82> QUESTION: how do you sign something?
 328 [17:44] <dholbach> stefwal82, the development tools will do that "automatically" for you, but you can set up your mail client to sign mails, or sign files manually
 329 [17:44] <dholbach> <hugohirsch> QUESTION: Sending the gpg-key fails with 'keyserver not configured' error. Can I upload my GPG-key to launchpad or does it need to be available via an open key server?
 330 [17:46] <dholbach> hugohirsch, you can specify --keyserver keyserver.ubuntu.com (for example)
 331 [17:46] <dholbach> <darkdevil56> QUESTION: which key am i supposed to send? pblic or secret?
 332 [17:46] <dholbach> darkdevil56, never share the secret key (--send-keys will figure that out for you)
 333 [17:47] <dholbach> <monish001> QUESTION: Output of 'bzr whoami "Name <mailId>" '? I am getting blank..
 334 [17:47] <dholbach> monish001, that's fine - the command succeeded
 335 [17:49] <dholbach> any more questions?
 336 [17:49] <dholbach> if you missed anything, or things are still being worked on, just follow the log of the session later on again - it's fine if you needed a little bit more time :)
 337 [17:49] <dholbach> <hugohirsch> QUESTION: Thx - uploaded my GPG-key. Will it automatically be connected/synced with my Launchpad account?
 338 [17:50] <dholbach> hugohirsch, no, you need to head to https://launchpad.net/people/+me/+editpgpkeys to tell Launchpad about it
 339 [17:50] <dholbach> <darkdevil56> QUESTION: the ssh command that i had typed earlier is retrieving and validating all the packagges till now.. is this normal?
 340 [17:50] <dholbach> darkdevil56, that must be the pbuilder-dist command - yes that's to be expected - just let it do its work :)
 341 [17:50] <dholbach> <mauriciocinelli> QUESTION: Is there anything else we need?
 342 [17:51] <dholbach> mauriciocinelli, that should be it for now - it should set you up for a good start - whatever else is required for others sessions will be dealt with there
 343 [17:51] <dholbach> are there maybe some more general questions about Ubuntu development?
 344 [17:51] <dholbach> we still have ~10 minutes before I have to hand the mic to barry :)
 345 [17:52]  * barry clears his throat
 346 [17:52] <dholbach> <steinex> QUESTION: not completely related, more about the process itself: are the packages synced from debian just the plain packages and ubuntu does the ubuntuspecific patches from-scratch for every new release? or are ubuntu-patches automatically applied on sync and if they don't merge, they must be merged by hand?
 347 [17:52] <dholbach> steinex, good question and it will be dealt with in the Debian session
 348 === kai__ is now known as rechengehirn
 349 [17:53] <dholbach> for now: if the source is unmodified from Debian and we're before Debian Import Freeze, they will be synced automatically and built in Launchpad
 350 [17:53] <dholbach> if there are ubuntu changes we need to "merge" and we have a tool that helps us with that (http://merges.ubuntu.com)
 351 [17:53] <dholbach> <acarpine> QUESTION: I read something about https://wiki.ubuntu.com/MOTU/Mentoring Could you explain more in detail how it works and who should use it?
 352 [17:53] <dholbach> acarpine, unfortunately the Mentoring programme is out of order at this moment
 353 [17:54] <dholbach> I suggest you check out https://wiki.ubuntu.com/MOTU/GettingStarted and please feel very welcome to ask all the questions you have in #ubuntu-packaging or #ubuntu-motu
 354 [17:54] <dholbach> even if it's not a dedicated mentor for you, there's loads of people who are very happy to help you get started and solve your problems
 355 [17:54] <dholbach> <hugohirsch> QUESTION: I uploaded my key, but LP doesn't find the key with the given fingerprint. Do I need to wait for synchronisation between LP and Ubuntu-Keyserver?
 356 [17:54] <dholbach> hugohirsch, yes, you might have to wait a little bit (I don't know the exact timeframe, sorry)
 357 [17:55] <dholbach> <wolfpack> QUESTION: Does ssh key are need to be updated with every new distro release or new computer?
 358 [17:55] <dholbach> wolfpack, no, just leave them as they are
 359 [17:55] <dholbach> <jledbetter> QUESTION: So, now that we have our environment set up, we look at https://bugs.launchpad.net/ubuntu and -- that's where I'm not sure.
 360 [17:55] <dholbach> jledbetter, the upcoming sessions and https://wiki.ubuntu.com/MOTU/GettingStarted should give you some ideas where to look for bugs to fix and how to go about it :)
 361 [17:56] <dholbach> more questions? we still have 5 minutes :)
 362 [17:56] <dholbach> <cire831> QUESTION: when I uploaded the key it said it was uploading it to keys.gnupg.net.  On launchpad under editpgpkeys it says something about Ubuntu keyservers.   Will the Ubuntu keyserver get the new key directly from the gnupg keyserver?
 363 [17:56] <dholbach> cire831, yes, it will take a few minutes
 364 [17:56] <dholbach> <saimanoj> QUESTION:Are ubuntu packages sent back to Debian?
 365 [17:56] <dholbach> saimanoj, nice one!
 366 [17:57] <dholbach> sending patches back to Debian (or other upstreams) is a manual process and very important
 367 [17:57] <dholbach> it is indeed being done
 368 [17:57] <dholbach> and there will be more info about that in the Debian session which I believe will be tomorrow
 369 [17:57] <dholbach> <acarpine> QUESTION: Fixing bugs, when choose bzr and when use a traditional process (create a patch with a debdiff)?
 370 [17:58] <dholbach> acarpine, bzr is a REALLY nice way to go about fixing stuff and barry will take the next hour to walk you through it
 371 [17:58] <dholbach> if it should not work out for you, I'm sure that barry will love to hear more about it and yes, in that case the "traditional process" of posting a patch will work too
 372 [17:58] <dholbach> <stefwal82> QUESTION: in former courses you gave examples, why don't you now?
 373 [17:58] <dholbach> stefwal82, I type too slowly - not enough time :)
 374 [17:59] <dholbach> and I really enjoy answering loads of questions here - I hope it's useful
 375 [17:59] <dholbach> there'll be more examples in other sessions this week
 376 [17:59] <dholbach> <simar> QUESTION: When I run gpg-key fingerprint <email>, I get three uid, what does it mean?
 377 [17:59] <dholbach> simar, do you have more than one gpg key?
 378 [17:59] <dholbach> ah no... is that maybe different user IDs on the same key? in any case it shouldn't be a problem
 379 [18:00] <dholbach> <cire831> QUESTION: is the debian session being talked about the same as "Getting fixes into Debian"?
 380 [18:00] <dholbach> "Getting fixes into Debian" will definitely be part of it
 381 [18:00] <dholbach> <middle> QUESTION:What has this allowed me to actually do?!
 382 === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Ubuntu Distributed Development (UDD) - Instructors: barry
 383 [18:01] <dholbach>   - you have all the tools to do Ubuntu development installed on your machine
 384 [18:01] <dholbach>   - your local developer tools know about you, which simplifies work a lot
 385 [18:01] <dholbach>   - you can do local builds of packages
 386 [18:01] <dholbach>   - you can interact with other developers and propose your changes on Launchpad to get merged
 387 [18:01] <dholbach>   - you can upload packages to Launchpad, so they are hosted in your Personal Package Archive (PPA)
 388 [18:01] <dholbach> and I'm out of time
 389 [18:01] <barry> hi, my name is barry warsaw, and i live near washington dc.  i work for canonical, do ubuntu development, am a core python developer and project leader for gnu mailman.  i'm here to introduce you to a new way of developing ubuntu, called 'ubuntu distributed development', or 'udd'
 390 [18:01] <dholbach> next up is the ROCKing Barry Warsaw
 391 [18:01] <barry> thanks dholbach!