Ubuntu Open Week - Maintaining an Ubuntu Package - Thu, Nov 30, 2006

see also Monday Session.

=== ..[topic/#ubuntu-classroom:LjL] : Welcome to Ubuntu Open Week, Nov 27 - Dec 2 between 3-10pm UTC, to see this in your timezone, visit http://tinyurl.com/ykqc67 | Schedule: https://wiki.ubuntu.com/UbuntuOpenWeek | Friday's Freshers' Day! Join #ubuntu-freshers for talk+questions | /msg ubotu lots for logs | Please keep support questions in #ubuntu | Class discussions+questions in #ubuntu-classroom-chat | Current Session: Maintaining an Ubuntu package
09:01   LaserJock       ok, time to get started?
09:02   LaserJock       Hello everybody!My name is Jordan Mantha and I'm a PhD Chemistry student and Ubuntu volunteer.
09:02   LaserJock       In Ubuntu I'm a Universe developer, a part of the Documentation Team, on the Edubuntu Council, and am just generally an Ubuntu-holic.
09:02   LaserJock       Today I want to talk a little about what how we maintain software once it's already in our software repositories (Main, Restricted, Universe, Multiverse)
09:03   LaserJock       so far during the Open Week we've had talks on how to package
09:03   LaserJock       how to patch packages
09:03   LaserJock       etc.
09:04   LaserJock       so I'm not really going to cover that so much
09:04   LaserJock       I think there are 3 things that are important to keep in mind here:
09:04   LaserJock       1. Ubuntu is intimately connected to Debian
09:04   LaserJock       3. Ubuntu relies on thousands of "upstreams"
09:04   LaserJock       2. Ubuntu uses Launchpad ( http://launchpad.net ) for virtually all package maintenance
09:05   LaserJock       Ubuntu is a Linux distro
09:05   LaserJock       which among other things, means it usually doesn't write it's own software
09:05   LaserJock       but instead collects other people's software (upstreams) and "glues" them together and makes sure they work right
09:06   LaserJock       so lets look at the 3 things I've outlined above in a little more detail
09:06   LaserJock       1. Ubuntu is intimately connected to Debian
09:06   LaserJock       Ubuntu is a Debian-based distro
09:06   LaserJock       that's probably not surprising to anybody
09:07   LaserJock       but we don't fork Debian
09:07   LaserJock       instead at the beginning of each development cycle we take a snapshot of Debian's unstable repo
09:08   LaserJock       and we spend much of the first half of the development release cycle merging those changes back into Ubuntu
09:09   LaserJock       ok, so the question is how do we keep track of what we've changed and what's straigh from Debian
09:09   LaserJock       to differentiate we use a particular versioning scheme
09:09   LaserJock       any source package that has been changed or modified in any way will give a ubuntuX version put on the end
09:10   LaserJock       where X starts at 1 and just increments with each upload we make that keeps the same base Debian version
09:10   LaserJock       so when we go through our merging/syncing phase at the beginning of the cycle we determine which packages were changed in the previous version
09:11   LaserJock       and if they weren't changed, we just sync the Debian package straight over
09:11   LaserJock       however, if there was a change a handy script called Merge-o-Matic (MoM) will attempt to merge the package in a semi automated way
09:12   LaserJock       the thing to note here is that *every* package that had a previous Ubuntu change has to be manually checked before it is either synced (if Debian picked up our changes and we don't need them anymore) or merged (we still need them)
09:13   LaserJock       so just to see the scale we are taking about here are some stats for edgy:
09:13   LaserJock       In the Main repo there are a total of 5382 source package
09:14   LaserJock       978 of them have ubuntuX versions and have to be manually checked
09:14   LaserJock       in Universe there are 18656 source packages
09:14   LaserJock       1250 of them have ubuntuX versions
09:15   LaserJock       so that's over 2000 packages that have to be manually checked, merged, built, and tested before being uploaded
09:15   LaserJock       we have probably around 100 people doing this work
09:15   LaserJock       around 80% are volunteer community members
09:16   LaserJock       ok, let's take a question break

< rmjb> If every package with an Ubuntu change needs to be manually checked, what does MoM do?

< andresmujica> Does it means that Debian takes changes made here at ubuntu for their own packages???

< ailean> can you point us in the direction of some tutorials?

< urbnsr> Are there packages that start for ubuntu only or do all packages have to come via Debian?

< andresmujica> It seems that there' s some work duplicated at several levels, package creator, debian, and ubuntu.. any proposal or way to improve this? or is defacto way?

09:24   LaserJock       OK, so the second item: Ubuntu relies on thousands of "upstreams"
09:25   LaserJock       so Debian is our first upstream most of the time
09:25   LaserJock       but they have upstreams too
09:25   LaserJock       the original software authors
09:26   LaserJock       and if we want our work to help the maximum number of people we need to get our changes to them
09:26   LaserJock       also, as software develops, it doesn't do so on the same time line
09:26   LaserJock       so we have to be aware of thousands of different projects all releasing at different times
09:27   LaserJock       and we have to work to make sure we can produce the most stable and usable distro we can
09:27   LaserJock       that really leads to my 3 point: Ubuntu uses Launchpad ( http://launchpad.net ) for virtually all package maintenance
09:28   LaserJock       Launchpad is essentally a very large distro managment web app
09:28   LaserJock       developed by Canonical (the Ubuntu sponsor company)
09:29   LaserJock       and it includes a bug tracker (Malone), specification tracker, translation system, support tracker, etc.
09:29   LaserJock       it also houses our archive maintainence and build structure
09:30   LaserJock       Launchpad can sometimes be a bit confusing to use when you first get started with it
09:30   LaserJock       so here's my #1 tip, learn how Launchpad uses URLs
09:30   LaserJock       so you can "build" your own URL to go where you want
09:31   LaserJock       it makes finding things pretty easy
09:31   LaserJock       For instance, if you want to know about a particular source package use:
09:31   LaserJock       http://launchpad.net/distros/ubuntu/+source/<packagename>
09:31   LaserJock       If you want to see all the bugs for a package just add on +bugs:
09:31   LaserJock       http://launchpad.net/distros/ubuntu/+source/<packagename>/+bugs
09:31   LaserJock       Parts of the URL with the + in front are important, they are like modifiers to the thing that goes before it. In this case we want to see bugs for <packagename>
09:32   LaserJock       now one of the things that makes Launchpad good for package maintainance and communication with upstream is you can link to other bug trackers
09:32   LaserJock       for instance, right now, Launchpad can link and track bugs in Debian, Gnome, KDE, Mozilla to I believe
09:33   LaserJock       so if somebody files a bug in Launchpad for Ubuntu
09:33   LaserJock       and I see that Debian has reported the same bug
09:33   LaserJock       I can link to that one and watch it's progress
09:33   LaserJock       and be notified when it's been fixed so that I can make sure to get those fixes

< proppy> sometimes when we package for multi distribution and there is different dependencies, we supply multi control files for each distribution (for example control.dapper which differ from control.sarge), i believe this is not the correct way to do it?

< gumpa> is Launchpad a Zope3 app?

< andresmujica> About upstream bug trackers, should i search for a similar bug or report a knew one pointing to the bug reported..

09:41   LaserJock       ok, that's a basic overview of what maintaining a package in Ubuntu involves
09:41   LaserJock       other then the nitty gritty details of the actual packaging
09:41   LaserJock       so I'd like to open it up for any general package maintainance questions

<proppy> Given that i know which dependencies differs from the debian packages, is there a way to provide theses information *in* the debian packages, to they get applied when synced from the unstable repository ?

< rmjb> how important is the maintainter's relationship with the upstream developer? Do you need their permission before packaging thier software for Ubuntu?

< andresmujica> Is any kind of public building machine or should i compile at my own server and then distribute the package?

< cbx33> Where can I get more information about maintaining packages using make? How much make knowledge is needed?

< LjL> Would that, once it exists, also allow building packages without actually having all the required -dev dependencies installed on the local machine, and/or setting up a chroot environment, and similar relatively onerous undertakings?

< somerville32> Can you compare and constrast Stable Update Releases and Backports?

< apokryphos> with regard to Canonical making a build service, have they not considered using the already active/popular SUSE build service?

[somerville32] How do you gauge severity?

09:58   LaserJock       NOTE: the MOTU (universe maintainers) rock hard core so if you have any further questions pop on over to #ubuntu-motu
09:58   LaserJock       or on the ubuntu-motu mailing list on lists.ubuntu.com
09:58   LaserJock       thanks bhale

MeetingLogs/openweekedgy/MaintainPackages2 (last edited 2008-08-06 16:15:52 by localhost)