Creators: Jelle de Jong, Neil Williams, and all others ...
IRC's: tuxcrafter, codehelp
Version: v0.1.1j - draft version made for discussion and feedback
Table of Contents
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 prove.
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.
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.
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, freedesktop.org and many others to manage our open-standards so that applications have interoperability.
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!
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.
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.
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, openoffice.org, 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, openoffice.org, 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.
- Always compile the package with all stable features enabled.
- Split functionality in as much separate library's and packages as possible.
- Report non separability functionality as upstream bug.
note: needs an example and working case how to do this
- Use more molecular programming methods, make it possible to use only the base functionality of the program. Add other functionality to the program by detecting present library's and dynamic plug-in systems. Also give an usable warning message when functionality is not presents.
- Try to use as much existing generic library's and LSB-specifications as possible.
note: needs an example and working case how to do this
See the next page for a graphical representation of the new package and apt-get system:
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.
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: http://www.emdebian.org/emdebian/machinevariants.html
See the next page for a graphical representation of the new packages and apt-get system:
- should I include tdeb in this document?
- create planning
- create more feature lists
- expand all technical components of the complete base system
- create check-lists and test processes
- expand the way packages are going to be build for the base system