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

Reply via email to