Ubuntu as in Debian?

Posted on 03.11.2008 by Kim N. Lesmer.
Ubuntu GNU/Linux has grown to become the most famous Linux distribution in the world. It is the Linux distribution on DistroWatch that currently has the greatest hit rate, and even though it is based completely upon Debian GNU/Linux, it has almost twice as many hits. This articles explains what Ubuntu is and what relation it has got with Debian.

Ubuntu

Ubuntu is a free computer operating system based on Debian GNU/Linux. Its name comes from the Zulu word "ubuntu", loosely translated as "humanity", describing the ubuntu philosophy: "I am who I am because of those around me," a positive aspect of community. Ubuntu's goals include providing an up-to-date, stable operating system for the average user, with a strong focus on usability and ease of installation. Ubuntu has been rated as the most popular Linux distribution for the desktop, claiming approximately 30% of desktop Linux installations in a survey by desktoplinux.com.

Ubuntu was initially "forked" from the Debian project's code base. The aim was to release a new version of Ubuntu every six months, resulting in a more frequently updated system. Ubuntu's first release was on October 20, 2004.

Ubuntu packages in both the desktop version and the server version are based on packages from Debian's unstable branch.

Debian

Debian is a computer operating system composed entirely of free and open source software. Debian is a very popular and influential Linux distribution. Debian is a multipurpose operating system that can be used as a desktop or server operating system (amongst others).

Debian is known for strict adherence to the Unix and free software philosophies. Debian is also known for an abundance of options - the current release, Debian etch, includes over eighteen thousand software packages for eleven computer architectures. These architectures range from the Intel/AMD 32-bit/64-bit architectures commonly found in personal computers to the ARM architecture commonly found in embedded systems and the IBM eServer zSeries mainframes. Several distributions, other than Ubuntu, are based on Debian, including: MEPIS, Dreamlinux, Damn Small Linux, Xandros, Knoppix, Linspire, sidux, Kanotix, and LinEx, and many others. Debian etch would cost close to US $13 billion if it were developed by proprietary means.

Prominent features of Debian are the APT package management system, strict policies regarding packages, and the quality of releases. These practices afford easy upgrades between releases and easy automated installation and removal of packages. Debian uses an open development and testing process. Debian is developed by over one thousand volunteers from around the world and supported by donations through SPI, a non-profit umbrella organization for various free software projects.

No Ubuntu without Debian!

Even though Ubuntu was forked from Debian, it was not forked in a way that made it independent. Ubuntu still base every release upon the Debian unstable branch, and as Ian Murdock, creator of Debian once stated:

Whether the Ubuntu folks realize it or not, they need Debian (for the record, I do think the developers realize this). Without Debian, they wouldn’t have the time to focus on all the polishing work they're doing now. I read somewhere that it would cost over a billion dollars to do something like this from scratch. I don't care how deep your pockets are, that's a lot of money.

Ubuntu builds on the foundations of Debian architecture and infrastructure, with a different community and release process. As it is stated on the Ubuntu website:

Debian is the rock upon which Ubuntu is built.

Ubuntu provides a system with frequent time-based releases, corporate accountability, and a more considered desktop interface. Ubuntu makes a release every six months, and supports those releases for 18 months with daily security fixes and patches to critical bugs.

As Ubuntu prepares for a release, they "freeze" a snapshot of Debian's development archive - the unstable branch.

They start from the development version in order to give themselves the freedom to make their own decisions with regard to release management, independent of Debian's release-in-preparation. This is necessary because Ubuntus release criteria are very different from Debian's.

As an example, a package might be excluded from Debian "testing" due to a build failure on any of the 10+ architectures supported by Debian, but it is still suitable for Ubuntu if it builds and works on only three of them. A package will also be prevented from entering Debian "testing" if it has release-critical bugs according to Debian criteria, but a bug which is release-critical for Debian may not be as important for Ubuntu.

