Deutsche Version

Debian Internal Projects

Talk at LinuxDays Luxembourg 2002

2. October 2002

Abstract

The talk is inteded to people who are interested in the philosophy for Debian internal projects and the technique which is used to manage those projects. It is explained in detail why this are no forks from Debian but reside completely inside the Debian GNU/Linux distribution and which advantages can by gathered by this approach. The concept of meta-packages and user role based menus is explained.

This talk is intended for a technically interested audience.

Related talk: Debian-Med

Here you can find the MagicPoint source including the necessary MagicPoint style of the talk.
There are the preformated slides in HTML

Debian Internal Projects

Debian-Junior

Debian-Med

Debian-Edu

DeMuDi

(page 1)

Overview

  • What is Debian?
  • What are Debian internal projects?
  • Debian - adaptable for any purpose?
  • Technology
    • Meta packages
    • User Menus
  • Documentation
  • Future
(page 2)

What is Debian?

  • Linux is just the kernel of your operating system.
  • You need a lot of applications around.
  • Those collections of software around the Linux kernel is called distribution.
  • Companies who build such distributions are called distributors.
  • They make money by selling their distribution in boxes, doing support and training.
  • You might know Mandrake, RedHat, Suse and others.
  • Debian is just one of them.
(page 3)
Sorry.
That was wrong.
(page 4)

What is Debian? (next try)

The Debian Project is an association of individuals who have made common cause to create a free operating system. This operating system that we have created is called
Debian GNU/Linux,
or simply Debian for short.
Moreover, work is in progress to provide Debian for other than Linux kernels, primarily for the Hurd. Other possible kernels are BSD and even ports to MS Windows are planed.
(page 5)

Web of trust

Debian developers keyring
(page 6)

Differences to other distributions

  • Debian is no company but an organisation.
  • It does not sell anything.
  • Debian members (maintainers) are volunteers.
  • Maintainers are working on the common goal: building the best operating system they could afford
  • Largest collection of ready-to-install Free Software on the Internet
  • Two ways to obtain Debian GNU/Linux
    • Buying it from any other distributor on CD
    • Downloading from the Web for free
  • The later is the common way and there are really great tools to do it this way.
(page 7)

What are Debian internal projects?

  • Debian contains nearly 10000 binary packages
  • General users interested in a subset of those packages
  • Care for special groups of target users with different skills and interests
  • Not only handy collections of specific program packages but care for easy installation and configuration for the intended purpose.
  • No fork from Debian

→ Basic idea: Do not make a separate distribution but make Debian fit for special purpose instead

(page 8)

Motivation

  • Profile of target users:
    • Less technical competence
    • Not able to install upstream programs with acceptable effort
    • No interest in administration
    • Interest in defined subset of available free software
    • Need for easy usage
    • Defined security profile
  • Other possible projects:
    • Authorities
    • Office
    • Enterprise / accounting
    • ???
(page 9)

Status of specialized Free Software

  • Hard to install
  • Hard to maintain
  • Hard to use because of lacking GUI
  • Strange Licenses
  • Orphaned upstream
  • Porting issues (architectures, byte order, 32 vis 64 bit)
  • Data format not exchangeable
  • Parallel development of the same functionality
  • Used tools or back ends are not intended for those applications

→ Lack of an integrated framework

(page 10)

History of Debian internal projects

  • Debian-Junior
    • Start: beginning of 2000
    • Initiator: Ben Armstrong <synrg@debian.org>
    • Released in the current stable Debian code name Woody
  • Debian-Med
    • Start: beginning of 2002
    • Initiator: Andreas Tille <tille@debian.org>
    • Adapted ideas from Debian-Junior and added some stuff
  • Debian-Edu
    • Start: just starting
    • Initiator: Raphaël Hertzog <hertzog@debian.org>
    • Bringing back a fork from Debian
  • Demudi
    • Start: not really started yet
    • Initiator: Marco Trevisani <marco@centrotemporeale.it>
    • Bringing back a fork from Debian
(page 11)

Debian-Junior

Debian for children from 1 to 99
  • Make Debian an OS that children of all ages will want to use
  • Making it so nice that they like it
  • Making it a playground for children experiments
  • Not only providing games but care for their quality
  • Main target are young children, teens should become comfortable with using Debian without any special modifications
(page 12)

Debian-Med

Debian in Health Care
  • Integrated software environment for all medical tasks
  • Special care for the quality of program packages in the field of medicine which are integrated in Debian yet
  • Building packages of medical software which are missing inside Debian and inclusion of those packages
  • Caring for a general infrastructure for medical users
  • Efforts to increase the quality of third party software
(page 13)

Debian-Edu

Debian for educational purposes
  • Make Debian the best distribution available for educational use
  • Federate many initiatives around education (which are partly based on forks of Debian)
  • Integrate changes from the French Debian Education distribution into Debian
  • Cooperate with Debian based SkoleLinux in Norway
  • Cooperate with other education-related projects (like Seul, Ofset, KdeEdu)
  • Just started, mailing list and web site in preparation
