At the moment, the alternatives system, the packaging system, the virtual
package names, the sensible-* scripts, the default X server, the kernel image
and the default window manager settings are all seperate entities. I think
they could all be more tightly intergrated.
At the moment, the default choice for the alternatives system is pre-deceided,
the sensible scripts are similar, except they look at enviroment instead,
hile the default kernel, X server and windows manager are all decieded from
questions in the postinst script.
Function
---------
Debian has a lot of programs that do the same thing. These functions could be
descriped with a functions tag, in the package file. For each package there
could be more than one function. This tag would be slightly similar to the
virtual packages idea, but more advanced.
My basic example would be GNU Emacs. The functions tag could look like this:
Functions: editor, emacs, info-browser, mua, news-reader
I am sure it does more, but I can not think of any. Here is a list of possible
functions:
editor - Any editor. examples: gnu emacs, vim, ed, nvi, jed, jove
emacs - A version of emacs. How strict are we here? do these qualify?:
jove - Jonathan's Own Version of Emacs qualify?
zile - Zile is a lossy emacs
examples: gnu emacs, gnu emacs, xemacs, xemacs, jove ??, zile ??
vi - A version of the bsd editor vi.
examples: nvi, vim, elvis, gnu emacs (in viper mode)
pager - Any pager. examples: less, more, vim -R, nview
view - The vi style pager. examples: nvi, vim -R
www-browser examples: lynx, netscape
netscape examples: communicator, navigator
mta examples: exim, sendmail, smail
mua - Mail User Agent examples: mutt, elm, mailx
news-reader examples: trn, slrn, tin, nn
news-server examples: inn, cnews
irc-client examples: ircii, bitchx, epic
icq-client examples: zicq, micq, licq
aol-chat-client examples: tix
ftp-client examples: lftp, ftp, ncftp
file-manager examples: mc, kfm, explorer
c-complier examples: gcc, bcc, gcc272
awk examples: mawk, gnu awk
info-browser examples: info, gnu emacs, pinfo
man-browser examples: man-db, emacs, pinfo, info
graphics-viewer examples: eeyes, imagemagik, xv
display-manager examples: xdm, login.app, gdm, wdm
window-manager examples: twm, fvwm, enlightenment, kwm, icewm
xserver examples: xggi, xserver-*
kernel examples: linux, hurd, bsd
(that one was a bit of a joke)
linux-kernel-image
linux-kernel-source
linux-kernel-headers
linux-kernel-doc
shell examples: bash, tcsh, ash, zsh
sh-shell examples: bash, ash, zsh
csh-shell examples: csh, tcsh
term-emulator examples: xterm, rxvt
I am sure there are more `functions', for examples there are loads more servers
(irc, nfs, ftp, web, etc).
Some can only really have one installed at a time, like the servers, but
others could have multiple installed. So you could have loads of editors and
web browsers. The main suggestion of this rant, is for them to have priorites
that can be adjusted by the user, and the system administrator. So as a user I
could run a dselect or apt like program with a list of packages and instead of
selecting which to install, and which to hold, select priorites for the
functions listed above. I might select emacs as my main editor, gnu emacs 20
as my main emacs, and vim as my main vi. But I could still have the others
installed. I think this would be useful on a per machine and per user basis,
so that as a power user I could select a heavy weight editor, and other users
could select an easier to use one. It would be a handy tool for changing
window managers. It could use a similar symlink system to the alternatives
system, have cc as a symlink the the current C compiler and vi a link to the
current vi clone. The selected linux-kernel-image could be made the default in
lilo.
There are some more questions though, what of the interface? I tend to use
lynx on the console and netscape in X11, there should be some way of handling
this.
Interface
----------
Differnet people use Debian in different ways. I like to think of myself as a
bit of a console man, I tend not to use X11, but others, in the near future
at least, will swear by gnome or kde, refusing to touch anything with a
different interface. So why not give them an idea of the interface when
selecting packages? Here are some first run ideas for interfaces with
discriptions and example packages, in alphabetical order:
athena - The original X11 toolkit, ugly and hard to code. Note: Some X programs
do not use any toolkit, they are in X11.
examples: gnu emacs, xfig, xbill, most xbase-clients
berlin - Very new graphical user interface, possible replacement to X11,
nowhere near finishing.
examples: none
console-interactive - I would like to differentiate different kinds of console
interface, this is specifically a command line interface, not curses.
Programs that do not run full screen.
examples: ed, bash, gnuplot, ftp, gnupg
console-non-interactive -
examples: gcc, dpkg, ls
curses - Full screen console stuff, ie most `modern' console programs.
examples: mutt, lynx, slrn, dselect, aa
emacs - An emacs module. This will work anywhere emacs will.
examples: calc, w3
fb - Framebuffer, new console graphics interface, not avaliable on some
machines still.
examples: pnmtofb, xserver-fb
ggi - General Graphics Interface, runs on top of KGIcon, X11, svga, fbdev.
examples: xserver-ggi
gnome - GTK app, properly gnome intergrated, runs on X11, could include
gnome-complient window managers, not linked to GTK.
examples: gnome*, eeyes
gtk - GTK app not using gnome libraries, runs on X11.
examples: gimp, mozilla
headers - Library development headers, none developers can exclude them from
package listings which is nice.
examples: lib*-dev
html - Documention in html format, if users dislike html formatted
documention, they can decied not to list it. Note this is differnet
from a interactive web interface program.
examples: doc-linux-html
kde - K Destop Enviroment, linked against qt, runs on X11. Could include
KDE complient window managers, not linked against qt.
examples: kde*
lesstif - Motif/Lesstif programs, getting a bit old now, runs on X11.
examples: netscape
library - A dynamic library, excludes development files and static version,
should not include any binaries.
examples: lib*
na - Does not really have a user interface. Takes input from a file or
command line and modifies files, and/or outputs to stdout and stderr,
never asks for more input.
perl - Perl module.
examples: lib*perl
python - Python module.
examples: *python*
qt - Troll Techs qt widget set, NOT linked against kde libs, runs on X11
examples: licq
server - Loads, reads config from file, waits, serves connections.
examples: apache, ftpd, ircd
svgalib - I think this is i386 specific (not sure), graphics before fb and ggi
examples: quake, doom, gnuplot, svncviewer
text - Documention in text format.
examples: doc-linux-text
web - Web interface, becoming more popular, useful for controlling
servers.
examples: swat (Samba Web Administration Tool)
x11 - X11 program without toolkit. They do exist.
examples: xvncviewer
xforms - XForms widget library, non-free, runs on X11.
examples: lyx, xisp
Any number of these can be included in the Interface field, so for gnu emacs
you would have:
Interface: curses, athena
Apt would be able to sort, or query on the Interface line, this would
encourage a more consistent interface and would make the package list appear
shorter. People decied on their prefered interfaces and apt only lists
packages that use those interfaces.
It should be possible to select an package for each function for each interface,
or is that too complicated? Could I have a console editor appear, when I need
an editor on the console, and a X11 editor appear when in X11?
Just my 4 euros
--
I consume, therefore I am
Attachment:
pgpxJ_jPTN7UY.pgp
Description: PGP signature