On Wed, 2013-03-20 at 20:13 -0700, Jon Cruz wrote:
On Mar 20, 2013, at 1:28 AM, Jasper van de Gronde wrote:
On 19-03-13 20:01, Ted Janeczko wrote: ...
Tav, that sounds like a fantastic birthday party! I've done quite a bit of looking into the internal workings of SPObjects when I created the objects dialog, and I think I have a decent understanding of how everything is updated, but it does get very confusing due to gobject obscurities... If it would help out, I can take a closer look into this and start documenting the process so that it will be easier to work with in the future.
I looked at this some time ago, and one of the main issues is that we constantly keep around the XML (text) representation of attributes. So you update some internal path representation, which triggers an update of the XML, which triggers an update of the internal path representation. (I don't remember how we actually avoid an infinite loop.) This not only causes immense slow-downs, but also causes a loss of precision when doing several transformations in sequence for example. So any clarification on how this mechanism works exactly would indeed be hugely appreciated.
I think the short answer how it works is:
"It doesn't"
There are some 'interesting' work-arounds in place with various toggles being set to try to stop loops, but we really need to improve the overall situation.
Much of this has been in place since quite early days, but you do seem to have summarized the main issues. There are also some issues with timing in regards to subsets of one of the two trees getting disconnected as they are being worked on.
Would this be a good GSOC project?