ANNOUNCE - graphics package

Luke Gorrie <>
Mon Jan 19 18:05:15 CET 2004


While citations are flying around, does anyone have good references
about very-high-level user interface toolkits?

I have no crisp definition of this. I mean toolkits that have simple
and general programming and user interfaces. Emacs is an excellent
example, despite its obvious graphical limitations, because of these
wonderful properties:

  Small number of objects to deal with:
    Buffer (displays text)
    Window (displays a buffer)
    Frame (what appears on the screen. displays a window, or can be
    split between several).

  Extensible:
    Extend by writing a "command". This is a named function that can
    be called to manipulate the current buffers/windows/frames in some
    arbitrary way. Examples: make the current window display the
    buffer for a particular file; make all windows in the current
    frame equally sized; check the spelling of the word at the cursor;
    send the contents of the current buffer as an email.

    Commands are invoked by name or assigned keys and menus. Modes are
    collections of key assignments for related commands that can be
    assigned to buffers.

  Commands are universal:
    Every user interface is composed to buffers, so any command that
    works on buffers works on any interface. Search, copy,
    check-spelling, save-contents-to-file,
    pipe-contents-to-shell-command, etc work on absolutely anything,
    whether the buffer contains a text-file, unix shell, erlang
    debugger, whatever.

This is a great interface. It lets you do things your own way and it
pays back the effort you put into customising it many times over.

Using programs like Mozilla I am *constantly* bumping against little
niggles that I would immediately hack in any high-level interface. But
with "modern" GUIs I have to go into hackstincts-suppression-mode and
just take what I'm given. *Harrumph!* Is there some law of the
universe that I shouldn't be able to select an item from a list by
typing a unique substring of it, rather than pulling scrollbars around
while trying to mentally perform alphabetical-sort ? *Harrumph* I say!

So what better systems are out there? Links, citations, stories?
Anybody actually using one?

It seems the Oberon system has basically the same UI as Emacs.
Presentation-based [1] interfaces like CLIM [2] look really groovy.
I've played around a little with McCLIM [3] and I'm hoping that one
day I can jump ship onto it from Emacs. (Meanwhile I need to learn not
to wretch at the sight of CLOS code.)

There's also Squeak [4], which seems to be about the fanciest UI
currently available. I don't have a feel for how "high level" it is in
the sense sketched above though. The risk with OO seems to be having a
huge number of datatypes and a small number of ways to manipulate
them. The ultimate test of programmability might be to see if one can
hack it into working solely via the keyboard, killing two birds with
one stone :-)

Cheers,
Luke (looking for an Emacs replacement year after year after year..)

Refs:
  1: Presentation Based User Interfaces
     http://citeseer.nj.nec.com/iv84presentation.html
  2: User Interface Management Systems: The CLIM Perspective
     http://www.sts.tu-harburg.de/~r.f.moeller/uims-clim/clim-intro.html
  3: McCLIM: A Free Implementation of CLIM
     http://clim.mikemac.com/images/index.html
  4: Squeak Smalltalk
     http://www.squeak.org/




More information about the erlang-questions mailing list