John C. wrote:
CPAN has 9502 modules.
So we need a script that will chew on CPAN’s dependency network and
prioritise the CPAN modules.
From this principle, all of life and physics may be deduced.
(Sorry if this is a duplicate; I attempted to post basically this to
c.l.r before but it hasn’t shown up there or in ruby-talk.)
So, anyway, I couldn’t get Perl’s CPAN::Dependency to do what I wanted,
so I wrote a Ruby script to download CPAN. Well, the names of “releases”
(packages with versions; these can contain multiple modules) and their
authors and dependencies, anyway.
The script downloads about 15000 pages from CPAN, one per author (5000)
plus one per current release (10000), and takes a little while, although
all the pages are small (the per release ones are just Makefile.PL, to
pull prerequisites from). It produces 800k of YAML.
I’ve cleaned up and processed this output (relatively trivially, sorry,
didn’t save my work) to find the top 100 most-required releases. I’ve
got 2 versions of this list: the first is based on CPAN::Dependency’s
notion of only counting authors whose releases refer to each release, to
eliminate false popularity generated by gratuitous references between an
authors own releases. The second isn’t restricted like that and counts a
references for each release that lists it as a prerequisite.
The first that stands out to me, after eliminating functions that exist
are being developed in Ruby, is POE - Perl’s event-driven networking
library. It looks quite simple to build, in comparison to Python’s
and it seems it may be possible to build a Twisted-like interface layer
top of a POE port. What do Rubyists use in lieu of a Ruby event-driven