Perl 6 module ecosystem – news and ideas

I’ve looked a bit into S22 recently, and I thought it would be fun to try to implement some subset of it in neutro and see how it will turn out. Well done is better than well said, so I did. More thinking on the subject and I decided to mangle the module ecosystem itself a bit to suit the new capabilities nicely. I gave life to a fork of perl6/ecosystem. How is it different? Let’s see. It no longer contains a list of the git repo urls, rather it keeps the urls of the META.info files known to it, and a script which downloads all of them and puts in a nice projects.json file containing all the metadata of the modules: descriptions, proper names (goodbye perl6-Acme-Meow, welcome Acme::Meow), dependencies, probably more eventually. But wait, what is this META.info magic? Let’s see how it looks for neutro:

{
    "name"        : "neutro",
    "version"     : "*",
    "description" : "A simple module installer for Perl 6 modules",
    "depends"     : [ "File::Tools", "Module::Tools", "JSON::Tiny" ],
    "repo-type"   : "git",
    "repo-url"    : "git://github.com/tadzik/neutro.git"
}

So all you have to do (if you want to, of course), is to create such file in the root directory in your module’s repo, let me know so I can add it to my ecosystem fork and bam! your module is now a part of the new ecosystem. Easy-peasy.

Neutro now handles the new way pretty nicely, it only needs JSON::Tiny (a new dependency: whee!) in the new ecosystem so it can bootstrap itself properly.

So, what do you think about the new way? Ideas, criticism, excitement?

Advertisements

2 Comments on “Perl 6 module ecosystem – news and ideas”

  1. supernovus says:

    I think it’s awesome! Honestly I think the new branch should be merged into the old one. It’s easy enough to keep “backwards compatibility” just by not removing the old projects.list file.

    Then just update the PIONEER file to describe the new format, and have everyone move over to it. Bye bye deps.proto, hello META.info!

  2. John says:

    This looks excellent, tadzik. Great progress on this front. Thanks!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s