(page 14)

DeMuDi

Debian Multimedia Distribution
  • Currently not announced as official internal project but coordinator is in touch
  • Oriented toward music and multimedia
  • Make GNU/Linux a platform of choice for the musician and the multimedia artist
  • Part of a project funded by the European Community, called AGNULA
  • Initiator is not yet Debian developer but you are able to work on Debian without being an official developer
(page 15)

Why not just forking from Debian?

  • Separate distribution would cost extra effort
    • Would be hardly better than Debian
    • Continuous work to keep base system boot-floppies etc up to date
    • Nearly impossible to get security fixes as fast as Debian
    → Forking would be a bad idea.
  • Integration into Debian has advantages
    • Huge user base all over the world thus becoming public on the back of Debian
    • Secure and stable system without extra effort
    • Bug Tracking System for free
    • Infra structure (HTTP-, FTP-, Mailserver, PKI, ...) for free
  • Bringing back something to Debian
    • Enhancing quality of packages by making them more user friendly
(page 16)

Debian - adaptable for any purpose?

  • Developed by about 1000 volunteers
  • Flexible, not bound on commercial interest
  • Strict rules (policy) glue all things together
  • Common interest of each individual developer to get the best operating system for himself
  • Developers have children in real life or work in the field of medicine etc.
  • In contrast to employees of companies every single Debian developer has the freedom and ability to realize his vision
  • Thus single developers have influence on development - they just have to do it
(page 17)

Technical reasons for adaptability

  • Focus on
    • Security
    • Stability
    • Quality
    • Careful testing (BTS)
    • Continuity (take care for old configuration)
  • Powerful packaging tools
  • Support of 11 hardware architectures (auto builders: alpha, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc)
(page 18)

Technology (1): Meta Packages

  • Collection of specific software
    • No research for available software necessary
    • User is not forced to browse the whole package list of Debian
    • Easy comparison between software covering the same task
    • Safety against accidental removal of dependencies
    • Conflicts to incompatible packages
    • Easy installation
    • Low effort for administration
  • Adapted configuration inside meta packages
    • Care for special needs of project users
  • Documentation packages
    • Packaging and creating of relevant documentation
    • Translation
(page 19)

Handling of meta packages

  • Overview over
    • Command line tools
    • Text user interfaces
      You know dselect?    → Forget it!
    • Graphical user interfaces
    • Web interfaces
  • Hints for administration
  • Future development
(page 20)

Command line tools (1)

apt-cache
Search for relevant keywords in package descriptions
~> apt-cache search med | grep '^med-'
med-bio - Debian Med Bio-Informatik-Pakete
med-common - Debian-Med-Projekt: gemeinsames Paket
med-common-dev - Debian Med Project common files for developing meta packages
med-dent - Medizinische Debian-Pakete für die Zahnarztpraxis
med-doc - Debian Pakete mit medizinischen Dokumentationen
med-imaging-dev - Debian Med packages for medical image development
med-tools - Debian Med - verschiedene Programe
med-bio-contrib - Debian Med bioinformatics packages (contrib and non-free)
med-imaging - Debian Med Imaging Packete

→ Not really straightforward currently

(page 21)

Command line tools (2)

grep-dctrl
~> grep-dctrl -r ': med-' /var/lib/dpkg/available | grep -v '^[ SIMAVF]' | grep -v '^Pri'
Package: med-dent
Depends: odontolinux, galeon | www-browser
Description: Debian Med packages for dental practice

Package: med-imaging-dev
Depends: librumba-dev, libgtkimreg-dev
Description: Debian Med packages for medical image development

Package: med-doc
Depends: doc-linux-html | doc-linux-text, resmed-doc, galeon | www-browser
Description: Debian Med documentation packages

Package: med-tools
Depends: mencal
Description: Debian Med several tools

Package: med-common-dev
Depends: debconf (>= 0.5)
Description: Debian Med Project common files for developing meta packages

Package: med-imaging
Depends: rumbaview, paul
Description: Debian Med imaging packages

Package: med-common
Depends: adduser, debconf (>= 0.5), menu
Description: Debian-Med-Projekt: gemeinsames Paket

Package: med-bio
Depends: bugsx, fastdnaml, fastlink, garlic, njplot, readseq, tree-puzzle
Description: Debian Med bioinformatics packages

Package: med-bio-contrib
Depends: clustalw, clustalx, molphy, phylip, seaview, treetool
Description: Debian Med bioinformatics packages (contrib and non-free)

→ Also a bit cryptic

(page 22)

Command line tools (3)

auto-apt
~> sudo auto-apt update

put: 880730 files,  1074158 entries
put: 903018 files,  1101981 entries