As a community, Ubuntu diverge from Debian in ways that minimize the difference between Debian and Ubuntu. For example, they usually choose to update to the very latest version of Gnome rather than the older version in Debian, and they might do the same for other pieces of infrastructure such as X or GCC. Those decisions are listed as "Feature Goals" for that release, and they work as a community to make sure that they are in place before the release happens.

Many Ubuntu developers are also recognized members of the Debian community. Through their work on Ubuntu they continue to stay active in contributing to Debian and they often continue to work directly in Debian.

In Ubuntu, team members can make a change to any package, even if it is one maintained by someone else. Once you are an Ubuntu maintainer it's encouraged that you fix problems you encounter, although they also encourage polite discussions between people with an interest in a given package to improve cooperation and reduce friction between maintainers.

There is a differences between the groups in their treatment of non-computer applications (like documentation, fonts and binary firmware) and non-free software. Debian distributes a small amount of non-free software from their Internet servers. Ubuntu will also distribute binary drivers in the "restricted" component on its Internet servers but will not distribute any other software applications that do not meet the Ubuntu Licensing Guidelines.

Debian "testing" branch criteria

Packages in Debian are installed into the "testing" directory after they have undergone some degree of testing in unstable.

They must be in sync on all architectures where they have been built and must not have dependencies that make them un-installable, they also have to have fewer release-critical bugs than the versions currently in testing. This way, Debian hope that "testing" is always close to being a release candidate.

The "testing" distribution is an automatically generated distribution. It is generated from the "unstable" distribution by a set of scripts that attempt to move over packages that are reasonably likely to lack release-critical bugs. They do so in a way that ensures that dependencies of other packages in testing are always satisfiable.

A (particular version of a) package will move into testing when it satisfies all of the following criteria:

  • It must have been in unstable for 10, 5 or 2 days, depending on the urgency of the upload.
  • It must be compiled and up to date on all architectures it has previously been compiled for in unstable.
  • It must have fewer release-critical bugs than, or the same number as, the version currently in "testing" (see below for more information).
  • All of its dependencies must either be satisfiable by packages already in "testing", or be satisfiable by the group of packages that are going to be installed at the same time.
  • The operation of installing the package into "testing" must not break any packages currently in "testing".

A package that satisfies the first three of the above is said to be a "Valid Candidate".

The update script shows when each package might move from "unstable" into "testing". The output is twofold:

  • The update excuses: list of all candidate package versions and the basic status of their propagation into "testing".
  • The update output: the complete, rather crude output of the "testing" scripts as they recurse through the candidates.

All bugs of some higher severity's are by default considered release-critical. Currently, these are critical, grave and serious bugs.

Such bugs are presumed to have an impact on the chances that the package will be released with the stable release of Debian: in general, if a package has open release-critical bugs filed on it, it won't get into "testing", and consequently won't be released in "stable".

The "testing" bug count for a package is considered to be roughly the bug count at the last point when the "testing" version equaled the "unstable" version. The bugs tagged Etch or Lenny will not be counted. Bugs with the Sid tag will be counted, though.

Debian deserves more credit

A lot of work goes into making Ubuntu stand out as a nice desktop system, and it does, but it is a shame that little effort is made into explaining, that almost all the work originates from the Debian system!

Ubuntu does write on their website, that "Debian is the rock which Ubuntu is build upon", but it is important to realize that if the Debian project where to stop their development, the Ubuntu system would currently stall completely.

Ubuntu is mostly looked upon as an independent system and most users are unaware of the fact, that they are actually running a Debian unstable system with some enhancements, patches, and changes.

Ubuntu is not forked from Debian like OpenBSD was forked from NetBSD. Theo de Radt, the creator of OpenBSD, resigned his position as a senior developer and member of the NetBSD core team, and when OpenBSD was forked from NetBSD, Theo took the NetBSD code and started working on providing an independent operating system. At no time afterwards was OpenBSD in need of NetBSD or based upon NetBSD.

Ubuntu isn't forked the same way.

Bleeding edge, unstable or what!?

Sometimes bleeding edge actually means "more stable than older releases", but at other times it means the exact opposite.

