Why choose Debian GNU/Linux?

Why we chose Debian GNU/Linux.

We chose to deploy Debian GNU/Linux based systems because Debian provides us with the best operating system platform available. The primary reason is lowered total cost of ownership. The combination of package policy, advanced packaging tool, bug tracking system, system scalability, large base of available software packages and unparalleled support make Debian the best choice for our organization. The cost of daily maintenance is a major cost of the system and by deploying Debian on our systems we can minimize total our cost of maintaining the systems.

What is Debian GNU/Linux?

Debian GNU/Linux is a distribution of an operating system and packages that are associated with it and run on it.

An operating system is composed of a kernel, shared libraries and applications. The Linux kernel is free software. Users can obtain the Linux kernel source, and compile it themselves. They can then obtain source code for libraries and applications in the same way, compile the programs, and then install them into their systems. There are projects such as Linux from Scratch which promote this approach.

For complicated programs, this process can be not only time-consuming but error-prone. To avoid it, one often chooses to obtain the operating system and the application packages from one of the Linux distributors. What distinguishes the various Linux distributors are the software, protocols, and practices they use for packaging, installing, and tracking applications packages on the system, combined with installation and maintenance tools, documentation, and other services.

Debian GNU/Linux is the result of a volunteer effort to create a free, high-quality Unix-compatible operating system, complete with a suite of applications. The idea of a free Unix-like system originates from the GNU project, and many of the applications that make Debian GNU/Linux so useful were developed by the GNU project.

In Debian the term free software has the GNU meaning. The word free in free software means freedom, not price. Free software means that you have the freedom to distribute copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

The Debian Project was created by Ian Murdock in 1993, initially under the sponsorship of the Free Software Foundation's GNU project. Today, Debian's developers think of it as a direct descendent of the GNU project.

Debian GNU/Linux is:

Although Debian GNU/Linux itself is free software, it is a base upon which value-added Linux distributions can be built. By providing a reliable, full-featured base system, Debian provides GNU/Linux users with increased compatibility, and allows Linux distribution creators to eliminate duplication of effort and focus on the things that make their distribution special. There are several other Debian-derived distributions already on the market, such as Corel Linux and Storm Linux, that are targeted at a different kind of audience than the original Debian GNU/Linux is, but use most of Debian components in their product.

What is Linux?

Linux is the kernel of a the operating system. The kernel is the interface layer between the software and the hardware. One of the functions of the kernel is to provide an abstraction layer to isolate hardware differences from software programs. This allows hardware differences to be completely hidden. Other tasks including context switching between programs and protecting programs from each other.

Linux was originally designed for the 386 and compatible systems. Today Linux runs on many different architectures including both 32-bit and 64-bit systems, including both single and multiprocessor systems. Linux is written by Linus Torvalds and by an international collection of contributors.

Besides its kernel, a "Linux" system usually has:

The combination of the Linux kernel, the file system, the GNU Project commands and applications, utilities, and the other programs are designed to achieve compliance with the POSIX (IEEE 1003.1) standard.

What is GNU libc?

The main system library for C programs is libc. On Linux systems this is the GNU libc, a.k.a. glibc. It is maintained and guided primarily by the GNU C Library Steering Committee , formed in 2001. It is the governance body and has overall responsibility and charge for the maintenance of the GNU C Library as part of the GNU project. The committee currently consists of Mark Brown, Paul Eggert, Andreas Jaeger, Jakub Jelinek, Roland McGrath and Andreas Schwab.

Policies are then implemented by a larger maintainer group known as the GNU Libc Maintainers. This group includes a larger number of programmers many of whom are well known in the community. The GNU libc project is a GNU project and is not tied to any one interest commercial or otherwise. But being a GNU project it is free software and cannot be monopolized by a commercial entity.

What is the GNU Project?

The GNU Project was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system. (GNU is a recursive acronym for "GNU's Not Unix"; it is pronounced "guh-NEW".) Variants of the GNU operating system, which use the kernel Linux, are now widely used; though these systems are often referred to as "Linux", they are more accurately called GNU/Linux systems. The FSF's long-standing objective is to develop a new operating system called GNU based on Hurd. Debian is working with FSF on this system, called Debian GNU/Hurd.

The GNU Project has developed a complete free software system named "GNU" that is upwardly compatible with Unix. An operating system is not just a kernel; it also includes compilers, editors, text formatters, mail software, and many other things. Thus, writing a whole operating system is a very large job. However, the GNU Project is not limited to operating systems. The aim is to provide a whole spectrum of software including application software.

