
        Jim Pick Software
        Penticton, BC, Canada

 Interface Ramblings                       [Gnome - Emacs-Style UI] [Home]
----------------------------------------------------------------------------

Subject: Interface ramblings (was Re: Usenet reader)

From: Jim Pick <jim@jimpick.com>
To: Miguel de Icaza <miguel@nuclecu.unam.mx>
Cc: nickus@infa.abo.fi, gnome@nuclecu.unam.mx
Date: 12 Nov 1997 13:22:25 -0800

Miguel de Icaza <miguel@nuclecu.unam.mx> writes:

> My personal desire would be to provide a Scheme framework for running
> Gnus on top of a Gnome setup (ie, not depending on Emacs).  But this
> may not be so easy :-).

I was thinking the exact same thing...

Gnome, to me, seems like an excellent place to start building in
facilities that would enable unbundling of many apps (like Gnus
and bbdb) that currently only run inside the Emacs environment.

Stepping back a bit,

I'd like to see Gnome become "the environment", and applications such as
emacs, gnus, bbdb, a CAD package, the GIMP, etc. just become "modes" inside
that environment.

That's pretty abstract.  I guess I'm dreaming not of an environment
designed for newbies - but rather an environment that I'd actually
use for my day-to-day work.

Currently, my favorite 'environment' right now is called "bash" - I usually
have multiple versions of it running in multiple xterms.  I don't consider
my window manager, and all the windows, buttons and menus I created
my primary environment - I only interact with that periodically - primarily
to assist me in task switching and comparing output between bash windows.
An environment should be something that envelops your mind, which you
mentally work within.

I'm learning emacs and Gnus - they have quickly become a secondary
'environment' I'm always using.

I find the primary thing that drives me to adopt an "environment" is the
ratio of how much work I can accomplish vs. how much interaction is required.

Based on this criteria - the best environments are those with which you
can communicate with on a "higher level".  In order for this to happen,
you must learn the language and mannerisms of the environment.

GUIs are very useful, because you only have to be educated in perhaps
20 or 30 different metaphors, which allow you to quickly interact with a
system on a basic level.  The learning curve isn't so steep to start
with.

But they are also limited by their primary input device, which is only
capable of point, click and drag gestures.  This limits communication to
interacting with data structures with concrete visual representations,
which is great for CAD - but limited for more abstract forms of information,
such as language.  Imagine trying to express an idea to a friend if the only
way you can express yourself is as a cursor that can point, click and drag
pre-existing objects on a 2D plane.

Shells, editors such as emacs, and even some querying/programming languages
can be easy to start - but can take some learning to get to a productive
level with.  But in the long run, they tend to be the most productive
environments for most information processing tasks - which tend not to be
visual in nature.

Down the road, I imagine we will eventually see even more "high bandwidth"
interaction between humans and computers - involving voice and gesture
recognition.

Anyways, back to Gnome:

I'd like to see Gnome become a 'true environment' - one which helps me
to achieve high productivity.  (That way, I can get a real life -- ie.
spend more time skiing)

If I'm going to be constantly interacting with it, that mandates that it
should be primarily be a keyboard/language driven environment (with options
open for voice and gesture).  GUI capabilities are definitely a must, as
they can be used effectively for navigation, education, and manipulation
purposes.

So I guess I'd want something that was a mix of emacs, bash, plus some
gui and web stuff.

I think we could form the basis of interaction with the whole environment
on the emacs concept of a 'buffer'.  All documents appear within buffers.
This isn't really any different from Microsoft's vision of 'document-centric'
computing.  Except that we could build upon the strong GNU foundations of
emacs, shells, scripting languages (like Scheme), etc. whereas Microsoft
prefers a dumbed-down GUI only approach.

For starters, we could build a generic gnome "window" - which is basically
a GUI container for buffers.  This would typically consist of a menu, a
mini-buffer (for keyboard input), and one or more "gnome buffers".  (Some of
this might be optional for special purpose windows, such as dialogs)  The
gnome window program might be a bit customizeable - like using some gtk tabs
to switch between buffers.

I think we could take emacs buffers - and extend them in an O-O manner so
that they could do much more than just text.  For example, a gnome buffer
might display a gimp viewport - complete with toolbars.

A gnome app would essentially be the same thing as a "mode" in emacs.
Examples of gnome apps that would implement modes for gnome buffers:

 * a 'bash' app/mode which presented a standard bash/xterm interface in a
   gnome buffer.  Big enhancements would be the ability to use emacs-like
   keystrokes to switch buffers, do things in the minibuffer, add minor-modes,
   hooks that execute code written Guile, Perl, Tcl, or whatever.
 * an 'emacs' app/mode which presented standard emacs buffers in the gnome
   buffer.  So running the emacs gnome app in a gnome buffer in a gnome
   window would be functionally identical to running emacs.
 * an 'xemacs' app/mode which implements an XEmacs buffer.  The cool thing
   would be that it would be possible to mix emacs and Xemacs buffers together
   in the same gnome window.
 * an 'mc' app/mode to implement file browseing capability.  Actually, 'dired'
   could also be used in the same manner - but it probably wouldn't know
   about the gnome extensions since it would be an emacs mode, not a gnome
   app/mode.
 * a 'gnome-zilla' or 'mnemonic' app/mode for browsing the web.  (Likewise,
   the 'w3-el' mode from emacs/Xemacs could also be used)
 * a 'gimp' app/mode.  Instead of having the gimp popping up new windows
   all over the place, it would just create new buffers.
 * a 'gnus' app/mode which would be primarily written in elisp with some
   extensions for the Gnome gui.
 * an 'opendesigner' app/mode for CAD/3D/drawing work.

Anyways, any gnome app would function as a "mode" and would work inside
a buffer.  Apps could be launched via the gnome panel, or by typing something
into the mini-buffer of any gnome window (ie. M-x gimp, or just 'gimp' in
a bash buffer).  Vice-versa, all the apps, documentation, procedures, etc.
would be browseable and runnable via a GUI interface like the gnome panel.

I am sure we'd have to extend some of the naming mechanisms used by
emacs/xemacs to provide for multiple namespaces.  But we could probably
maintain backwards compatibility.

We might want to use a different key map than the emacs default - but it
should be customizable (just like emacs) -- even to make it match the old
emacs key bindings.

Sorry for the long-winded reply - but I thought I'd present my "vision"
for the Gnome environment for debate before we go too far trying to clone
the KDE/Win95 idea of an environment.  Although those environments are
great for newbies - they just wouldn't have any great effect on my
day-to-day productivity because they throw away the keyboard and don't
work at my level.

In short, I'm not throwing out bash and emacs until I have something better
-- so let's not leave replacements/modifications for those out of the gnome
environment.

Cheers,

 - Jim

----------------------------------------------------------------------------
                       Back to Gnome - Emacs-style UI

----------------------------------------------------------------------------
Please send your comments: jim@jimpick.com

$Id: interface-ramblings.html,v 1.2 1997/11/14 05:28:57 jim Exp $
