Global Lisp Machine

Dec 19, 2008 16:27

This is sort of the idea I'm heading toward:

Imagine you download and install a small package. It puts a server process on your machine.

You launch a text shell. You could have launched any number of competing free graphical shells too, from windowed environments to 3D browsers, but you pick the old original simple text one.

Inside that shell you have a language REPL, like a Lisp machine, or Smalltalk, or any scripting environment. There are object-like, folder-like, file-like things inside.

What's different is that that environment is networked. It's like you're logged into an old-timey timesharing mainframe - but it's all a single language runtime session, there's a single toplevel global environment which is *really* global, everything's persistent, and your machine - your current session - is one tiny sector of that huge vast shared-state machine.

The system was last rebooted five years ago.

You can share messages with other people on the system. You can share files. You can create functions or objects and share them with everyone in the world just by putting them in a 'publish' folder. You've got a secure email and IM and social networking environment as well as a programming workspace. You can subscribe to event streams from people or websites or robots or PLC controllers or anything, then feed those streams through functions you either wrote or imported from someone else's published workspace, create mashups, then publish them as streams of your own.

Everything you do is versioned (though you can throw away old versions if you really want to), so if you change any object or folder or file (they're all really the same abstraction underneath) its old state is preserved, backed up in the background, and you can restore it just with a command.

Everything is cached so you don't generate more network traffic than you have to, which is useful if you're running over a wireless link.

If you don't have a current network link, you won't get updates, but you can still see everything that's cached on your machine.

If you have an error, you don't reboot - how can you reboot the Internet? But you can do a lot of debugging of all of the components you wrote and maybe of other people's if they let you read their source code (and in most cases they will).

If you find an error in someone else's components, you can't modify them, but you can create your own patches or changes and publish them. If they're good, they'll make it to the 'official' lists and people will use yours instead.

Yes, I have been reading Little Brother.

Programming as a single, persistent, MMORPG. Can you do this (seamlessly and naturally) with any software environment - any *language* currently existing?

(Other than VOSnet - no not that one).

If so I want to know about it.
Previous post Next post
Up