Probably overstepping here, but my input is mixed in below:
On 2/12/2016 1:38 PM, john lunzer wrote:
Well, I'm certainly happy to have been part of the conversation.
On Thursday, February 11, 2016 at 6:12:20 PM UTC-5, Edward K. Ream wrote:
I see these three statements as fundamental to the data structure:
*Important*: some nodes may not have any thread running them for
some colored threads (attributes). That's just fine.
The only requirement is that the links defined by the red threads
must /also/ be a tree/dag.
2. Every view (attribute) can define/create its own set of
parent/child relationships, independently of all other views.
Afaik, no other data structure is this flexible while still
remaining intuitive.
I'm trying to really understand this.
The way it works now is there is an "underlying" directed acyclic
graph structure /viewed as a tree/. That part is important. We could
say that right now we only have access to a single view I'll call the
"classic" view, with no way to modify the view. Classic referring to
the "old" Leo where every node could have only one attribute. An
unacknowledged unnamed attribute, but there nonetheless. Clones don't
create views or use attributes at all, a clone is merely a node with
more than one parent. Because we're using a tree to view the graph the
only way to view a node with more than one parent is to show that node
twice on the tree. This creates a sort of "pseudo-view" because clones
result in showing redundant information in the same tree. It is the
same tree because there is always an invisible root node which all
other nodes descend from.
Now I'm struggling to understand this new data structure based on your
statements. To start, any viewing of the data structure must be done
through "views". Let's simplify things and say that the fundamental
element in this structure is a node and a single node could have a
headline, a body, and a list of attributes. Lets say a node cannot
have children. To keep things simple things lets start with a
situation where you have five nodes without a defined
body/headline/attributes. If these nodes have no attributes there is
no way to view and in effect it appears to the user that they do no
exist because he/she can not access them. So I believe your first
statement is wrong, every node needs at least one attribute.
I might be stepping on Edward's toes here, but I don't think nodes with
*no* attributes would be viable in his vision. I think every node would
at least need to be connected to the 'master' view. At least, that's
the only sane thing I can come up with. And if the user only ever uses
the 'master' view for storage, and never interacts with it outside of
that, then we'd never have completely invisible nodes.
Keeping with this simplest case the next step is to add an attribute
to each. We could add a different attribute to each which would
provide five views. Or we could add the same single attribute to each
which would create one view. In this latter case of a single attribute
what the user would see is a flat list of five nodes. Because our
fundamental element is a node and we haven't defined a way to
associate nodes with each other other than with an attribute a flat
list is the best we can get. Not very interesting yet.
I think the interesting part is how we get from a flat list of nodes to
something resembling structure. Perhaps once we add an attribute to
these five nodes, and we switch to that view, any restructuring we do
inside that view is restricted to that view only. Then it just becomes
a matter of using the usual organizational commands/keyboard
shortcuts/API calls. Easy peasy :)
To make this a little more interesting let us expand the fundamental
element to have a simple tree structure (for now let's leave clones
out of this, every node in the tree can have only one parent). Without
attributes again there is no view. In the simplest case the root of
each tree could be given an attribute and children would inherit that
attribute. If all trees had the same attribute we're starting to get
close to what Leo is right now.
Where do threads fit into this? Attributes by themselves do not imply
membership to a thread. Attributes do not imply any parent-child
relationship. Attributes only collect trees into a list to be viewed.
And in fact at this point this is almost exactly what I described in
the previous forum thread as "hoisting a collection of nodes". In that
case nodes as trees. For simplicity a possible restriction there could
be the same as above, marking a node with an attribute would pull in
the whole sub-tree and subsequent nodes couldn't be marked with the
same attribute, this would prevent a sort of "pseudo-clone" being
viewed in a hoisted list of trees.
In fact from this build up it appears that attributes have nothing to
do with threads. Threads have to include parent-child relationship
between nodes. And based on your description below it seems to
disregard any structure underlying trees of nodes.
The only requirement is that the links defined by the red threads
must /also/ be a tree/dag.
To be honest, I think the decoupling here is key. There should probably
be convenience commands to copy tree structure from one view/attribute
to another, but that's an implementation detail -- the flexibility
allowed by not imposing these restrictions trumps, in my opinion, any
inconveniences.
Well that's as far as my brain will take me today. Starting to really
lose my grip on the concept. Don't doubt it at all just looking for
some more detailed clarifications.
Me too! Excited to see where this goes.
-->Jake
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.