2009-07-23

   1 [00:59] <jawnsy> Hi everyone
   2 [00:59] <jawnsy> It looks like it's about time for the Packaging Perl Modules session
   3 [01:00] <jawnsy> Hopefully some of you are here for the talk, or gwolf and I will be talking to ourselves :-)
   4 [01:00] <gwolf> Yup - 2:00AM according to me, so we are ready to start!
   5 [01:00] <jawnsy> If you've got a question, feel free to ask whenever. I only ask that you try to keep questions relevant to the thing currently being discussed, just so the logs don't get too confusing
   6 [01:00] <gwolf> nhandler: So, you are the guy who invited us. Should we expect anything from you?
   7 [01:00] <gwolf> or should we just address The Audience?
   8 [01:00] <maddeth> 1am by me :p but dont know how long I will be here
   9 [01:01] <nhandler> gwolf: You guys are in charge now ;) I'm just here for the show now
  10 [01:01] <gwolf> good :)
  11 [01:01] <jawnsy> Okay, so a quick introduction
  12 [01:01] <gwolf> ok, so lets al just welcome and listen to jawnsy
  13 [01:01] <ajmitch> most people will probably remain quiet :)
  14 [01:01] <gwolf> I have this (annoying?) tendency of having a hard time to sit and listen at an audience, I always end up interrupting
  15 [01:01] <jawnsy> gwolf and myself are members of the Debian pkg-perl team, gwolf is a Debian Developer, and I am not
  16 [01:01] <gwolf> so I'd rather interrupt jawnsy rather than myself ;-)
  17 [01:02] <jawnsy> We're going to do this talk under the assumption of no previous knowledge making any packages, either for Ubuntu or for Debian
  18 [01:02] <jawnsy> Luckily, packaging Perl modules is pretty gentle. A few tools you will need frequently are: dh-make-perl, lintian
  19 [01:03] <gwolf> That's basically thanks to that the Perl modules all share a basic infrastructure
  20 [01:03] <jawnsy> I'm going to go through packaging a small module from CPAN, we'll discuss what commands you can use to do it
  21 [01:03] <jawnsy> first of all, in order to follow along you'll need to apt-get install the aforementioned tools
  22 [01:03] <gwolf> ...And that's also the main reason we (a group of ~15 people at most) can keep up with ~1300 packages in a reliable way!
  23 [01:04] <maddeth> aptitude installing now :)
  24 [01:04] <jawnsy> Another useful package is devscripts, which contains "debuild" -- a command we'll be looking at later
  25 [01:05] <jawnsy> While everyone's installing that stuff, is there a particular module anyone would be interested in using as an example?
  26 [01:05] <gwolf> jawnsy: oh, catalyst could be a good example
  27 [01:05] <jawnsy> Otherwise I'll just pick one at random
  28 [01:05] <gwolf> (of something you want to avoid ;-) )
  29 [01:06] <gwolf> lets start simple, with something not dependency-rich
  30 [01:06] <Ryan52> Locale-Msgfmt
  31 [01:06] <Ryan52> no dependencies other than Perl core, and it should "just work".
  32 [01:07] <jawnsy> okay
  33 [01:07] <jawnsy> So, make a directory and change into it (the build process might clutter your directory with some files, so it's best to put it somewhere). I usually make a bunch of directories like 'tmp'
  34 [01:08] <jawnsy> the first command you want to run is: dh-make-perl --cpan Locale::Msgfmt
  35 [01:08] <gwolf> jawnsy: Let me fill in a minute please :)
  36 [01:08] <jawnsy> Hopefully you have CPAN configured, otherwise it might ask you to configure it. Usually just hitting enter all the way down will be OK
  37 [01:09] <gwolf> I think we have a bit different approaches - I think it's a bit better to first introduce what is _about to_ happen ;-)
  38 [01:09] <gwolf> But anyway - Yes, dh-make-perl is a magic script
  39 [01:09] <gwolf> ... In preparing Debian packages, you will see lots and lots of dh_* calls - To the debhelper scripts
  40 [01:10] <gwolf> dh-make-perl is _NOT_ part of debhelper, but extensively uses i
  41 [01:10] <gwolf> it
  42 [01:10] <gwolf> ...Anyway... Ok, I agree with jawnsy's reasoning (which was sent to me out of band)...
  43 [01:10] <gwolf> ...so I'll let him continue with the demonstration
  44 [01:10] <gwolf> we can later talk about pedagogy ;-)
  45 [01:11] <jawnsy> debhelper, as you may or may not know, is a collection of scripts that Debian uses to build and install packages
  46 [01:11] <jawnsy> prior to debhelper, we were using huge makefiles.. which, as you can imagine, gets pretty hard to maintain and debug
  47 [01:12] <jawnsy> Once you do dh-make-perl --cpan Locale::Msgfmt, you should see a bunch of text scroll by your screen, how it's unpacking a tarball
  48 [01:12] <jawnsy> Most importantly, at the end, you should get a line that says "--- Done" which meant everything went OK
  49 [01:12] <jawnsy> For those following along with this, please confirm that you can build using dh-make-perl. If not, mention any problems you are having in #ubuntu-classroom-chat
  50 [01:13] <jawnsy> Okay. So, it did a bunch of magic. Let's look at what it created.
  51 [01:14] <jawnsy> cd into Locale-Msgfmt-0.14, and list the directory's contents
  52 [01:14] <jawnsy> Everything in that directory is from the tarball we just downloaded from CPAN
  53 [01:15] <jawnsy> what is important to note for us is the files in debian/, which basically tell our installer (debhelper) how to do its magic. It also contains metadata files that tell Aptitude how to resolve dependencies, for example
  54 [01:15] <jawnsy> I'll go through these files (in debian/) file-by-file so we can look at what they are for.
  55 [01:16] <jawnsy> While dh-make-perl is great at its magic, it's also not perfect. So we have to manually check that everything is OK and makes sense.
  56 [01:16] <gwolf> Just as a sidemark - often, dh-make-perl's generated files are good enough for straight _local_ use
  57 [01:17] <gwolf> that means, if you just install them, you can basically trust they will not eat your hard disk, and will even behave
  58 [01:17] <jawnsy> Oh, yes. If you are building Perl modules for your own consumption, they are often good enough to install right away. You can use: dh-make-perl --install --cpan Locale::Msgfmt for that purpose
  59 [01:17] <gwolf> of course, if you are interested in contributing Debian or Ubuntu, a human should check it!
  60 === they is now known as vorian
  61 [01:18] <jawnsy> Often doing this is better than using the CPAN shell to do installs, because this way you can remove packages easily
  62 [01:18] <jawnsy> the debian/compat file just contains the version of debhelper that the module is built for, in this case it should just contain "7" on its own line, which means it's designed for the debhelper 7 series
  63 [01:19] <gwolf> And IIRC, dh-make-perl will not by default work on modules that are marked as unstable by their authors, just on the highest official release (which can be otherwise using the CPAN shell)
  64 [01:19] <maddeth> cat compat
  65 [01:19] <maddeth> lol
  66 [01:19] <jawnsy> yep, it's small :-)
  67 [01:19] <maddeth> oops ;)
  68 [01:19] <gwolf> maddeth: Yup - debhelper uses lots of small files. You will find several such files with minor indications
  69 [01:19] <jawnsy> Now, look inside the 'control' file
  70 [01:20] <jawnsy> I'll briefly discuss some important points, but to get the full idea of what's going on, reading the Debian Policy Manual is the best way
  71 [01:21] <gwolf> right - we got reminded that you might be looking at some possibly different things
  72 [01:21] <gwolf> i.e. if you are running the latest stable versions, or even more if you are using the LTS releases, you will -of course- face older results. Specially LTS will generate a _very_ different set of results (although should be equally usable)
  73 [01:22] <gwolf> but anyway, please ignore such small inconsistencies
  74 [01:23] <jawnsy> Mhm. Basically, this d/control file is what tells aptitude/synaptic various things which you might see as familiar. This is where a package description is defined, among other things
  75 [01:24] <gwolf> debian/control basically lays out all the metainformation - What packages does this one depend on? What is it about? Who created it? ± when? (while it does not contain the dates, as we will go over that soon, it has a rough indication on when it was last updated: its standards-version)
  76 [01:24] <gwolf> ..and several other, less interesting details
  77 [01:25] <gwolf> Note that even if you are working with Ubuntu... at the package source level, keep in mind it will always be debian/*
  78 [01:25] <jawnsy> oh, when I say d/control, I should note that it's a short form (in discussion) for saying debian/control
  79 [01:26] <jawnsy> we get used to that slang a lot in pkg-perl
  80 [01:26] <gwolf> For this module (or package, depending on which side of reality you are standing), the information in debian/control is quite minimal - but were you to build a more involved package, it can... grow quite a bit
  81 === Pici` is now known as Pici
  82 [01:26] <gwolf> heh, in Debian in general, and I guess it also happens in Ubuntu :)
  83 [01:26] <jawnsy> Yes, right now, it only contains two sections (things separated by a newline)
  84 [01:27] <jawnsy> the top part refers to the "source package", the second part refers to binaries generated from the source package. None of that matters right now, so don't worry about it
  85 [01:27] <jawnsy> Okay, onto the next file. You should see a file called: liblocale-msgfmt-perl.docs
  86 [01:27] <jawnsy> and a similar one with the extension .examples
  87 [01:27] <jawnsy> cat these and take a look at them. You'll notice it's just a line-separated list of filenames and paths
  88 [01:28] <gwolf> some of this files might not exist under some circumstances - they depend on what is included on each of the modules you work on
  89 [01:28] <jawnsy> These are magical files, and they trigger debuild to "install" them. Note that anything listed in these files will be installed on Ubuntu and Debian systems which install your package.
  90 [01:28] <jawnsy> Basically, .docs is a way of listing some files which are useful for users to read, so they'll be installed on your system.
  91 [01:29] <gwolf> And, of course, they are autogenerated - so it is possible you will find some examples or files missing. Feel free to just create them with the filenames (relative to the source package's root) for whatever files you want treated as such.
  92 [01:29] <jawnsy> It should list a single file, README, for this package
  93 [01:29] <jawnsy> take a look at the contents of README. you'll notice that it doesn't really say anything interesting.
  94 [01:30] <jawnsy> just the usual stuff like how to install the package manually. this sort of thing isn't tremendously useful to our users, so you can remove the README entry from the .docs file
  95 [01:30] <jawnsy> now, it's no use keeping an empty .docs file around, so since there's nothing we need to install, you may simply rm the .docs file
  96 [01:30] <gwolf> In fact, it could be (and was, several releases ago) simpler: debhelper is quite flexible. here, the filenames are prepended by the package name (liblocale-msgfmt-perl.docs i.e.) - If you were to add other binary packages generated by the same source, they would not be included. you could just name them "docs" and "examples", and the results would end up in all generated files.
  97 [01:30] <gwolf> sorry, all generated binary packages
  98 [01:31] <jawnsy> Is everyone following with us here?
  99 [01:31] <maddeth> could you just remove the *.docs file altogether? or is it a requirment?
 100 [01:31] <jawnsy> You can remove the .docs file if it's empty
 101 [01:31] <gwolf> You can of course remove it if there are no docs to install
 102 [01:31] <jawnsy> And you should.
 103 [01:32] <jawnsy> Okay, the next file to look at is 'rules'
 104 [01:32] <jawnsy> Some of you in the audience might notice that it looks an awful lot like a makefile.
 105 [01:32] <jawnsy> Well, it is :-)
 106 [01:32] <jawnsy> (and is in fact processed by GNU make)
 107 [01:32] <gwolf> Documentation is usually installed to /usr/share/doc/<pkgname>, and examples /usr/share/doc/<pkgname>/examples.
 108 [01:33] <gwolf> jawnsy: In fact, there was a discussion some months (years?) ago in Debian, as to whether debian/rules needed to be a Makefile or could be something else
 109 [01:33] <gwolf> in theory it would work just if it had the proper shebang to anything other than make
 110 [01:33] <gwolf> in the end it was left as a GNU make file fo... consistency
 111 [01:34] <jawnsy> syntactically, makefiles are pretty easy to work with. there's not too much you need to know to work with a makefile.
 112 [01:34] <gwolf> heh, at first sight don't try to make _much_ sense out of debian/rules
 113 [01:34] <jawnsy> depending on the version of dh-make-perl you have installed, you might get files of various length.
 114 [01:34] <gwolf> It basically means: "For every target, call the suitable dh helpers"
 115 [01:34] <gwolf> oh, right!
 116 [01:34] <gwolf> Well, for the latest versions, using the short DH7 variant, it basically says:
 117 [01:34] <jawnsy> Just remember that the rules file you have is what tells debhelper how to build and install your package, and how to clean up after itself
 118 [01:34] <gwolf> #!/usr/bin/make -f
 119 [01:34] <gwolf> %:
 120 [01:34] <gwolf>         dh $@
 121 [01:35] <gwolf> But we used to generate a ~50 line debian/rules until recently.
 122 [01:35] <jawnsy> that's a new shorthand debhelper has, which makes working with and maintaining packages that much easier, especially Perl ones
 123 [01:35] <jawnsy> the last file we haven't looked at yet is watch
 124 [01:36] <jawnsy> you don't need to care that much about that one. It's just a way for Ubuntu and Debian to automatically look for new upstream versions
 125 [01:36] <jawnsy> because everything is on the CPAN, dh-make-perl sets that up for us :-)
 126 [01:36] <gwolf> it basically consists of an URL and a pattern to look for in its webpage
 127 [01:36] <jawnsy> this way, some commands that use it, such as uscan (in package devscripts, which you should've installed by now)
 128 [01:37] <jawnsy> can make use of the information therein. It doesn't really matter for now :-)
 129 [01:37] <jawnsy> okay, so, now that we know what all these control files are doing, change back to Locale-Msgfmt-0.14 (the root of your package)
 130 [01:37] <gwolf> but you can try, just for the sake of it: Run "uscan --verbose"
 131 [01:38] <jawnsy> ah, good point gwolf :-)
 132 [01:38] <gwolf> :)
 133 [01:38] <jawnsy> okay, now, to actually build this package into the binary .deb files we are used to seeing
 134 [01:38] <gwolf> anyway, jawnsy... you were picking up your magic wand
 135 [01:38] <gwolf> please perform the trick
 136 [01:38] <gwolf> note that I have my hands firmly tied behind my back and cannot move.
 137 [01:39] <jawnsy> Make sure you have the 'dpkg-dev' package installed
 138 [01:40] <jawnsy> this is a collection of programs you'll need to build .deb binaries
 139 [01:40] <jawnsy> there are two commands we can use to start the build, either debuild or dpkg-buildpackage
 140 [01:41] <jawnsy> it will display a lot of output. if you've ever installed a CPAN module in the past, you'll note that the output looks mostly the same
 141 [01:41] <jawnsy> this is because the debhelper process is actually running the Perl build system -- that is, running Makefile.PL or Build.PL
 142 [01:42] <jawnsy> Is anyone having problems with the build?
 143 [01:42] <jawnsy> if you do a ls of your current working directory, you'll note that there are some intermediate build files. this is because debhelper built the module and hasn't cleaned up after itself
 144 [01:43] <jawnsy> in order to restore everything back to the "clean" state, run the command: debian/rules clean
 145 [01:43] <jawnsy> or 'debclean'
 146 [01:43] <maddeth> sorry jawnsy where do we run dpkj-buildpackage? the debian directory?
 147 [01:43] <gwolf> you can run it from the base package directory
 148 [01:43] <jawnsy> you want to run it in the root directory of the module, so in this case, Locale-Msgfmt-0.14
 149 [01:43] <maddeth> thankyou
 150 [01:44] <gwolf> (you will notice my hands have been untied and you have some shiny new packages ready!)
 151 [01:44] <jawnsy> the reason for that is that dpkg-buildpackage looks for files in debian/* under the base directory
 152 [01:44] <jawnsy> once you have done the build, change to the directory *above* the base directory (this is why I told you to make a temporary directory at the beginning)
 153 [01:45] <jawnsy> you should notice a bunch of files there. Most importantly to this process is the .deb file, which was magically built for you by dpkg-buildpackage
 154 [01:45] <gwolf> In fact, we could have got to this precise place even in a more automated way to begin with :-) If we had specified the command «dh-make-perl --build --cpan Locale-Msgfmt», the package would have been built and left in our currently working directory. Many times I have done that.
 155 [01:45] <jawnsy> if you so desire, you can install it on your system using: sudo dpkg --install liblocale-msgfmt-perl_0.14-1_all.deb
 156 [01:46] <jawnsy> but, how do we know what it's going to install? how can I be sure it won't overwrite some really important files?
 157 [01:46] <gwolf> Well, to begin with... The dpkg package management system would refuse!
 158 [01:46] <dam> gwolf: but you would miss the cleanup of .docs
 159 [01:46] <jawnsy> quite conveniently, dpkg provides a "--contents" command
 160 [01:46] <gwolf> dam: Of course. But for local builds, that's often enough :)
 161 [01:46] <jawnsy> so that we can basically list the files inside our binary, and more importantly see *where* files will be installed
 162 [01:47] <gwolf> (you'd even miss the warm feeling from having a human look at it)
 163 [01:47] <jawnsy> ok, so now, please find the .deb file which was built
 164 [01:47] <jawnsy> and execute the command: dpkg --contents *deb
 165 [01:47] <jawnsy> you should get a listing of files which looks a lot like some 'ls' output
 166 [01:48] <jawnsy> this way, you can see exactly where things will install, without actually installing the binary. note that this works with any Debian (or Ubuntu) package :-)
 167 [01:48] <gwolf> ...or, conveniently, just debc *deb
 168 [01:48] <jawnsy> the Debian Perl philosophy is very much like the Perl philosophy -- there's more than one way to do it!
 169 [01:49] <jawnsy> So at this time we'd like to ask the floor for any questions they might have
 170 [01:49] <jawnsy> by now you've packaged your first Perl module, and I bet you're thinking, wow, that was easy :-)
 171 [01:49] <gwolf> agree :)
 172 [01:50] <jawnsy> in the Debian pkg-perl team we have more scripts which help us with this sort of thing, but right now you've got enough know-how to build Perl modules on your local machine
 173 [01:50] <gwolf> ..and soon afterwards, we will stat talking about how to do this in a better organized way, how to contribute to your distribution, and how to be rich and famous! (or at least, how to get to travel quite a bit)
 174 [01:50] <nhandler> How would I go about getting this module uploaded to Debian and maintained by pkg-perl ?
 175 [01:50] <nhandler> ;)
 176 [01:50] <jawnsy> That, is quite a good question.
 177 [01:51] <jawnsy> OKay let me dispel some myths first of all
 178 [01:51] <jawnsy> Many people seem to think that in order to contribute to Debian or Ubuntu, you've got to be a Debian Developer, or a Ubuntu Developer
 179 [01:51] <jawnsy> the pkg-perl team is a great way to get involved in both Debian and Ubuntu
 180 [01:51] <gwolf> good!
 181 [01:52] <jawnsy> and best of all, you don't need to be a full-fleged Developer
 182 [01:52] <gwolf> In fact, it is a great way to check how your packaging is, and have other people do the heavy lifting
 183 [01:52] <gwolf> ...Our team, as I said earlier, has around 15 active members (from a much larger list).
 184 [01:52] <jawnsy> Basically, under the pkg-perl team, we maintain all our packages as a group
 185 [01:53] <jawnsy> It's nice because if you ever get stuck, you have a great support network of people to ask for help
 186 [01:53] <gwolf> Of course, to be able to become active in it, you should at least know the basics of Perl and Debian packaging, and be interested and willing to work on any potential bugs
 187 [01:53] <jawnsy> And, more importantly, it's never hard finding a sponsor -- many Ubuntu and Debian developers are part of the group :-)
 188 [01:53] <gwolf> (hold a second for me, we are being moved to a different laboratory)
 189 [01:53] <jawnsy> maddeth: how did your build go?
 190 [01:53] <maddeth> flawlessly thankyou
 191 [01:54] <maddeth> just running a few things through my head :)
 192 [01:54] <jawnsy> Please folks, if you have questions, feel free to ask. And if you're packaging something for your own use later and you come across something else, feel free to join our group channel and ask us
 193 [01:54] <jawnsy> the pkg-perl group sits on IRC at irc.debian.org (OFTC) #debian-perl
 194 [01:55] <gwolf> ready
 195 [01:55] <jawnsy> If you're looking for a way to really make your mark on Debian or Ubuntu, please join the group. You don't need any prior experience to join the group
 196 [01:55] <gwolf> ok... So in order to work on this group, there is a couple of things to add to your skillset
 197 [01:55] <gwolf> First of all, as I said, we collectively maintain ~1300 packages
 198 [01:56] <gwolf> The best (only?) way we can do this is to coordinate it via a version control system
 199 [01:56] <gwolf> that ensures we all share each other's package modifications - And we use SVN (Subversion) for it
 200 [01:57] <gwolf> Before anybody asks - there has been talk regarding how to move our workflow towards the much more agile and flexible Git
 201 [01:57] <gwolf> ..We will get to it, sooner or later.
 202 [01:57] <jawnsy> having things in subversion or any VCS really.. is indispensible
 203 [01:57] <jawnsy> for example I could ask gwolf to take a look at something for me and help me figure out why it's not building
 204 [01:57] <gwolf> And taht also allows us to do transversal, large-scale updates
 205 [01:58] <gwolf> i.e. if we were to decide to, say, change some part of our build process, we could run it from one single place, for all of our packages
 206 [01:59] <gwolf> of course, we would have to do each change separately (i.e. via a script), but it would be grouped into one logical entity - into a single commit.
 207 [01:59] <gwolf> Anyway - where to look for this information?
 208 [01:59] <jawnsy> Seriously, if you've got some free time and a passion to learn something new, I would really recommend joining the group
 209 [02:00] <gwolf> Well, the main pointer holder is at the group's (very basic!) page: http://pkg-perl.alioth.debian.org/
 210 [02:00] <gwolf> This page just holds pointers to our inside bits
 211 [02:00] <gwolf> I would read them (and refer to them) in +- the following order:
 212 [02:00] <jawnsy> The great thing about Open Source is that if you want something, you can just dive in and do it yourself
 213 [02:01] <jawnsy> I myself have 91 packages in Debian's main repository, and like I said, I'm not a Debian Developer :-)
 214 [02:01] <gwolf> - How does this group use Subversion? http://pkg-perl.alioth.debian.org/subversion.html   (includes a short guide on a great tool we have, which is indispensable for our work: svn-buildpackage)
 215 [02:01] <jawnsy> it's a great way to get some experience working on Debian and Ubuntu. It's a great way to enhance your system
 216 [02:01] <jawnsy> actually being part of the group, I come across a lot of really neat modules while packaging them
 217 [02:01] <jawnsy> so it's useful in that sense too
 218 [02:02] <gwolf> - The Perl packaging policy: http://pkg-perl.alioth.debian.org/policy.html
 219 [02:02] <gwolf> jawnsy: That's really true. And you never know who will be the next person to show you something new
 220 [02:02] <jawnsy> plus, I've met some really nice people in the pkg-perl group that I am honoured to call my friends
 221 [02:03] <gwolf> - General tips and tricks: http://pkg-perl.alioth.debian.org/tips.html
 222 [02:03] <jawnsy> joining the group is a huge plus if you're looking to get some experience coding
 223 [02:03] <jawnsy> we do a lot of things in the group which are transferable skills
 224 [02:03] <jawnsy> for example managing the bug system, dealing with other people, discussing new ideas
 225 [02:03] <maddeth> thankyou for the tutorial, I need my sleep now :)
 226 [02:04] <gwolf> http://pkg-perl.alioth.debian.org/cgi-bin/pet.cgi - possibly the best reference point we have towards the current status of all of our packages
 227 [02:04] <gwolf> (looking for quilt's...)
 228 [02:04] <gwolf> http://pkg-perl.alioth.debian.org/howto/quilt.html
 229 [02:05] <gwolf> This last one: Not very often, we will have to patch (modify) the author's code in order to route around a problem
 230 [02:05] <gwolf> The best way to do so, keeping everything most traceable, is using the Quilt patch management system.
 231 [02:06] <gwolf> jawnsy: dam (in #debian-perl) is most right! We forgot one of the most important files to check: debian/copyright
 232 [02:06] <jawnsy> I thought that'd be a bit too much for a gentle introduction
 233 [02:06] <gwolf> debian, and Ubuntu (although to a smaller degree) really base their work on respect to Free Software
 234 [02:07] <gwolf> in order for a package to be built (and yes, this time it _is_ a requirement), it has to list its copyright information
 235 [02:07] <gwolf> debian/copyright is a human-readable (and increasingly, machine-readable - but that's not necessarily yet a given) file explaining which licensing scheme does this particular package follow
 236 [02:08] <gwolf> Most usually, Perl modules are licensed "under the same terms of Perl itself"
 237 [02:08] <gwolf> that means, under the GNU GPL 1 or any posterior version or under the Artistic license, at your choice
 238 [02:08] <gwolf> so, yes, this has to be listed in debian/copyright
 239 [02:09] <gwolf> jawnsy: so... where should we go from here? At 03:10, my brain is drying, and I think I'd appreciate some Q&A
 240 [02:09] <jawnsy> increasingly a lot of companes are working with Debian and Ubuntu
 241 [02:09] <jawnsy> so joining the group and learning the ins and outs of maintaining packages could very well help you land a sysadmin-type job
 242 [02:10] <gwolf> of course - it is highly visible, permanent professional information you can talk about
 243 [02:10] <jawnsy> a lot of companies use locally build packages for distributing and updating even internal packages for distribution to their production servers
 244 [02:11] <jawnsy> but yes, I'd like to open the floor to any questions
 245 [02:11] <gwolf> so, people... is there any of you awake+online? :-}
 246 [02:11] <gwolf> Are there any questions?
 247 [02:11] <gwolf> There is a lot of where to go on... but I think we have mostly covered the basics
 248 [02:12] <nhandler> So if I am not a Debian Developer, how could I get my package uploaded? Would I need to go through mentors.debian.net ?
 249 [02:12] <jawnsy> If you are reading the log of this talk later on, and you have questions, feel free to come on irc.debian.org #debian-perl and ask :-)
 250 [02:12] <jawnsy> That is a very good question :-)
 251 [02:12] <gwolf> nhandler: no, not necessarily
 252 [02:12] <jawnsy> just by joining the pkg-perl team, you can skip the mentors process if you desire
 253 [02:12] <gwolf> nhandler: If the package is a Perl one, going through mentors would certainly be among the slowest ways possible
 254 [02:12] <gwolf> The first thing to do is to get an Alioth account
 255 [02:13] <jawnsy> personally, like I say I'm not a DD, I've never uploaded a package through a mentor
 256 [02:13] <jawnsy> the purpose of a mentor is to review your package and help you with building it, fixing up the necessary control files, and uploading it
 257 [02:13] <gwolf> Alioth (http://alioth.debian.org) is Debian's online collaboration subsystem, it is a GForge-derived site
 258 [02:13] <jawnsy> thankfully, the DD sponsors in our group serve the same purpose
 259 [02:14] <gwolf> Alioth is open to DDs and non-DDs, with the sole difference that you will have '-guest' appended to your login in case you are not a DD (yet?)
 260 [02:14] <jawnsy> they also teach newcomers how to build Debian Perl packages (similar to what we've discussed here today, but also covering some rarer cases)
 261 [02:14] <gwolf> But yes, it is common to find a newbie in the #debian-perl group asking how to join and what to do
 262 [02:14] <jawnsy> we are a rather informal group.. more of a collection of friendly people
 263 [02:15] <gwolf> nhandler: So, to round your question: You request an Alioth account and svn-inject your package
 264 [02:15] <gwolf> nhandler: ...We will notice it and build it, usually soon
 265 [02:16] <jawnsy> working with our SVN workflow is a totally different lecture for a different day, but it's not hard. we have tools, like svn-inject as gwolf mentioned, that help us do it
 266 [02:16] <gwolf> oh, of course, you have to request to join the pkg-perl group once you have your Alioth account
 267 [02:16] <jawnsy> anyway, barring any other questions, it looks like we can draw this talk to a close
 268 [02:17] <nhandler> You mentioned that you maintain ~1300 packages. How do you keep track of which ones need to be updated, and which have bugs?
 269 [02:17] <jawnsy> We have a tool (yay, another tool) called the Package Entropy Tracker
 270 [02:17] <gwolf>  http://pkg-perl.alioth.debian.org/cgi-bin/pet.cgi
 271 [02:17] <jawnsy> ah I was finding the link, beat me to it gwolf :-)
 272 [02:17] <gwolf> :)
 273 [02:18] <jawnsy> as you can see from the page, it lets us know what we need to fix -- packages with really important bugs, packages with new upstream versions (that's what the watch file was about)
 274 [02:18] <jawnsy> and it allows us to collaborate as a group -- so for example I don't do something to a package gwolf is working on
 275 [02:18] <jawnsy> (otherwise one of us would be doing double work)
 276 [02:19] <gwolf> The IRC channel is a great place to hang out (and I very seldom join any IRC channels - But this one is actually productive!)
 277 [02:19] <nhandler> So does that mean that I can work on any package maintained by pkg-perl? Even if someone else packaged it?
 278 [02:19] <jawnsy> generally, yes it does. If you want to dive in, feel free to do so!
 279 [02:19] <gwolf> Of course. Every now and then people appear. And some others disappear
 280 [02:19] <gwolf> And even if no one does - If I find a package that needs love, and have love to give, I will work on it
 281 [02:20] <jawnsy> it's a really great way to get experience working with Perl modules, but in a less aggressive way than writing ones for CPAN
 282 [02:20] <gwolf> Usually, whenever you update a package, you will add yourself as an uploader to it (which means, claim responsablity for its maintenance)
 283 [02:20] <jawnsy> for example we do a lot of Quality Assurance stuff, like fix outstanding bugs
 284 [02:20] <jawnsy> one great thing about our package system, and as gwolf mentioned earlier, quilt... is that we can ensure good QA
 285 [02:20] <jawnsy> by fixing modules ourselves if necessary.
 286 [02:21] <gwolf> ...and more easily push the changes up to the authors
 287 [02:21] <jawnsy> so let's say there's a serious security issue with a package. well, in Debian we can just patch it ourselves, and push out a new release, while simultaneously working with the upstream author to resolve the issue
 288 [02:21] <jawnsy> in that way, Debian and Ubuntu users are safe, even if the Upstream maintainer doesn't know about or doesn't fix a package
 289 [02:22] <jawnsy> actually a lot of upstream CPAN authors sort of just abandon their stuff, so the pkg-perl team takes care of its long-term maintenance
 290 [02:22]  * gwolf yawns
 291 [02:22] <gwolf> people, any questions?
 292 [02:22] <jawnsy> it's something I think is tremendously useful experience
 293 [02:22] <jawnsy> just how to debug things, how to work with bug systems
 294 [02:22] <gwolf> If you don't fire...I'll go to sleep!
 295 [02:22] <jawnsy> these are things you often won't learn in school, but that can make all the difference in your career
 296 [02:22] <jawnsy> whether you hit the ground running or whether you'll have to start crawling ;-)
 297 [02:22] <gwolf> I completely agree with jawnsy
 298 [02:23] <gwolf> Anyway... jawnsy: I think we should call this as done
 299 [02:23] <jawnsy> yep. thanks everyone for listening, I hope it's been a good experience for everyone
 300 [02:23] <gwolf> jawnsy: nhandler says the logs will be available
 301 === jawnsy changed the topic of #ubuntu-classroom to: Ubuntu Classroom || https://wiki.ubuntu.com/Classroom || https://wiki.ubuntu.com/Packaging/Training || Upcoming: July 30 @ 06:00 UTC: Mozilla packaging techniques (extensions, patchsystems, bzr) || Run 'date -u' in a terminal to find out the UTC time
 302 [02:24] <gwolf> I hope you found this interesting, and hope to have you on board on the team!
 303 [02:24] <nhandler> Logs will be at https://wiki.ubuntu.com/Packaging/Training/Logs/2009-07-23
 304 [02:24] <nhandler> Thank you jawnsy and gwolf for leading this session
 305 [02:24] <porthose> jawnsy gwolf, thx  great session
 306 [02:24] <gwolf> thank you for inviting!
 307 [02:24] <nhandler> Remember, if you have and questions, the pkg-perl team is in #debian-perl on irc.debian.org
 308 [02:24] <jawnsy> and if you're at DebConf you can have a beer with gwolf :-)
 309 [02:25] <jawnsy> thanks to the Ubuntu community for having us, and for working so closely with Debian to the benefit of both communities
 310 [02:25] <gwolf> jawnsy: And with dam, and with gregoa, and with diocles!
 311 [02:25] <gwolf> Thank you all, even if you removed our Op modes ;-)
 312 [02:26] <jawnsy> I really hope you all take the opportunity to be a bit social.. feel free to drop by just to say hi, even :-)
 313 [02:26] <jawnsy> the Ubuntu and Debian projects are both highly social, so I hope you all take the chance to participate everywhere you can, when you can
 314 [02:26] <gwolf> jawnsy: And by all means, specifically you, try to join a DebConf in the future!
 315 [02:26] <gwolf> Anyway, I'm heading off
 316 [02:26] <gwolf> nice being here, hope to see you in our little channel!
 317 


CategoryPackaging

Packaging/Training/Logs/2009-07-23 (last edited 2009-07-23 02:04:50 by nhandler)