Ian Bicking: the old part of his blog


Following up on THE vs. Emacs. Though I'm a little skeptical of Raskin and THE in general, I'm actually extremely receptive to his ideas. (I haven't read The Humane Interface, but I suppose I should.)

My skepticism is because Raskin seems to be really full of himself (and everything I read by or about him seems to reinforce this impression). That annoys me. When I read through the Apple Folklore site, I couldn't help but notice his absence from much of the project's history. (Though some articles speak of him quite fondly.) But this all probably isn't fair, I'm sure he is a very smart guy.

Anyway, one big idea for Raskin seems to be LEAP, which shows up even in the early history of the Macintosh. LEAP is the idea of having a special meta key, that acts similar to a shift key. When you want to type in a command, you hit the LEAP key and start typing the command (all commands are named) -- when you release the LEAP key the command is run. It's THE's answer to Emacs' M-x. The standard line is that it's really great, but without the right keyboard it doesn't work well -- the right keyboard would I think have a key below the space, so you can hit LEAP with your thumb and keep typing.

Personally, I think it's really stupid. Like, ruins-a-good-idea stupid, because it's just too hard to type like that. The benefit of LEAP is based on this theory of minimalizing keystrokes -- specifically counting each key when it is pressed and release -- but even that doesn't add up, in part because it doesn't acknowledge that chords (more than one key at a time) are harder than single keys, and extended chords (holding one key while typing several others) are much harder. With a simple chord you can arrange your hands properly for that combination -- e.g., right pinky hitting shift, left hand hitting T -- but you can't do that for an extended chord.

And what do you buy? The only thing you buy is one keystroke. Counting up and down strokes make no difference! Every key you hit you'll eventually release. Using a modal selection -- one where you hit a key and enter a new mode, type your command, then signal that the command is done -- takes only one more keystroke, the keystroke that says you're done (e.g., enter). I think it's mostly modal paranoia, the idea that any mode is bad, which is just silly in my mind.

Also LEAP is Raskin's one clear invention, the one thing that he owns (literally, since he has a patent). So it just has to go in there.

The other related theory in THE is that there's no keyboard shortcuts, you type every command out. (Actually, I believe there is one shortcut, equivalent to C-s in Emacs, which is important because you use incremental search for all navigation instead of arrow keys! I like incremental search a lot, but not that much!) I'll let you judge the wisdom of that on your own.

Oh well. I wouldn't care so much if I didn't otherwise really like the ideas. I'll try to write a positive article next.

Created 27 Jan '05


What I think is really lost in all of the recent noice being made about Raskin's LEAP thing is that with utilities like QuickSilver _we already have this? on the Mac. My "LEAP" key is command-space. I hit that key combo, type in a command (with incremental search on the results and a learning algorithm) and hit return to run the command. I can even make advanced command selections using arrow keys and tab to further refine or enhance the action I have selected. I can be in the middle of one app, and with a few keystrokes append a note into a text file and pop back without evern needing to lift my hands from the keyboard.

# Jim

There is some distinction in that THE commands are much more granular than Quicksilver commands -- basically every command that is available, things like "save" and "next page". Of course part of the idea of THE is that there's no fundamental distinction between these small commands and other larger commands.

# Ian Bicking

$2 million for another crappy text editor? 99.9% of the world does not like emacs or vi. Apps like this and Chandler and bittorrent (bad interface vs. java Azureus client with a nice interface) are just going to hurt Python's reputation.
# anonymous

LEAP is not about counting the key strokes but about modes. I am not sure the LEAP key can leap us from all the modes, and for sure it will be very awkward to type when keeping to press it, but the argument against modes is quite strong.

Talking about other his ideas - I like the Zoom Interface very much, but I am sure they need to think up a way to add links to it. The way we connect things one to another does not allways look good as a planar graph.

# Zbigniew Lukasiak

"for sure it will be very awkward to type when keeping to press it, but the argument against modes is quite strong"

Well, no, it's not, actually, though the dogma certainly is -- statements of the above form are paradigmatic of dogmatism. Paraphrasing, "sure we put you through ergonomic hell, but we have a good theoretical basis for doing so".

There are good ways to do modes and bad ways to do modes, and LEAP is the very worst way -- it has two modes, the "LEAP key is up" mode and the "LEAP key is down" mode; denying that these are modes is pure sophistry, since they affect the meaning of keystrokes just like any of form of mode specification. But "LEAP key is down" requires the user to enter a different personal physical mode -- one that is in fact very limiting and demanding. This makes LEAP an ergonomic disaster.

emacs does modes right. modes are attached to buffers -- different logical spaces. There's never any question what mode you're in, since you have both a different conceptual/logical space -- you're operating on some specific buffer -- and an explicit message on the screen indicating what mode (actually modes, a major mode and 0 or more minor modes) are in effect in that buffer. There are many different possible modes, which is a very good thing in terms of functionality and usability. Raskin would perhaps put several dozen different "hold this key down while ..." keys on the keyboard, or more likely simply not provide the functionality while providing a dogmatic claim as to why that's a good thing. Meanwhile, emacs users get work done, pleasurably.

A special case of emacs moding, which isn't referred to as such, is the minibuffer. In order to search or to enter a command or to find a file or to do almost anything where the entered text has semantic meaning to emacs, you type an appropriate control key or sequence which enters you into the minibuffer, with an explicit message at the front of the minibuffer indicating what sort of information you are entering. The key sequence that puts you in the minibuffer of course is putting you into a mode, but that mode is conceptually isolated by transferring the cursor to a special place that is clearly marked. It so happens that, since the minibuffer is a buffer, you can switch from the minibuffer to any other buffer -- the buffer switching key isn't moded -- and then you're in the mode of the buffer you have switched to, where you are free to continue typing, but most likely you have switched to that buffer to select text that you wish to enter into the minibuffer -- text to search for, text that's a command invocation or part of one, text that's a file to open, etc. Try doing that with your finger holding down the LEAP key, hah hah -- so much for modelessness. emacs in fact gives you modelessness in the way it counts -- by being able to switch from mode to mode at will, without destroying the moded space. This is exactly equivalent to non-modal popups, which allow you to continue to look at and even perform operations in the windows they cover. We all know how badly modal windows suck -- we shouldn't be trying to recreate that experience in an editor.

The emacs mode model works, and it works very well, which is a very strong refutation of the a priori claim that there are strong arguments against it.

# jqb

LEAP is actually C-s. You type "[LEAP key down] f o o [LEAP key up]" to do the equivalent of "C-s f o o [RET]" in Emacs. That's why it's called LEAP. It lets you LEAP to another part of the document. I don't remember how commands other than LEAP work in THE.

The rationale for it is not just the saving-half-a-keystroke thing, it's also that it reduces the problems of modes; since you have to hold down the LEAP key to use it, you can't possibly forget that you're in search mode rather than edit mode.

But I agree totally about the crack-smoking-ness of it physically. My carpal tunnels would explode before the end of the first week.

# Dan