Please forgive the slowdown of updates in the past weeks. I've been writing my master's thesis, which covers all the work done so far on the state system. So nothing new and exciting is going on...
There are still some concepts that have been explored or hinted at, but were not implemented or tested, so those won't be part of the final report. It could make a good "future work" list, if the need ever comes up:
A new type of attribute, the "symbolic link attribute"
It would point to another attribute in the attribute tree, would returns its target's value when queried, but have different behavior if modified/deleted. This could be used for example to model open files, if two processes are writing to the same file, and one of them closes it, it doesn't close it for the other process.
Extending non-leaf nodes in the History Tree
Right now, if a non-leaf node becomes full when building a History Tree, we will close it and close all of its latest children recursively. This is sometimes bad as it can lead to the degenerescence of the tree into a simple list. A better solution would be to "extend" the full non-leaf node, as if we added another node "behind" it. This new node would get the next available sequence number in the file, but would keep the same start times and end times. This would allow for more compact trees, and would make it so the maximum amount of children is normally always attained, reducing the wasted space in the nodes' headers.
Defining different types of History Tree nodes
With the beauty of polymorphism, it would be easy to define different classes of nodes for the different types. Notably, leaf nodes could drop the big arrays containing links to the children nodes, as they would never have children. This would allow them to contain more intervals. We could also easily differentiate between real and "extension" nodes, which we talked about previously.
These are just ideas up in the air for now, but I think these should be definitely looked at should the History Tree be developped further.
Alright, I'm going back to writing, see you later!