Date: Fri, 2 Jan 2015 15:40:33 -0800
From: Toby Schachman
Subject: Re: column view for interactive drawing tool
This is really interesting!

Totally agree about giving child objects names.

The really new thing (to my thinking) is the scoping with the parent keyword. I think it does make reading the "source code" more clear as where the variables get "looked up" becomes obvious.

The part I will need to get my head around has to do with whether a property is "overridden" or its original value. For example, if we look at Light Clock here:

Inline image 1

Light Clock's "time" property is overridden. It is set to "parent.clockTime" but in the original Light Clock diagram its time property is set to some constant value (because we had to "start concrete" with some value).

But now the nesting gets confusing: If we were to add another Moving Light Clock to Scene and modify its Light Clock child, does that change also affect our first Moving Light Clock?

I suppose a way around it is to just "deep clone" everything when you drag something in so every value is very concrete but I think this is unsatisfactory to the types of adjustment you'd want to make, like turning the photon from a circle into a star or whatnot.

Something I've been thinking about is having variables that can be used in multiple diagrams. For example, say I wanted to change the photon's color from orange to yellow and also change the zigzag plot line to the same color. It would be nice if I could make a variable that lived at a higher level. My planned solution to this is to have "folders" of diagrams and each folder can define variables that are in the scope of all the diagrams within it. So you'd have a "Time Dilation Explainer" folder that had some top-level configuration variables (colors, etc) that were then referenced from multiple diagrams within.

Alternatively, this is possible in your mockup: just put that color variable in Scene and reference it with parent.parent.etc. (though I think multiple parent.'s will be cumbersome).

So anyway, I will think about this more. The column view to show all the relevant variables is very appealing. But I'm not yet sure about the modularity of the proposed scoping system.

Also I was planning on doing a "drag to transclude" thing, as in DDV instead of relying on names.

Thanks for mocking this!
Toby