Wichert Akkerman <wichert@cs.leidenuniv.nl> wrote:
> The topic of package sections has apparently come up once more on
> debian-devel. It seems everyone agrees that the current method of
> putting packages in one of 10 or so sections is not good enough for
> the huge amount of packages we have accumulated.
>
> There have been proposals of using keywords to make it easy to search
> for packages, and people suggesting that we make the sections more
> hierarchical and add subsections.
Have a look at my ideas on http://www.hairnet.demon.co.uk/moretags.html:
Functions and Interfaces
_________________________________________________________________
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.
The default choice for the alternatives system is pre-deceided, the
sensible scripts are similar, except they look at enviroment as well,
while the default kernel, X server and windows manager are all
decieded from questions in postinst scripts.
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, calendar
I am sure it does more, but I can not think of any. Here is a list of
possible functions: (it is incomplete)
editor
Any editor capable of editing a file given as a parameter on
the command line.
examples: emacs, xemacs, vim, ed, nvi, jed, jove
sub-functions:
emacs
A version of emacs. There are a great number of different
versions of emacs, at the moment the virtual package
`emacs' in Debian represents one a version of GNU Emacs
or XEmacs. How strict should this function be? Do jove
and zile qualify?
examples: emacs19, emacs20, xemacs20, xemacs21, jove ??,
zile ??
vi
A version of the BSD editor vi.
examples: nvi, vim, elvis, vile
pager
Any pager.
examples: less, more, most
www-browser
examples: lynx, netscape
sub-functions:
netscape
examples: communicator, navigator
mta
Mail Transport Agent
examples: exim, sendmail, smail
mua
Mail User Agent
examples: mutt, elm, mailx
mda
Mail Deliver Agent
examples: deliver, procmail
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
calendar
examples: emacs, netplan
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
(this one is a bit of a joke)
examples: linux, hurd, bsd
sub-functions:
linux-kernel-image
linux-kernel-source
linux-kernel-headers
linux-kernel-doc
shell
examples: bash, tcsh, ash, zsh
sub-functions:
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 finished.
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
Your standard `no questions' asked applications.
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 Environment, 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*
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 a 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?
Another consideration is the fact that packages are not synoumous with
binaries. A package can contain lots of different programs that
function in different ways, maybe with different interfaces. Should
the interfaces and functions be on a per binary basis? Would that be
easier or possible.
--
I consume, therefore I am
Attachment:
pgpKiMnSby9vX.pgp
Description: PGP signature