Why choose Debian over other GNU/Linux distributions?

Debian has several key features which distinguish it from other GNU/Linux software distributions.

Those are among the best features of Debian which distinguish it from other software distributions. However they are not the only reasons.

Debian develops with 'unstable' code and releases 'stable' code.

A major goal of Debian is to produce a highly reliable system. Therefore the released distribution of software usually contains the best known stable version at the time of release. That is, it may not contain the current development version of a program. This leads to a rock solid reliable system of software in the 'stable' released distribution at the expense of having bleeding edge features. Also, the Debian security team is very active at producing security updates for the released Debian packages. No feature updates are allowed in the released bits and only the security aspect is addressed by an update. This adds to the safety of systems running Debian's released 'stable' bits. If you need a high level of robustness and in your system then the 'stable' distribution is the best choice for you.

New versions of software enter Debian in the 'unstable' track. These are usually the development versions of programs. The 'unstable' distribution is where active development of Debian occurs. Generally, this distribution is run by developers to be able to work out the details and problems of getting the software to the next 'stable' release.

The 'unstable' distribution contains bleeding edge software components which have the latest development features. Therefore 'unstable' is also run by people who feel they must have the latest development features as they become available. However, this also means that the 'unstable' distribution is, well, unstable. The ability to have the latest development versions means a tradeoff in system robustness. It is not unusual to see problem from day to day in the development version of software in 'unstable'.

In between 'unstable' and 'stable' is 'testing'. The 'testing' distribution is a staging ground for the next stable release. It is composed of packages from 'unstable' which have met a certain level of quality. As such it contains newer softare than in 'stable'. It contains a little better measure of safety and robustness than is available in 'unstable'. The testing distribution is a middle ground.

Note that security updates are only made available to the 'stable' release. Anyone running 'testing' or 'unstable' must monitor security updates themselves. It is assumed that newer versions of software in the development track will work through security issues as a normal course of development. This may not happen on a timely schedule. It may require changing features. It is not recommended to be running either of those distributions in a security critical environment.

Note that programs compiled on a development system with newer development libraries will create programs which require those newer development libraries in order to execute. Therefore developer machines running unstable bits should not be used to compile programs for production systems running stable bits. This should be taking into consideration when deciding which platform to run. It is certainly reasonable to build stable bits in a stable build environment and certainly that should be a normal methodology for any mature software organization.

Is Debian perfect? What are the complaints?

No. Debian is not perfect. There are bugs. This is also true of other distributions. The difference is that Debian shows you the bugs which are known in the BTS (Bug Tracking System). If all you read were the errata you might be convinced of its problems. But better to be informed than to thrash around blindly.

One issue is that the BTS is designed around 'unstable'. When bits enter unstable the bug is closed. But it has not gone into 'testing' nor into 'stable' yet. The BTS really needs to track based upon the release track. But it does not have that capability yet.

The initial Debian installer "boot-floppies" has a reputation to be confusing to new users. There is no automatic detection of hardware. You must specify what hardware exists explicitly. This is getting addressed with a completely new "debian-installer" project under active development. Regardless this is not an issue for us since we use SystemImager for the initial installation. Plus we have a highly effective technical IT organization to handle the installation process. Since you only install Debian once but use it often the daily administration is more important than the initial installation.

Not all hardware is supported. In particular really old, really new, or closed proprietary hardware may not have software support. If you need something in particular you may need to import and install it yourself. Of course this is a general problem for free software. But commercial software distributions can sign disclosure agreements, make proprietary deals and provide closed source support. Since Debian is a free software project, free as in freedom not free as in cost, it is illegal for Debian to provide closed proprietary drivers. For example it is illegal for Debian to provide the nVidia proprietary graphics driver as part of a free software distribution. Therefore if needed this component needs to be installed locally.

The configuration has a reputation for being confusing to new users. Less emphasis is placed on creating mouse driven configuration tools. Often subsystems are configured by editing text files. The system is more similar to traditional UNIX systems such as HPUX. Since we are a organization with a technical IT department this is not a concern, it is an advantage. But a newbie is often intimidated by the text configuration files. However, great emphasis is placed on packages working by default upon initial installation if at all possible. Therefore most things "just work".

The standard installation tool "dselect" is hard to use. Well yes it is so don't use it. People often equate it with Debian but it is really obsolete. If someone wants something other than the command line 'apt' tool then 'aptitude' is a terminal based package management tool. If a mouse/gui based tool is desired then use 'synaptic'.