Re: Is the CPAN river always a DAG?
[email protected] (Alberto Simoes) Tue, 27 Mar 2018 14:31:39 +0100
| Newsgroups | perl.cpan.workers |
|---|---|
| Message-ID | <[email protected]> |
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