In this information-laden world, who really wants to deal with addresses, ss#’s, a bevy of phone numbers, even more account numbers, part numbers, and on and on? It seems we sometimes need the precision afforded by (usually non-mnemonic!!!) names, but we don’t like it. What if it’s not necessary?
I’ve recently had a kind of religious conversion. My computer science professors taught me that if you know the name of something, you have power over it. As a result, I’ve studied the semantics of names (binding, scope) and its cousins for identity (copy semantics, extent). I still believe names are crucial for programming, but I have now come to think they are a terrible foundation for constructing an interface between people and the computer. All these years! It’s about time I realized that my users shouldn’t need to see things as I do. So now I’m becoming a direct manipulation zealot. I know have a goal that people should be able to use Croquet effectively without ever seeing a filename, address, or URL.
It’s incredible what we put up with now. [Note to programmers: I’m talking mostly about the names of resources here (not things like variables).]
What do file dialogs (for open and save) have to do with whatever task we’re working on? It’s one of these things that we do to try to make the computer happy. Just try explaining files and directories and extensions and open and save to your child or your grandparents. There’s no reason for this! If you know where you left something, just go there. I prefer memos on a Palm or sticky notes on a Mac. No open nor save nor filenames. And if you don’t know where you left something, there’s Google destop.
But one set of names aren’t bad enough. No. We have to replicating things and keep track of the names of their containers! Which version of that report was the one I wanted? The one on my office hard disk, the server, my thumb drive, my home machine, PDA, my wife’s machine, or in Lotus Notes? That’s a lot of choices in the open dialog, or a lot of results in a “search for file named:.” Yuck. You really just want the stuff you need to be “right there” in whatever project you’re working on, and the computer keeps track of keeping everything. If you want to version stuff, then create a version or some other identifier, but don’t try to version by location. We go through a similar hell when we don’t have permission (yet) to edit something we need, and end up propagating more versions and names. None of this is necessary if everything is accessible from anywhere, such that we can always make changes and additions in context. In some contexts that means changing what everybody sees, in others it means just what we see. By the way, contexts don’t need names either. They’re just resources, too. We can just go to where we left them, or search for them when we can’t remember.
Email is sometimes regarded as the most successful killer app of all time. But look at the price we’ve paid. In addition to the usual complaints about information overload and time and privacy and spam and whatnot, look at just the cognitive load we impose on ourselves with regard to names. Not only is there save and open of drafts and attachments, but there’s a great deal of administration of smtp and pop and imap servers and account names and addresses. Switching clients? Switching services? New job? Want to take your whole set of letter trays with you? Do it all again. With Croquet, there shouldn’t even be email. Folks can have one or more in-boxes in their home space. You can give someone permission to put things in your in-box, and they can keep that permission in a drawer in their Croquet environment (or wherever they want). Maybe that permission looks like an in-box tray with your picture on it, or you holding a mailbox. Or something that looks like a key with – horrors – your name on it. That’s up to you and whomever you give the permission to. Anyway, when you want to give something to someone – be it text or a whole Croquet space you’re working on – just put it in their in-box. No addresses, no accounts. No mailman or other middleman (assuming a fully P2P Croquet implementation without servers). No spam.
There’s probably still various needs for names, in “out of band” communications. Stuff outside the direct manipulation Croquet environment. For example, suppose you want to send someone a conventional email and point the recipient to a particular place (and time?) in a Croquet space. Well, that could actually be done as an attachment that knows how to present itself in a reasonable way, without a bunch of computer mumbo jumbo. But then, you still need a text version that doesn’t get scrubbed by some ignorant overzealous virus protection racket thingie. OK, well, there’s still voice communication. You want to have very short pet-names that depend entirely on the context. In my house “Tom” and “Thomas” are both my son. At his grandparent’s, “Tom” is my brother-in-law and my son is only “Thomas.” But I’m comfortable with this use of names. Come to think of it, my 3 year old son is not that comfortable with it. Computers should be for him, too! Why not?
And what of programmers who already understand the world of names? Well, I’m not sure that most developers of applications really do have a full understanding of the semantics of names. I don’t. Look at what we do with handling filenames.
Do directories have trailing delimiters. Is an empty name the root directory? Case preserving but case-insensitive? What about inverting case unless the case is mixed? Have you seen that one? Version numbers as an overlay over the file system? Jeesh. And yet how many of us do what we should and program only in API’s with operating-system independent pathnames? Anyway, I think names for resources will still be involved in programming croquet, but I think they will fade into the background as we are able to achieve more and more “programming” through direct manipulation. We want to distribute the load of content and application creation. This is best done by making it easier for everyone, and by supporting development by folks with a wide range of knowledge and experience.
Is the current computing status quo so bad? I don’t know. It is a pain and creates a pretty high threshold for use. Does it actually prevent use? Maybe not often, if you don’t care about 3 year olds and grandparents. Maybe it’s like the expertise that used to be needed to operate and maintain a horse or a pre ’90’s car. Or like maps. What was wrong with selecting a map and deciphering the code and folding the thing and driving with it on your lap? Well, I do like my in-car navigator better. Does it actually let me do things I wouldn’t otherwise? Maybe. I’m just a little bit more willing to explore. It’s probably safer, too. One difference here is that when dealing with managing and utilizing information, we often feel that we are at a limit. It is common to speak of information overload and of being unable to deal with new technology. So maybe making it that much easier to manage computers and information really does matter.