-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Moin Tim,

On Tuesday 11 July 2006 18:34, Tim Bunce wrote:
> I needed some code to trawl through a directory tree parsing perl
> modules and scripts to determine their dependencies.
>
> The closest existing CPAN code was Module::Dependency but it fell short
> of what I needed. The original author (P Kent) has passed over
> maintenance to me. My latest release is:
>
>   file: $CPAN/authors/id/T/TI/TIMB/Module-Dependency-1.84.tar.gz
>   size: 52161 bytes
>    md5: 90a83b2aee39f5d25060ebdb6cc3105d

Thats sort of cool, although I havent looked at it yet :-D

My real-grand-plan was always to have a CPANDB module that does exactly the 
following:

maintains a database with:

* every CPAN author with all details (ID, email, name)
* every package with all details (author id, version, name etc etc)

You would get current packages and old, for performance reasons in tow Dbs 
but this would be transparent for the user. There would be two interfaces:

  # cpandb --query Math::BigInt
  name: Math::Bigint
  author: TELS
  version: v1.77
  latest: v1.77
  ....

  # cpandb --update Math-BigInt-1.78.tar.gz
  package Math::Bigint updated.
  New entry:
  name: Math::Bigint
  author: TELS
  version: v1.78
  latest: v1.78
  ....

  # cpandb --query Math-BigInt-1.77
  name: Math::Bigint
  author: TELS
  version: v1.77
  latest: v1.78
  ....

and so on. This script would also update, add etc to the DB, much like RPM. 
(it only maintains the DB, no code no install etc).

The other interface is Perl OO like so:

        use CPANDB;

        my $db = CPANDB->open();                # default location

        print $db->author('TELS');
        my $m = $db->latest_package'(Math::BigInt');

        print $m->depends_on();

etc.

The Db would be empty, but with a suitale wrapper around cpandb could be 
filled, or you could download a pre-made one. Pause could even maintain on 
on their own, because then it would be always update.

This database could then be used by all the following modules:

        Module::Dependency
        Graph::Dependency
        CPANPLUS
        CPANTS
        CPAN
        Module::Author

and a few others I forgot. Basically by every module out there that 
re-invents the wheel over and over again just to be able to query stuff 
about CPAN modules. (some of them do really horrible stuff like accessing 
search.cpan.org - I know I wrote one of them :D

And up until today it is still not possible to get easily the answer "what 
modules do I need install for Foo::Bar 1.23 when using Perl 5.8.x".

(Why not use CPANTs database? Easy, because the interface module is as far 
as I know broken since a few years, the database changed formats a few 
times (breaking any interfacing module again), its undocumented (that is 
not the documentation you are looking for) and has a few other small 
problems, like no command line interface etc. And it is tightly integrated 
into CPANTS and it has a lot of dependency like sql or postgres or 
whatever. All the other solutions out there have some of the same problems 
or other problems of the same kind.

The most common theme seems to be that everyone wants what the DB does, plus 
something more (website generator, graph generator, installator and a shell 
etc). And since no real DB exists yet, everyone invents their own DB 
backend again :)

My idea was to build _only_ the database, and do it right, simple and easy 
to use and then get everyone else to just use the DB instead of fiddling 
with their own. (simple by having the database being superior to every 
other hack thats in existance now :-)

I even got so far as to do a mockup v0.02 - but then went back to playing 
Guildwars.

Is this a project that would be of general interest?

best wishes,

Tels

PS: Sorry for the rambling on, its 3:00 am local time and I should be asleep 
since 3  or 4 hours. And this email should have been written like 2 months 
ago. I hope someone understand what I wanted to say :-D

- -- 
 Signed on Wed Jul 12 02:58:38 2006 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

 I am looking for a Perl-related job (no, Python is not Perl-related :-).
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iQEVAwUBRLRKWncLPEOTuEwVAQI9TQf+I9xoOMGGEj6V5poS4VUX9fVN8FcPyYlP
jdT6PGCfurG7kGs2zuhyPYBM+W6rlk5wvrfI30KoDtxzDuCyCdogNIWekpjtnWB+
Ei72dZdVtiWEADxLopGG2gAMjhE4OPKo7qkmiox3sZQj/9jpU87nHCDpVHxrC1as
QlVJUaA3MGl75mYepiMoyoBcGfjyWsVzd59rouymwp4/NVpSfU+z4/cZU4KRFNb+
RuKmYXQKSfSsQe4Jn1o69ZCkzPOlZ2NC0HfVN6ZXCZ/iz5/CZTq3nT6iM/JBOIOE
HOAqwJzz3fkdS1z/AlKaoDbKNv+tBaH+6+wyX15dzr5f3UKR/2pb2g==
=lDv9
-----END PGP SIGNATURE-----

Reply via email to