vimOS: the perfect operating system

Imagine an operating system that does away with the whole notion of a desktop. Why do we need this whole metaphoric thing applied to our computers, anyway? Sure, I can see why it existed before: we needed a metaphor so that we could teach the world, by analogy, how to think about computing. But now, there have been so many achievements in technology in general that we should be able to go in new directions and bring the masses along with us.

OK, I understand that’s asking too much. Bill and Steve have purposely kept us all stupid to keep costs down or something, so without the notion of a desktop, the masses are Lost In Space. Linux has pretty much followed suit, going along with these metaphors as a means of attracting the masses away from the other platforms. In the end, there’s a ton of innovation going on on the desktop, but no innovative thought that is applied to how to interact with a computer ever seems to make it to the end user. For myself, I’m slightly more advanced, and have decided that the ultimate interface for me would be the Vim interface. A “VimOS”. Read on and I’ll explain what I mean to those who know what Vim is.

What if the graphics were really, truly irrelevant? Have ’em any way you want ’em. Doesn’t matter. Start button? Fine. Task bar? Whatever. It can be there or not in VimOS, because to get work done in this dream of dreams, you only need to understand two concepts: command mode, and insert mode.

If you think about it, the only two things you do with a computer is feed it commands, and feed it input. To open your word processor, you feed the computer a command. No, really – you do. Clicking an icon is, in fact, feeding the computer a command. It should be noted here that, technically, you’ve fed a computer a command because you wish to “change context”. Instead of staring into space or looking at your email, you now wish to work with the word processor. The word processor will now be given “focus”. So, to summarize, you feed a command to a computer to change contexts. There’s other stuff you feed commands to a computer for, but on the desktop, this is probably the most common reason.

Next up, there’s the feeding of input. Browser address bar, web forms, email, word processor, they’re all bound to one rule that is pretty much inescapable: they aren’t very useful without some input from you. That’s where the term “interactive” comes from. You “interact” with programs. You didn’t know this. All you knew was that there was “a whole new dimension” being brought to the desktop. It’s ok. We’ve all been there.

Now that we’ve broken that down, it should be easy to see (for those who have worked with Vim at all), that these two functions map directly to the Vim modes “command” and “insert”. The observant will also note that I’ve left some things unaddressed. On we go.

One of the things that people like about Windows (if they use it) or the Mac (if they use it) or even Linux (ditto), is that, to their brain, it’s predictable. It fits their brain in some way. This perception of consistency comes from the fact that some rather large percentage of the applications in each environment exhibit the exact same features, in almost the exact same way. Every word processor I’ve ever seen has a “File->Save” thing. In fact, so do most other applications. Most of them also have an “Options” thing going on, where you can configure parts of how you want that application to react to certain “stimuli”. In short, it is more the exception than the rule that an application takes a command (the selecting of a menu item, for example), that *no* other application takes. It certainly, definitely, inarguably happens – yes. Absolutely. But the majority of the commands one application takes are likely to show up in another. So what?

So just assign them all, across all of the applications, to the same keystroke! In my dream OS, hitting “Esc” followed by “s” would save the current document in the application currently in focus. A better example, though, is the preferences thing. Applications like to put these in different places. Mozilla has “Edit->Preferences”. OpenOffice has something like “Tools->Options” or something. Whatever. Hitting “Esc” followed by “p” would tell the application currently in focus to pop up its preferences dialog.

You can all see where I’m going with this. But why? Because I can’t think of anything more consistent, quite honestly. No more clicking around menus (or finding the menus for that matter) to find preferences, help, “send as email”, and so on. It turns some things around, I guess. This relegates the mouse to mundane tasks like selecting text and clicking links. It also implies that there’s a consistent set of functions at the OS level that act upon the applications, instead of the application parsing input from the user and then making an API call.

Well, I’ve probably given you all more than enough to flame me, or come up with a really sick configuration file for your keyboard shortcuts.