On debian-policy, Steve Greenland <stevegr@debian.org> wrote:
> What Ray said, only more so. Programs must use $EDITOR if available,
> because that is what the user sets.
>
> However, the "sensible-editor" idea is somewhat independent, in that iff
> EDITOR is not set, it could adjust according to situation (console vs.
> X).
>
> However, I forsee a long battle about which editors make into sensible
> editor, and all kinds of fall-back issues. And is it really that big a
> deal if a console editor gets brought up during an X session -- because
> most uses of $EDITOR occur while using console programs anyway (crontab,
> MUAs, News readers, etc.).
The solution to that battle is to ask the user.
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 instead, 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:
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
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 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). The main suggestion of this system
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. It would be possible to have multiple
ftp servers installed and the selected one gains the ftpd link and becomes the
server that is run by inetd. I think most of the priorites 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 - 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 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*
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. If I select vim to be my vi
does that make vim -R mv view? Should the interfaces and functions be on a per
binary basis? Would that be easier or possible.
Just random thoughts, hope it is useful.
--
I consume, therefore I am
Attachment:
pgpck605p89CZ.pgp
Description: PGP signature