Debian
Past, Present and Future
Steve McIntyre <93sam@debian.org>
Assistant Project Leader
24th March 2007
Agenda
What is Debian?
Project structure
Process
Inside a Debian package
Derivatives – using Debian as a base
The future?
Getting involved
What is Debian?
3 aspects, interlinked:
A Project
An Operating System
A Community
Debian – the Project
Over 1,000 volunteer developers spread all over the world
Large numbers in North America & Europe
Smaller numbers in Australia & Japan
Growing Latin American development community
Debian – the Project (2)
http://www.debian.org/devel/developers.loc
Debian – the OS
Completely Free Software
Debian Free Software Guidelines
Support for 12 different architectures
alpha, amd64, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc
Largest GNU/Linux distribution
Over 15,000 binary packages in last release
Over 17,000 binary packages expected in the next release
Debian – the Community
Open development
We don't hide problems
Large amounts of communication
Mailing lists, web sites and IRC channels
Large number of active users
Users help each other, contribute packages, become developers
How is Debian different?
Volunteer-driven
No company in charge
Free Software
Social Contract
Debian Free Software Guidelines
Size
Packaging system
Stability & Support
Social Contract
We declare that:
Debian will remain 100% free
We will give back to the free software community
We will not hide problems
Our priorities are our users and free software
Works that do not meet our free software standards
DFSG
Guidelines only – not hard rules
Used to help decide what we will distribute in the Debian system
main, contrib & non-free
DFSG (2)
Free Redistribution
Source Code
Derived Works
Integrity of The Author's Source Code
No Discrimination Against Persons or Groups
DFSG (3)
No Discrimination against Fields of Endeavour
Distribution of License
License Must Not Be Specific To Debian
License Must Not Contaminate Other Software
Example Licenses
BSD, GPL
History
Founded in 1993 by Ian Murdock
Named after DEBra and IAN Murdock
The first major distribution developed “openly in the spirit of Linux and GNU”
Early work sponsored by the GNU project
Leaders
Ian Murdock (1993 – 1996)
Bruce Perens (1996 – 1997)
Ian Jackson (1997 – 1998)
Wichert Akkerman (1999 – 2001)
Ben Collins (2001 – 2002)
Leaders (2)
Bdale Garbee (2002 – 2003)
Martin Michlmayr (2003 - 2005)
Branden Robinson (2005 - 2006)
Anthony Towns (2006 – present)
Releases
1993: early development snapshots
1994: v0.91
March 1995: v0.93R5
November 1995: v0.93R6
December 1995: v1.0
June 1996: v1.1 (Buzz)
December 1996: v1.2 (Rex)
Releases (2)
June 1997: v1.3 (Bo)
July 1998: v2.0 (Hamm)
March 1999: v2.1 (Slink)
August 2000: v2.2 (Potato)
July 2002: v3.0 (Woody)
June 2005: v3.1 (Sarge)
December 2006: v4.0 (Etch) ???
Project structure
Started with limited structure
Volunteers
Minimal “people management”
Package maintainers control their own work
Various teams
Teams grow as jobs get bigger
Examples:
ftpmaster
debian-installer
debian-cd
release team
Project decisions
DPL elected each year
Delegates key project positions
General resolutions (GRs)
Votes on important issues
Technical committee
Software in the Public Interest (SPI)
Process: from Chaos...
Over a thousand Debian developers
Several thousand packages
Many thousand bugs
Millions of users
... to Stability
Debian policy
Quality checking of packages
Testing (^2)
Release team coordination
Policy
Comprehensive list of requirements for packages:
What goes in a package, and where
How to start & stop daemons
Interactions with other packages
Configuration files
Upgrades
etc.
Quality checking
Lintian, linda
Run by maintainer to check for packaging mistakes after packages are built
Simple frameworks; new tests are added easily
piuparts
Tests how well packages will upgrade from one version/release to the next
Testing - Packages
Developers run their own tests before upload
Build-time test harnesses
Other developers and users report bugs
Bugs (hopefully!) are fixed, new uploads made
Testing - Distribution
Uploads go to “unstable” distribution
After a period of time with no major bugs reported, packages become valid to migrate into “testing”
Archive maintenance scripts check for dependencies
Testing should be (almost) ready to release as “stable” at any point
Release managers
Constantly monitor the state of the testing distribution
Co-ordinate uploads with package maintainers to make transitions smooth
Track large groups of packages as they work through the system (e.g. KDE, Gnome)
Responsible for deciding release goals and release dates
Security team
Work with maintainers where possible
Security updates for “oldstable”
Security updates for stable
Security updates for testing
Coordination with other distributions
security.debian.org, DSAs
Stable point releases
Organised by the stable release team
Made every few months
Collect together:
Current security updates
Highly-tested package updates to fix other serious bugs
Update the archive
rebuild CDs, DVDs etc.
Collaboration
Many different source code control systems in use; choice of which is made by the developers
cvs, subversion, arch, bzr, darcs, others...
Discussions via mailing lists
IRC for realtime discussion
Real-life meetings becoming more common
Debconf, Extremadura
Alioth
Sourceforge-like system
cvs, svn, mailing lists, web space, ...
Used for collaborating on Debian work
Projects like debian-installer, debian-cd
Packaging work
Also hosts a number of non-Debian projects
Inside a Package - sources
Packages are built from source by their maintainers
Make changes, compile, test, sign, upload
Source packages are made up of:
.tar.gz of source
.diff. gz containing Debian changes
.dsc file listing the details of these
One source package may make many binary packages
Inside a Package - debian/
debian/ subdirectory contains all the packaging metadata (similar to .spec):
debian/copyright
debian/control
debian/rules
debian/changelog
Building packages
dpkg-buildpackage
fakeroot
sudo
Auto-builders
sbuild
pbuilder
Buildd
.changes file
Binary packages
Architecture-specific or arch-all
Come as a.deb file; it contains:
debian-binary (version info)
control.tar.gz (metadata)
data.tar.gz (package contents)
Potentially other components
Layout conforms to policy & FHS
Packaging system
Modular design
Simple low-level tool
dpkg installs and removes packages
More intelligent higher level management
apt, aptitude, synaptic, etc.
Packages.gz, Sources.gz, Release
Easy to create and mirror
Trust
Developers sign packages before upload
Checked against keyring
md5 hashes stored in Packages.gz and Sources.gz
Release file signed
Links together individual files, signed by the master archive key
Derivatives
Not just a distro, can be a base
LOTS of derived distributions:
Ubuntu
Linspire
Xandros
Skolelinux
Debian-jr
many more
Derivatives (2)
Why?
Licensing
Solid, stable base system
Reduce effort
How?
Take existing packages and add extras
Rebuild packages where desired
No problem – everybody wins!
The future – coming soon
Etch due next weekend!
The system is hard frozen – RC bugfixes only
Release and documentation teams working hard
amd64 support added, m68k dropped
Party! :-)
Later this year
Debconf 7 in Edinburgh, June 2007
Major conference
Lots of work
Lots of FUN! :-)
Further on...
lenny after another 18 months?
Even more developers
Even more packages
Getting involved
Test, report (and ideally fix!) bugs
Translation
Documentation
Help with packages
Sponsoring
New Maintainer Process
Want to know more?
www.debian.org
mailing lists
IRC
ask me!
Slides © 2007 Steve McIntyre <93sam@debian.org>
Released under GPL v2 at http://www.einval.com/~steve/talks/GLLUG-2007/