A revolutionary OS/Programming Idea

Alaric B Snell alaric@alaric-snell.com
Sat Oct 4 15:23:01 2003


John Newman wrote:

> Exactly.  Take the power, flexibility, extensability,
> etc., of *nix, and apply it visually--you could think
> of it as a visual object scripting environment. 
> Apperently, Linux is not supposed to be that hard, but
> I can't figure it out (not that I've tried very hard).
>  If every command on the console, though, simply had a
> button, and acted like a visual application, I am sure
> I would be using it right now.

The reason Unix is both so hard and so powerful is that with the Unix 
command line you have a vast array of commands to choose from.

My bash shell on the Linux box here, for example, is offering me 2,495 
commands. How do I know? Because of tab completion, which helps me to 
access them - if I type "delet<TAB>" then it will see that the only 
command starting in "delet" is "delete" and expand it to "delete" for 
me. If there's more than one possible match then it just beeps, and 
hitting tab again lists all the options. But if there's more than a 
screenful, it says:

"Display all 2495 possibilities? (y or n)"

Now, how will your purely visual system handle the equivelant task? At 
any point in your tree, you might want to create one of the basic node 
types (if, then, etc), or a reference to a function that somebody's 
written (printf, delete, etc).

How do you refer to functions and other such global entities - by 
pathname? So if I put a really neat sorting function in "C:\Program 
Files\Mega Tools\Sort", then it can be invoked with a 'folder' of type 
"C:\Program Files\Mega Tools\Sort" which a single sub-folders to contain 
the list to be sorted (either as a file of type ArrayLiteral or a 
VariableReference file containing the name of a variable)?

But when choosing to create a reference to a function, how is it done? 
Do you drag and drop from C:\Program Files\Mega Tools\Sort", or can you 
type "Sort" (perhaps with tab completion) to have it search the 
filesystem for what you're referring to?

> Also, this visual filesystem is going to be slick.  No
> popups telling you that files are transfering from one
> place to another, just automatic, and fast.  Also it
> might be slightly 3d, where files are represented as
> boxes, and boxes are pushed and pulled on the z plane
> through the scroll wheel, or by clicking and holding
> on a button on the window bar while moving the mouse
> up or down.  This way, one can move boxes into and out
> of other boxes, and have more organization space.  But
> that is really secondary to the idea of a visual
> programming file system.

Be careful! 3D GUIs are often annoyingly clunky. Many have tried...

[past experiences with structured editors]
> Or, maybe those structural editors just sucked. 

Indeed! Make sure you find out why and don't make their mistake ;-)

 > I've
> been research what visual editors there are for days,
> and none of them really do what I am talking about.  I
> want a simple interface, similar to the windows
> explorer window--I want to right click on the editor
> area, go to Insert-->new file, click, and have it pop
> up--I want to open the file into a new window, right
> click editor area, go to Insert-->new Data
> Structure-->new Array, click, there it is--Then I want
> to right click on my array file and go to properties,
> and go to the "number of elements" text field and
> enter "50" and leave the other fields default, and
> then click save--Then I can open my array file, and
> walla, I have fifty new array-element files to play
> with.

Yep; that's what I thought you had in mind, and that's what I associated 
with a structured editor. What editors are you looking at?

> See what I mean?  Something simple like a file system
> that a dumbass like me can work with. 

It's a lot of clicks and navigation, though, compared to typing the Java 
equivelant:

new Object[50]

> This is a file system, for all intents and purposes. 
> An AST, as far as I can tell, IS the same thing as a
> file system.  Both are computer programs. 

Nnnng, not quite standard terminology you've adopted there...

File systems and ASTs are both *trees*, in that they consist of things 
that contain other things.

Neither are computer programs. They're data. Programs operate upon data.

But anyway, I know what you mean, just you might confuse people if 
you're not careful with terminology :-)

[screenshot]

The Self folks have something like that, actually.

http://research.sun.com/self/language.html

...except that they drop down to written notation for the source code 
inside definitions. But it's all graphical down to that point.

ABS