ForDebianDevelopers
Introduction
This document is intended to provide practical information about Ubuntu specifically for Debian developers.
- Ubuntu is proud to be based on Debian.
- Ubuntu developers want to maintain a healthy and collaborative relationship with Debian developers.
- Ubuntu has brought new users and developers to the GNU/Linux community. Some day, those new users might become Free Software developers, advocates or DD's.
How does Ubuntu differ from Debian?
Purpose and Scope
Ubuntu has a narrower focus than Debian in many ways. For example, Ubuntu supports only a subset of the architectures that Debian does, and targets specific users (for example, desktop and mobile users and server administrators), while Debian seeks to be more universal.
A good introduction page is about-ubuntu.
Licensing
Ubuntu has four components (like Debian's main, contrib and non-free), distinguished by licence policy and support terms. The following table summarizes the differences:
Source packages in Ubuntu components:
|
Free software |
non-free software |
Officially supported |
main (~2000 packages) |
restricted (~5 packages) |
Unofficial |
universe (thousands) |
multiverse (hundreds) |
Officially supported packages (main and restricted) receive security updates sponsored by Canonical, and more rigorous QA relative to the Ubuntu release cycle. The efforts of the Ubuntu core team are focused there.
The MOTU team cares for the packages in universe and multiverse (which are comprised mostly of packages from the Debian archive) on a best-effort basis, as there are a large number of packages relative to the resources of the team. Therefore, a vast majority of these packages are used unchanged from Debian, rebuilt in an Ubuntu build environment, and do not receive personal attention from an Ubuntu developer.
If a package depends upon a non-free package, it will be placed into multiverse. Multiverse is the union of contrib and non-free in Debian.
Packages
Most source packages in all Ubuntu components (about 4 in 5 at the time of this writing) are copied unmodified from Debian. There is also software in the archive which has been packaged by Ubuntu developers, and packages created specifically for Ubuntu. There are other external package sources available (e.g. Gooogle Chrome or Launchpad PPAs.)
In some cases, the same upstream software is packaged separately in Ubuntu and in Debian, though this is to be avoided unless there is a justifiable reason to do so.
Where packages in Debian and Ubuntu have a common heritage, the packages use version numbers which reflect this.
Package maintenance
Unlike Debian, Ubuntu packages usually do not have a designated maintainer. In effect, all packages in Ubuntu are maintained by teams, and there is no concept of an NMU. Packages in Ubuntu main and restricted are maintained by the Ubuntu Core Development Team, while packages in Ubuntu universe and multiverse are maintained by the Ubuntu Development Team. If you need to discuss a specific change, try poking the last person who changed the package (see the changelog at http://changelogs.ubuntu.com/).
Ubuntu does not permit binary uploads (builds performed by the developer on their own system) for any architecture. All builds are performed in clean chroots by Launchpad, and uploads are source-only (dpkg-buildpackage -S).
Bug tracking
Ubuntu tracks bugs in Launchpad. The Launchpad bug tracker makes it possible to keep track of bugs in multiple contexts, for example, if a bug is fixed upstream but not in Debian, or fixed in Debian but not in Ubuntu. It can also store links to bugs filed upstream and in Debian, and notify Ubuntu developers when their status changes. More information about bug tracking in Launchpad can be found at https://help.launchpad.net/BugTrackingHighlights and the documentation for the email interface is at https://help.launchpad.net/Bugs/EmailInterface.
Relationship to Canonical
Ubuntu, like Debian, is a free software project which is open to anyone to participate. However, it differs from Debian in that many key project resources, including servers, bandwidth and a number of core developers, are provided by Canonical. Canonical is a for-profit company which derives revenue primarily from services related to Ubuntu, such as support contracts.
What is MOTU?
With the creation of the universe component, volunteers were needed to look after these packages. A team called The Masters of the Universe (MOTU) was formed for this purpose. MOTUs sync (import without modification) or merge (import with Ubuntu-specific changes) packages from Debian. MOTUs also sometimes construct Debian-format source packages for use in Ubuntu universe directly from upstream sources. MOTUs handle bugs reported on software inside universe and multiverse.
The process to join the MOTU team is explained over here. As a Debian developer you won't have much trouble with the technical side of packaging, so the process will be a bit quicker. When applying for becoming a MOTU, two criteria are evaluated: technical skills and teamplay + knowledge of Ubuntu processes.
Why does Ubuntu need to change my packages? What kind of changes are made?
There are many reasons why packages in Ubuntu diverge from Debian, including:
- Policy differences between Debian and Ubuntu (for example, dependencies, build-time options, etc.)
- Bug fixes
- Development of new features
- Transitions: Ubuntu routinely carries out packaging transitions ahead of Debian, in collaboration with Debian representatives where a consistent policy is needed
C++ ABI (http://lists.debian.org/debian-devel-announce/2005/07/msg00001.html)
- Modular X.org
- Python
- Library SONAME changes
- Newer upstream versions: Ubuntu packages new upstream releases before Debian in some cases
- GNOME
- KDE
- Linux
- Toolchain (GCC et al)
What can I do if I feel that an Ubuntu developer or member is behaving inappropriately?
Technical issues should be raised with the Ubuntu Technical Board. Non-technical issues should be raised with the Ubuntu Community Council. Information about both bodies may be found on the governance page.
How does Ubuntu cooperate with Debian?
For many packages in main, Ubuntu has good working relationships with the Debian maintainer(s) and is involved with the core Debian development. Many volunteer developers are active in both Debian and Ubuntu camps.
Some resources can be found at the end of this page.
How can I obtain patches from Ubuntu?
Patches for Ubuntu packages are generated regularly and forwarded to the Debian Package Tracking System (derivatives keyword) and the ubuntu-patches mailing list. By using these resources, you can receive timely notification of incremental patches to your Debian packages, or to all packages in Ubuntu.
The complete delta between Debian and Ubuntu for a given package is published in Ubuntu's Debian patches repository
Sometimes, patches are manually placed in a patch archive
- In the future, Ubuntu plans to maintain this delta using distributed revision control tools, providing a convenient way to review and merge changes
You can make use of the PTS and use the derivatives keyword.
Bugs tagged with origin-ubuntu or ubuntu-patch, cf. Debian/Usertagging:
Why aren't *all* patches submitted to the Debian BTS?
Doesn't scale: Ubuntu developers regularly make changes across a range of packages in the distribution, including transitions which touch hundreds of packages. Individually filing these patches can take more time than the work itself.
Differences of opinion: Debian developers have different preferences about how they wish to receive patches, and some object to receiving them at all. By providing subscription mechanisms, Ubuntu allows Debian developers to express their preferences and have them respected automatically.
Difficult to track: A great deal of bookkeeping is required in order to keep track of which patches have been merged into Debian, either modified or unmodified. Our long-term strategy is to apply proper revision control tools to this problem, but in the meantime, the bug tracker has too much overhead.
How can I minimize the Ubuntu delta for my packages?
- In some cases it currently works very well to have the Debian and Ubuntu developers comaintain the package. By using a common source code repository, Ubuntu developers can apply general bug fixes directly to the Debian branch and then just merge the fix into the Ubuntu branch. For obvious reasons this can only work for a very small number of packages/maintainers.
Packages which originate in Ubuntu are generally maintained in the Bazaar revision control system. Debian developers who modify these packages in Debian are encouraged to use a Bazaar branch for this work in order to make it easy to merge in both directions with Ubuntu.
Avoid assuming that the name of the operating system in use is Debian. A substantial amount of work was done in Ubuntu to simplify the use of debian-installer in derivatives (which naturally don't want to claim that they're Debian during the installation), which has now been merged into Debian. This work can provide an example of how to accomplish this.
How can I ask Ubuntu to copy my package from Debian?
This is called syncing, and is outlined in the document SyncRequestProcess. The easiest way to do this is to install the ubuntu-dev-tools package, and use the requestsync script from there. This script requires a Launchpad account. See requestsync(1) for detailed usage information.
Why does Ubuntu have an older/buggy version of my package?
Because Ubuntu has a different release cycle than Debian, freezes occur at different times. Near the beginning of an Ubuntu release cycle, packages from Debian unstable are automatically copied to Ubuntu on a regular basis, but later, this is only done if the package is explicitly copied by an Ubuntu developer after being reviewed for compliance with the current freeze guidelines. Under some circumstances, the approval of a third party is required.
An outline of a normal Ubuntu release schedule can be found on ReleaseScheduleTemplate.
How can I indicate that a bug filed in Ubuntu against one of my packages is fixed in Debian?
Similar to what dak does for Debian, Launchpad looks at the .changes files for sourceful uploads for a Launchpad-Bugs-Fixed field, containing a list of bugs that should be marked as closed. This field is populated from the changelog by looking for strings of the format LP: #<bug number>.
Since each package synced or merged to Ubuntu from Debian will have a .changes file that references the Debian changelog, if you include an LP: line in your changelog when uploading to Debian, the Ubuntu bug report will automatically be closed when that package version is included in Ubuntu.
How can I get upload rights in Ubuntu for the packages I maintain in Debian?
Per-Package Uploaders are developers with a special interest in a specific set of packages in Ubuntu. They are granted direct upload permissions to the Ubuntu archive for that set of packages. If you are mostly just interested in the packages that you maintain in Debian, this may be the path for you. There is a slightly streamlined procedure for Debian Developers wishing to have upload rights for their packages. See the application process page for more details.
How can I work with the Ubuntu Security team?
Please see SecurityTeam/ForDebianDevelopers for more information.
Resources
There is an IRC channel dedicated to better cooperation between Ubuntu and Debian: on OFTC #debian-ubuntu
ContributingToDebian : Wiki page explaining to MOTU and MOTU Hopefuls how to help Debian benefit from their work.
To Fork or Not To Fork : Lessons From Ubuntu and Debian : article by Benjamin Mako Hill about the Ubuntu development model.
Debian/Bugs : Coordinating bug fixes with Debian
DebianPatchFeeding : Spec about feeding Ubuntu patches to Debian. Unfinished work.
Universe, MOTU, Debian : spec written by ajmitch. Unfinished work.
Work in progress (please help) :
DebianDemystification : Explaining the inner workings of Debian to Ubuntu developers
Contact
If you have questions about the material on this page, or have an issue regarding collaboration between Debian and Ubuntu, please contact debian@ubuntu.com.
Todo
Content which should be added to this page:
- Syncs and merges, when and how they happen
- Link to more about Launchpad?
- Patch tagging
- Separate out FAQ from other content?
Promote DDs interested in maintaining their packages in Ubuntu to apply for per package upload rights - UbuntuDevelopers#PerPackage
Suggestions
Ideas which require further discussion or development:
Handling of Ubuntu-specific patches:
- Improve changelogs entry to better describe changes (seb128 said he will push the desktop policy)
- sometimes a link to $wiki_page which explains why ubuntu is changing this.
- link explanation in changelog to specific changes (or patches).
- File Debian release goals when applicable (makes NMU a lot easier)
Improve http://patches.ubuntu.com/ . Code is available under GPLv3 on https://launchpad.net/merge-o-matic and bugs can be filed.
- Improve changelogs entry to better describe changes (seb128 said he will push the desktop policy)
Handling of Ubuntu bugs that also apply to Debian:
- Add Launchpad package bugs to Debian developer's package overview (hidden by default, probably)
Needs export of all Ubuntu bugs. See https://bugs.launchpad.net/launchpad/+bug/231402
- Send a mail to the PTS (special keyword, disabled by default) when a new bug is created/reassigned in Ubuntu
- Consider some bi-directional, opt-in mechanism to share bug discussions between LP and BTS
- Add Launchpad package bugs to Debian developer's package overview (hidden by default, probably)
Handling of packages:
Improve documentation/policy (both TODO):
- when packaging a new upstream version, always forward the diff for the packaging changes to the BTS (new upstream version bug)
- when packaging new stuff, look for ITPs/RFPs in Debian
- Display version of packages in Ubuntu in DDPO
- Documentation:
- Try to merge back documentation about packaging to the new maintainer's guide
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
Go back to Debian.
CategoryDebian
Ubuntu/ForDebianDevelopers (last edited 2017-11-27 16:03:13 by bryanquigley)