Debian has categorized the unstable branch as unstable for a reason, and even though some of the classification has to do with how well packages compile on all the supported architectures, a lot of it has to do with the fact that bleeding edge software, the software that normally resides in Debian Unstable and in Ubuntu, often are buggy.

The term "unstable" has got nothing to do with a stable system. It has got nothing to do with how well your system performs or how often it crashes. The word "unstable" is actually misguiding.

If package "foo" has got ten different releases, and each release is an improvement of the former release, then package version 1.10 is far more stable than package 1.05 even though package 1.10 is bleeding edge software.

If package "bar" has got ten different release, but the last two releases introduces a lot of newly added features and development, then package version 1.10 might be much more unstable than package version 1.07.

When different Linux distributions classify the same packages differently it has to do with how much work is being done in eliminating bugs.

The Debian project is well known for their high demand of quality in packages, and most of the time when the Debian project categorizes a specific package as unstable it is because it contains bugs that haven't been fixed, or because it still receives a lot of bug reports each day. But whether these bugs actually are critical is often a matter of opinion, and this is the main reason why Ubuntu uses the unstable branch of Debian rather than the stable or testing branch.

The word "unstable" refers more to how fast things change in development.

When Ubuntu has frozen their Debian import of packages, they don't sync any new version of a package from Debian blindly, rather these packages are subject to manual reviews.

Ubuntu is based upon Debian unstable the same way Debian stable and testing releases are based upon Debian unstable.

The fact of the matter is that deriving a distribution off Debian unstable doesn't say much about its final stability.

Debian stable is quite solid, since the freeze period (where packages no longer migrate from unstable to testing, but only after a manual review) is much longer.

Both Debian and Ubuntu have a period of stopping the influx of changes for a period before release (freezing) and focusing on fixing bugs. The main difference regarding the issue of stable vs. unstable packages is that Debian has a rather long stabilization process, where Ubuntus process is much shorter. Debian freezes for a much longer time and tries much harder to fix all the bugs than Ubuntu or any other Linux distribution.

Whether it's worth delaying a release X number months or years is a matter that there will never be 100% agreed upon and that is ultimately why we have both Ubuntu and Debian.

When you run the stable branch of the Debian project you are sure that your system will never break due to an upgrade. Only security upgrades are introduced into the stable branch and this is especially valued by system administrators. On most other operating systems you haven't got that insurance, and often when you update your system, you find that things stop working because the update changed the system. This doesn't happen on the Debian stable branch and this is where Debian is really valued.

Besides from the above, the packages that goes into the Debian stable branch are all packages that have been tested a lot and that have gotten more bugs fixed.

Ubuntu has a less strict policy about their packages.

As mentioned Ubuntu always releases their latest release with the latest version of the Gnome desktop. Debian doesn't do that. Debian waits until the latest Gnome desktop has been fixed for most of its bugs before the packages goes from unstable into the testing branch.

Some people complain about that the packages that come with Debian stable are too old, and from a version point of view that is true, but Debian isn't about releasing the latest bleeding edge software, Debian is about releasing a stable system that you can depend upon. A system that works, where packages doesn't break due to dependency issues or upgrade issues.

Why not use Debian unstable rather than Ubuntu then?

You could ask: "If Ubuntu is based upon Debian unstable, why can't I just run with Debian unstable?"

The answer is that you can, but your system will most likely break at some point in time. The Debian unstable branch is actually the Debian development branch and as such it is a moving target. Things are being fixed and added daily, and from time to time things break.

Ubuntu on the other hand is a "snapshot" of Debian unstable, a freeze at a given moment in time. During the freeze Ubuntu tries to fix as many bugs as possible and many things are made to working without breakage. Then after a while Ubuntu is released. However, because Ubuntu has a fixed release cycle Ubuntu often gets released with many un-fixed bugs which renderes the operating system less reliable.

Running Ubuntu is like running a snapshot of Debian unstable where every package dependency issue has been fixed - and then some.