~> auto-apt -x -y run
Entering auto-apt mode: /bin/bash
Exit the command to leave auto-apt mode.
bash-2.05b$ less /usr/share/doc/med-bio/copyright
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  bugsx fastlink readseq 
The following NEW packages will be installed:
  bugsx fastlink med-bio readseq 
0 packages upgraded, 4 newly installed, 0 to remove and 183  not upgraded.
Need to get 0B/1263kB of archives. After unpacking 2008kB will be used.
Reading changelogs... Done
Selecting previously deselected package bugsx.
(Reading database ... 133094 files and directories currently installed.)
Unpacking bugsx (from .../b/bugsx/bugsx_1.08-6_i386.deb) ...
Selecting previously deselected package fastlink.
Unpacking fastlink (from .../fastlink_4.1P-fix81-2_i386.deb) ...
Selecting previously deselected package med-bio.
Unpacking med-bio (from .../med-bio_0.4-1_all.deb) ...
Setting up bugsx (1.08-6) ...

Setting up fastlink (4.1P-fix81-2) ...

Setting up med-bio (0.4-1) ...

localepurge: checking for new locale files ...
localepurge: processing locale files ...
localepurge: processing man pages ...
This package is Copyright 2002 by Andreas Tille <tille@debian.org>

This software is licensed under the GPL.

On Debian systems, the GPL can be found at /usr/share/common-licenses/GPL.
/usr/share/doc/med-bio/copyright (END) 

&rarr Isn't this great?

(page 23)

Text user interfaces

tasksel
Tasksel screenshot
  • Debian Task Installer
  • End-user section contains entry for each internal project
  • Easy installation
(page 24)

Graphical user interfaces (1)

gnome-apt
Gnome-apt screenshot
(page 25)

Graphical user interfaces (2)

synaptic
Synaptic screenshot

→ Synaptic's filters are a great tool here.

(page 26)

Web interfaces (1)

Web search
(page 27)

Web interfaces (2)

Package Tracking System
http://qa.debian.org/developer.php?login=<developer>
use synrg for the junior packages and tille for the med packages
http://packages.qa.debian.org/<letter>
append 'j' or 'm' for junior or med, respectively

→ Also not really straightforward currently but becoming comfortable with the Package Tracking System is an extra plus here :-)

  • Recently developed web tool
  • Great help in watching package status
  • Supports subscription to interesting packages
(page 28)

Package Tracking System

(page 29)

Web interfaces (3)

/usr/share/doc/junior-doc/examples/scripts/list-junior
/usr/share/doc/junior-doc/examples/scripts/list-junior example screenshot

→ Not yet a tool but a start of it

(page 30)

Future handling of meta packages

  • Obviously there are no nifty tools as you might know them from Debian available yet.
  • Tools which grep the apt cache directly for meta packages have to be written.
  • Policy agreement about additional flag for debian/control file
  • Find a set of keywords for each internal project and write a tool to search comfortable
(page 31)

Tools to develop meta packages

  • Building a meta package is more or less equal for each meta package
  • Those stuff should be parameterised and supported by tools to
    • Make it easier
    • Reduce probability of bugs
  • There is no common agreement about this but at least Debian-Med is using the med-common-dev for package building
  • Each Debian-Med package build-depends from this package which provides templates and tools for meta package building and some examples
(page 32)

Technology (2): User menus

  • Define a list of sub project users using debconf to manage groups like junior and med in /etc/group
  • Do not bother other users with those additional menus
  • Provide script update-subproject to update user menus after new package installation or additions of users to those groups
  • Current Debian-Med packages give an idea of the look and feel
(page 33)

User menu tools

Package med-common contains debconf scripts to configure project users
Med-common debconf screenshot
(page 34)

General menu rewrite

  • Currently Debian menu system is completely rewritten
  • Debian packages update general menu after installation automatically
  • Key features like user roles and translation will be added
  • Plan: Meta packages contain role specific menu entries which are updated on a per user basis
  • Enabling clean administration of multi user systems
(page 35)

Documentation

  • All internal projects care especially for documentation and translation because target users have big need for this
  • Have a close look on <project>-doc packages!
  • Ben Armstrong has started a Debian Subproject HOWTO: It explains how to start and maintain a Debian internal project in general
(page 36)

Future

Debian-Junior

  • First release with Debian Woody
  • Included in task selection list of install CD

Debian-Med

  • First steps
  • Some meta packages ready
  • Great interest from developers and users
  • First version in Sarge
  • Knoppix based Live-CD
(page 37)

Future

Debian-Edu

  • Creating web site and mailing lists
  • Integrating stuff from educational distributions which is not yet in Debian
  • Care for new Debian-installer based CDs

DeMuDi

  • Same as above
  • Care for really free multimedia software (patent issues, licenses, etc.)
(page 38)

Further Information

(page 39)

Homepage Andreas Tille