gump-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject Re: [revelation!!] circular dependencies do NOT exist!
Date Fri, 17 Dec 2004 18:06:58 GMT
Stefano, my responses below...

Stefano Mazzocchi <> wrote on 12/16/2004 05:51:17 PM:

> [...]
>   A --(needs)--> B
> and
>   B --(needs)--> A
> Until today, i thought that no matter how well maintained, a dependency 
> graph would always be a general graph, and cycles would develop, sooner 
> of later (it is still amazing that gump reached 750 projects without 
> explicit circular dependencies).

Is this all a matter of the scope of the node in the graph?  In other
words, and I think you get to this in a temporal way, but there are
parts of A on which B depends, and likewise the other direction.  These
parts are build at different times (sequenced), thus you are allowed
the perception of "something within" that is built before the whole.

> [...]
> Let's start with changing the above diagram a little:
>   ---------A----------------------------->
>           /
>        needs
>         /
>        v
>   -----B--------------------------------->
>                                         time
> let's call them A:1 and B:1 to indicate their name and their time 
> coordinate (1 could be a timestamp or a version, doesn't matter), so
>   --------A:1----------------------------->
>           /
>        needs
>         /
>        v
>   ----B:1--------------------------------->

It seems to me it is more of a matter of decomposition than temporal,
that each "larger node" ie, "A", can be decomposed into its smaller
components, "A:0", "A:1", and "B" is decomposed into its components.

> no, the previous diagram said that A needs B and B needs A... but the 
> fact is that at the time of B:1, A:1 was not even existing, so it's 
> impossible to draw the above "uses" line bidirectionally. The 
> appropriate diagram is
>   A:0-------A:1----------------------------->
>    ^        /
>     \      /
>    needs needs
>       \  /
>        \v
>   -----B:1--------------------------------->
> and we can continue like that backwards until we reach the *initial 
> stage* of one of the projects where one of them did *NOT* exist at all, 
> therefore the thing.

The question I have is: It really the case where the dependency on a
portion of another node is really time (version) based, or is it simply
time-based because of the way the entire node is built?

Another way of saying that is: Is what you are doing simply by extending
the model a series of decompositions to get to the smallest nuggest of
significance on which something could depend?  And the only reason why
time is involved is because of the sequencing of the building process?

> [...]
> In fact, a particular version is the crystallization of all the time 
> dependencies across the above trallis, but if we take into consideration 

> the time axis, there is no such a thing as circular dependencies.

I think you can come to the same conclusion by way of "sufficient
decomposition" and remove the time element.  Are we on the same
track of thought?

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message