Date: Fri, 2 Jan 2015 17:24:13 -0800
From: Bret Victor
Subject: Re: column view for interactive drawing tool
Emails crossed.  :)  Yeah, what you said.  I think that's much better, especially if you give some kind of clear visual indication of what's been overridden.

To take this to the extreme -- if you could create a Group and add variables to it, then it wouldn't behave any differently than an object you created at the top-level, right?  So you create your entire Scene out of Groups (that is, the "moving light clock" would just be a Group, the "light clock" would just be a Group), and you only extract one of these Groups into its own class if you want to instantiate it multiple times, or otherwise want it to live at the top-level.

This would be better for allowing you to sketch out your diagram by freely messing around (instead of having to commit to any hierarchy decisions up-front).  (I really liked this sort of thing in OpenLaszlo, where you could build things as one-offs, and then later think about what parts you wanted to reuse, and easily extract those parts into their own classes.)



On Jan 2, 2015, at 4:57 PM, Toby Schachman wrote:

On Fri, Jan 2, 2015 at 3:40 PM, Toby Schachman wrote:
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.

I guess a different way might be whenever you change a property, it only changes it in that specific instance within that specific diagram that you're editing (at the top level, i.e. the diagram that's selected in the left-hand panel).

So if you wanted to change the photon from a circle to a star everywhere, you edit the photon diagram. But if you want to change the photon to a star just in one place, you can edit it in that one place and it won't affect the photons anywhere else in the system.

An advantage of this is you don't need to "hoist" a property from the Inspector into the Variables panel every time you want to change a tiny thing in a sub-diagram. A disadvantage is that it might be confusing if something deep is changed and it's confusing why this one Light Clock is acting differently than all the other Light Clocks. But then I guess you could click on the misbehaving Light Clock and find the deep thing that is changed.

Am I overthinking this? Any references about these issues? Vaguely reminds me of Jonathan Edwards' calling by copying idea from the first subtext.