This work was a _response_ to vi and modal editing.
And it was _right_ because it's how basically every GUI app and web app in the world works.
Sure, programs have functions that while you perform them put you in a special restricted environment, but it's not a mode. If there's a search-and-replace operation going on, you can see that on the screen. You can see if you're browsing menus or stepping through a tab bar or something.
In modal programs, it's the same program all the time, but in one mode, for instance, pressing ``dd`` types a double D like in "middle", and in another mode, it deletes the whole line, and unless you are experienced enough to look for a single character somewhere else on the screen, you don't know which it will do. You have to memorize the sequence of operations and know where you are. If I blindfold you, sit you in front of someone else's computer, take the blindfold off and ask you what "dd" will do at this point, you might not be able to tell.
And that is bad UI, and bad design, and we have learned better now.
The fact is that this is _proved_ by _every user-facing computer having a GUI.
Larry Tesler was right:
DON'T MODE ME IN.
Even his website is NOMODES.COM: http://nomodes.com/Larry_Tesler_Consulting/Home.html
That's how vi works, too. The 'i' command begins an insertion operation, wherein whatever you type after that command is inserted before the cursor. It's not a special mode, it's just how you provide input to that 'insertion' operation.
And the fact that the resulting program state and behavior is somewhat reminiscent of the "default" mode in other editors where all commands must be entered via menus or special keystrokes, etc. (e.g. emacs) is ultimately coincidental. That has nothing to do with the underlying principles of how 'vi' itself works.
Yet, I seldom use the wrong mode accidentally on modern applications, yet constantly on vi. One part, as you said, is probably down to visibility, but a highlighted menu item could just as easily be overlooked. Maybe vi's main problem is the command mode as default? I always pondered if I would make as many mistakes (or would have found it quite so confusing as a new user) if edit mode was the default.
What made this easy to work with is you can easily hit escape and it will put you in edit mode and you can easily build muscle memory to do this quickly.
The vi design principal is that a limited number of modes used frequently is better than numerous specialized ones used leas frequently.
Any HCI dweeb that thinks 2 clearly visible modes is somehow inherently less usable than any alternative can fight me. And they’re full of shit on this in general. It’s not like they have the quality data to prove this, it’s always been something that has been taken for granted, avoid modes, just because there are a few examples (some catastrophic) of it being done poorly.
Edit: I mean really has anyone seen an experienced user use vi? You think from the HCI navel gazers that they would be half the time fumbling over what mode they’re in. Less talk, more observation.