Innovating apt-get to become future ready - Phase X

Creators: Jelle de Jong, Neil Williams, and all others ...

IRC's: tuxcrafter, codehelp

Version: v0.1.1j - draft version made for discussion and feedback


This document aims to provide transparent informations about the current apt-get system and what will happen when the situation does not changes. We want the community to see that change is needed so we can work on wide supported solutions, that are future proof.


To create package infrastructure that can be effectively used on all devices that can run Debian Linux. This include embedded devices, ultra mobile personal computes, desktop computers and all other things out there.

Target group:

Everybody that want Debian to stay the greatest Linux distribution there is should read this document and spread the world, especially developers and packagers can help in the creation of a better system.

What is Debian all about:

Debian is about freedom, quality and a large happy community, freedom to be able to use the software you want, the quality assurance that the software does what you want, and if there are problems there are people that can help you.

To assure this goals we have software licences that guaranty our freedom, we also created organisations like the Linux Standard Base, and many others to manage our open-standards so that applications have interoperability.

The apt-get system:

So what is this all about. Linux adoption is growing and people are wanting more and better software to get there work done and have fun using it. So a natural result will be that more and more packages get into the apt-get repository's. This will create more work for package maintainers, creating more packages resulting in larger apt cache requirement that will take more time on client and server side, resulting in more maintenance costs.

We need a better system to decrease the apt cache sizes requirements, so more packages can be included into the repository without decreasing user comfort!

The suggested enhancements for apt-get in phase 1:



Our changing lives and their environment:

Technology is evolving, new technology's are getting developed and current technology's are becoming cheaper and faster. The use of mobile phones, digital interactive television, our 24H on-line digital lives, with instant messaging, email, conferences, contact, calender and al other kinds of personal information management are getting more and more part of our normal daily lives. New devices using Linux capable environments are emerging rapidly. Handhelds, Ultra Mobile PC's, Smart phone's, PDA's, Linux gadgets, and all kind of other devices.

What do we have:

We would like to be able to use our electronic devices with our favourite Linux Debian distribution. For example the devices is using an supported architecture like x86 or ARM, it can run the Linux kernel but what about my favourite applications. Can I use apt-get to install my application. You want this to be able just like on you normal desktop computer. So you have the same quality in updates, security and latest features and have interoperability between them.

Here is the problem all those small electronic devices have limited resources in memory, disk space, and CPU processing power. So we want to have control about the applications and there features and functionality that we are installing.

For example: We have a mobile device with a x86 capable CPU and we want to install a good supported *.pdf document viewer that fits nicely on my mobile GTK widget based environment.

We do an “apt-get install evince“, but what now, a terrible list of dependency's that will take almost all my available disk space, it has a lot gnome specific dependency's and all kind of backend library's. But we just received a new insight and will try “apt-get install evince-gtk”, hmm we still got an enormous list of dependency's, less gnome libs but still a complete list of other unwanted dependency's. Now I become very disappointment, somebody has decided to take away my freedom to easily install evince and my own choice of functionality on my Debian distribution.

The current apt-get system has not enough flexibility to provide in the needs of our future users. We need to create an architecture to be able to do smarter packaging.

The suggested enhancements for apt-get in phase 2:

Adding one new feature to apt-get and its configuration file: Install behaviour: normal or minimal, users will be notified when running apt-get witch behaviour is active, the behaviour can be configured in the default apt-get configuration system. Default behaviour will be on normal resulting in the same behaviour everybody is used to on this moment.

The new behaviour for the normal configuration set-up:

When an user installs packages like: evince, totem, pidgin, firefox,, gimp. The user will get all possible functionality on its system.

The new behaviour for the minimal configuration set-up:

When an user installs packages like: evince, totem, pidgin, firefox,, gimp. The user will only get the base package, with as minimal features as possible. To install extra functionality the user can install install separate packages depending on his own wishes.

For the package maintainer:

note: needs an example and working case how to do this

For the software developer:

note: needs an example and working case how to do this

Representation of the new package and apt-get system:

virtual package package-name dependencies:

apt-get install package-name

Other plugins can still be packaged separately.

Different configurations for different machine's:

With a successful implementation of phase 1 and 2 we are ready for phase 3. The default build system is build with all features on, and this can result in package with to much features for embedded devices. This means we need to do something to be able to get packages with less features for different types of machines.

The current packaging system does not have an architecture to easily create packages with different build configurations for different type's of machines.

The suggested enhancements for apt-get in phase 3:

New automated build options so that machine specific type build options can be used to build packages for different machine types in the same regular build process. The machine specific packages will go to there own repository so they will not affect the main repository.

note: needs an example and working case to show how to do this

see also:

Representation of the new packages and apt-get system:

Note that the functional packages are still built but the virtual package -extra is omitted from the list of dependencies of package-name.