I've been known to decry the use of databases for certain applications. In this meditation I am going to go against that reputation by advocating their use.

CP6AN should be a database.

So too, should the Perl6 equivalent of perl/lib and perl/site/lib.

Currently, each package on CPAN is an indepentant entity. Whilst this has some advantages, it also results in a huge amount of duplication with respect to all the support scripts and ancillary files.

Each package is charged with providing a makefile generation script that in turn has to 'discover' the environment into which it is being installed and generate an appropriate makefile for that environment.

As most developers do most of their development on one (or maybe two) OS, it becomes the responsibility of of modules like ExeUtils::MakeMaker, Module::Build etc. to produce highly ambidextrous makefiles. The result it that every make file is hugely complicated, supporting those modules requires the skills of a very rare breed of developer who has access and knowledge of multiple OSs. My thought is that when Perl6 is installed, a generic module makefile could be generated for the installation. From that point on, the process of intalling new modules would be:

  1. Query CP6AN (possibly using SQL), to located the module/class required.
  2. Replicate the selected records from CP6AN into the local LIB database.
  3. Invoke the locally tailored, generic makefile to perform any compilation steps required.
  4. Done.

This would allow for versioning, transactional control (rollback), backups, etc. Basically, all of the good things that databases provide. It would also vastly reduce the size of the mirrors by removing the need for all the duplications that currently exist. I could even imagine the day when individual installations could register with their local mirror for update replications etc.

As programmers, we tend to see the benefits of using databases for the storage of all manner of data. Why not our own, in the form of source code?


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco.
Rule 1 has a caveat! -- Who broke the cabal?

Janitored by Arunbear - retitled from 'A notion for the weekend.', as per Monastery guidelines


In reply to Notion: CP6AN <strike>should</strike> could be a database by BrowserUk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.