On 03/27/2018 02:17 PM, James E Keenan wrote:
A few weeks ago I made a presentation to the Philadelphia Perlmongers
(http://thenceforward.net/perl/talks/phlpm20180312/index.html) on the
subject "Testing CPAN against the Perl 5 Core Distribution: Where Do We
Stand?". In that presentation, I sketched the concept of the CPAN river
and described it as a directed acyclic graph (DAG)
(http://thenceforward.net/perl/talks/phlpm20180312/slide017.html), using
one of Neil Bower's images to make that point.
In the discussion afterwards, a prominent former COBOL programmer
suggested that there was nothing to exclude the possibility of circular
dependencies among CPAN distributions. A could depend on B, which
depends on C, which depends on A. If so, we would have a cyclic graph.
Wouldn't that undermine the concept of the CPAN river, he asked.
Since all I know about DAGs I got from reading Wikipedia and the
documentation to Jarkko's Graph.pm module, I didn't have a good
response. So I promised to ask the question here.
* Can CPAN be cyclic?
* If so, then does that mean that, when we speak of CPAN as a river, we
are *imposing* DAG-ness on it by means of the algorithm(s) with which we
calculate the river (e.g.,
https://github.com/dagolden/zzz-index-cpan-meta)?
As I see it, we can't have a non DAG where all dependent modules are non
Perl-core modules. Or it would be impossible to install (ask cpan to
install A, it will download B, then C, then try again to install A).
Nevertheless, we can have A1 that depends on B that depends on A2, where
A2 exists as a core Perl module, older version than A1. Thus, B would be
happy to build based on the previous, older, version, and then A1 use B.
I think I got some similar situation some years ago, but I can't refer
whose modules they were.
Hope this can help,
ambs