Ubuntu benefits from a strong Debian, and Debian benefits from a strong Ubuntu. - MarkShuttleworth
Every Debian developer is also an Ubuntu developer, because one way to contribute to Ubuntu is to contribute to Debian. - MarkShuttleworth
We incorporate Debian changes regularly, because that introduces the latest work, the latest upstream code, and the newest packaging efforts from a huge and competent open source community. Without Debian, Ubuntu would not be possible. - MarkShuttleworth
This page is for Ubuntu developers who are thinking about contributing to Debian. It gives the current "best practice" with regard to collaboration with another distribution. This is not a requirement, but it can make everybody's life much easier to keep other distributions and upstream on the same page.
Why should I care about Debian?
Ubuntu is Debian-based.
Debian supports more hardware architectures, so if you want to run something like Ubuntu in your (not so) new mips machine it will be really useful.
- Debian project has more volunteers than Ubuntu. Ubuntu community as a whole can benefit from it (and it's, right now).
What's stable, testing, unstable?
The “stable” distribution contains the latest officially released distribution of Debian. The “testing” distribution contains packages that haven't been accepted into a “stable” release yet, but they are in the queue for that. The main advantage of using this distribution is that it has more recent versions of software. The “unstable” (codenamed sid) distribution is where active development of Debian occurs. Generally, this distribution is run by developers and those who like to live on the edge.
More information about Debian releases, how "testing" becomes "stable" and more can be found at: Debian releases page.
I'm a Ubuntu user and I want to install Debian
The Debian project and contributors are developing d-i, the new Debian installer. It is in use by Debian and Ubuntu, with minor changes. In other words, if you feel comfortable installing Ubuntu you will have the same feel installing Debian.
Note that Ubuntu (by default) installs a full desktop enviroment called GNOME and other applications for desktop use. Debian installation procedure will ask you which sets of packages you want to install.
You can download latest Debian release to install at: Debian "squeeze" Installation Information page.
Why contribute to another distribution ?
The first thing to remember is that Ubuntu has a particularly close relationship with Debian. We regularly take updates from Debian, not just at the start of the Ubuntu project, but dynamically. Thus, packages that are newer in Debian are merged or synced in Ubuntu. It would be impossible to manage universe without merging from Debian, since Ubuntu has (and might always have) far less manpower than Debian.
You should aim at improving Free Software in general (or the whole world ), not just your own distribution. Contributing to upstream is the best way to do so, but contributing to Debian is also a good option. It makes everybody's life more simple, since Ubuntu syncs its packages from Debian. Having less Ubuntu-specific changes means less work to do.
Forwarding bug reports
When you find or fix a bug in Ubuntu, check if the bug applies to Debian too. If so, report a bug in the Debian Bugtracking System (you don't need to run Debian to do so). You don't need to run Debian to deal with bugs in Debian : reporting and adding comments to bugs can be made by email as described on this page.
Some things to keep in mind:
- Always mention that you are running Ubuntu, not Debian.
Forwarding bugs that might apply to Debian should be done with care. If you haven't checked throughly that Debian was affected, don't file the bug or mention it in the bug report. If unsure, ask a Debian user to try to reproduce it, or set up a Debian chroot on your computer (see DebootstrapChroot).
Think about the severity you'll set carefully. People usually don't like to see "hugely important bugs" which are actually minor glitches or cosmetic issues. Bug severities in Debian are documented here. Step down if you are not sure.
Read and apply How to Report Bugs Effectively.
Getting new software in Debian
Why would I get my work in Debian ?
If you try to get a package included into Ubuntu directly, you might find that reviewer time is limited. We generally encourage contributors to instead get their packages through Debian, where there is significantly more (and more specialised) mentorship available.
You're probably thinking that as an Ubuntu user, you don't really mind having your work in Debian. Well let us take a look closer to understand why you want your work to be in Debian.
- Debian has a lot of users who will be interested in your package. Your package will get good press (Debian Weekly News for example), and also good bug reports from the big Debian user community.
- If you don't, a Debian developer might start packaging the same software without noticing that you already packaged it. Duplicating efforts sucks, and it will suck even more when his package will be uploaded to Debian: should Ubuntu sync it or use your package ? (To prevent unnecessary divergence, it will probably be synced, overriding your work).
- Contributing your work to Debian is probably what you should do, ethically speaking. For example, your package will be available to more users.
How do I do it ?
Depending on your final goal, and the time you want to invest in this, you have several options.
Important note: The following options are in no way part of the Ubuntu policy. They are merely advice to help improve the whole system.
Required packaging changes
Debian has some different policies for packages. As a result, in order to get your package added to the Debian repositories, certain changes will need to be made.
- The version should not include the -0ubuntu1 part at the end. Instead, it should end in -1. The -X part is the Debian revision number. When the application was packaged for Ubuntu, it was not present in the Debian repositories. As a result, this number was 0. However, now that it is going to be added in Debian, it should be a 1. The ubuntu1 part was the Ubuntu revision. Since this package is for Debian, the ubuntu revision can be completely omitted.
- Instead of targeting the current Ubuntu Development release, you will need to target 'unstable'.
Debian does not have a single team that is in charge of maintaining all of the packages. Instead, each package has its own maintainer. Since you are the one who packaged the application, when it gets added to the repositories, you will be the maintainer. As a result, the Maintainer field should contain your information. The only exception is when the package is maintained by a team (see below for a list). In this case the team will be Maintainer and you will usually put your name in Uploader.
- The XSBC-Original-Maintainer field is only used in Ubuntu. It is not needed in Debian, and should be removed.
If your Section field references a specific Ubuntu component (e.g. universe/sound where universe is the Ubuntu component) you need to remove it (so that it becomes sound only) because in Debian all free software goes into main and the Ubuntu components are invalid in Debian.
Notifying Debian that your package exists
If you just want to notify Debian that a package for this software is already available, file an RFP (Request For Package). In the RFP, mention that you packaged the software for Ubuntu, and add a link to the package source.
Some day (no guarantees ), a Debian developer will adopt your package, become its maintainer, and upload it to Debian. It will then go back to Ubuntu through normal merges (see UbuntuDevelopment/Merging).
Check out the Debian Mentoring FAQ to find out how to get your package included in Debian too.
Maintain the package in Debian yourself
If you would like to maintain the package inside Debian yourself (you don't need to be a Debian Developer to do that, and you will learn a lot of things by doing that) :
file an ITP (Intent To Package). In the ITP, mention that you packaged the software for Ubuntu, and add a link to the package source.
- Find a sponsor (whose role will be to review your package again, and upload it to Debian).
Read the debian-mentors FAQ to learn more about the process.
There is an IRC channel dedicated to this particular issue on OFTC #debian-ubuntu , you can also try #debian-mentors. Another good option is to look for a packaging team which is appropriate for your package and to contact them via IRC or mail.
- Your package will get back into Ubuntu through normal syncs and merges.
Learn how to use pbuilder. You'll need to build packages against Debian unstable. See the PbuilderHowto.
For Python packages, there is a detailed how-to: Debian/PythonModulesTeam
There is also a Perl packaging team that operates similarly to the Python team. Instead of using mentors, your should prepare your package in the Perl group's svn repo and then ask a DD member of the Perl group to review them from _there_ and upload them. The DD that uploads the package will also tag the release in the svn repository. In the Debian Perl Group, the "Maintainer:" field is always set to the DPG itself (not any individual). Those who work on the package add themselves to the "Uploaders:" field. Here is a checklist of steps in a release process using svn-buildpackage to build debian packages.
The process of filing RFPs and ITPs is described on the Debian WNPP page.
Killing the troll
Some uninformed people still think that Debian and Ubuntu are opponents, that Debian Developers and Ubuntu Developers hate each other, etc. Explain to them how things really work. Reading To Fork or Not To Fork: Lessons From Ubuntu and Debian might help to understand the details.