2017-10-06 | 962 words | CPAN support for Rakudo Perl 6 dists
If you've been following Rakudo's development since first language release on Christmas, 2015, you might've heard of numerous people working to bring CPAN support to Rakudo Perl 6.
Good news! It's finally here in usable form and you should start using it!
Let's talk about all the moving parts and how to upload your dists to CPAN.
The Moving Parts and Status Report
All of the heavy lifting has been done awhile back, during Perl Toolchain Summit and other times. I wasn't present for it to know the details, but to catch up you could join #perl6-toolchain chat and talk to humans or read the channel log. PAUSE/CPAN support for Perl 6 dists was implemented and zef module installer was trained to check for CPAN dists as well as our GitHub/GitLab-based ecosystem (called "p6c").
The only bit that was left missing is a front-end to browse available CPAN dists. There is a team who wished to take metacpan.org's codebase and modify it for Rakudo dists. I'm told that project is currently "stalled but not dead".
That's unfortunate, however, earlier this week,
taught to handle CPAN dists,
so—hooray!—we finally have some sort of a front-end for CPAN dists. If you
only want to see CPAN dists in search results, you can use
qualifier (just like you can use
GitHub/GitLab dists URLs still direct to repos, but CPAN dists have a
that lets you see what files are up in the dist. The file browser also
README.markdown markdown readme files.
The viewer doesn't have all the bells and whistles of metacpan.org and doesn't (yet) render POD6, but it's certainly useable. The person who implemented this viewer will be busy preparing 6.d language release in the near future and won't have the time to make additional improvements to the CPAN dist viewer. So… you're invited to contribute and make it better!
Why Upload to CPAN
CPAN has many mirrors ensuring module installation is not affected whenever GitHub (a single website) has issues. The uploaded dists are also immutable and stay there forever (barring special deletion requests, even deleted dists remain available on BackPAN). This means people are more likely to trust these dists for use in their larger projects that need dependable dependencies. Lastly… it's what the cool kids use!
How to Upload to CPAN
Here's the process for how you can get your dists to CPAN. If these dists are currently listed in our p6c ecosystem, both p6c and CPAN versions will appear on modules.perl6.org, and you're encouraged to remove the p6c version. Some of the described tools are brand-new and others are brand-old, created before Rakudo existed, so treat this guide as part information and part invitation to improve the tools.
Step 1: Get a PAUSE account
PAUSE stands for "The [Perl programming] Authors Upload Server", it's located at pause.perl.org, and it's a site you use to upload dists to CPAN.
Go to request PAUSE account page and subscribe for an account. The "desired ID" field is for your PAUSE ID, and it's currently used as "author" field on modules.perl6.org. For example, mine is ZOFFIX.
I had my account for over a decade, so my memory is a bit fuzzy, but I think you'll need to wait for a human to approve and create your account—it's not instantaneous.
Step 2: Make a Dist Archive
You can manually create a tarball or a zip archive. I don't have all the details on which files you're supposed to have in them; you can take a look at other CPAN dists to see what they're doing or…
Use App::Mi6 module! It's
possible you were already using it to create dists, in which case you're in
luck, as you can just run
mi6 dist to make a dist archive.
I rolled my dists by hand and wrote all the docs in
README.md, so when I
mi6 dist a whirl, it
emptiness because I wasn't using any POD6—something (currently) to watch
Step 3: Upload Your Dist
The second option is to use App::Mi6's
mi6 upload command.
Shortly after the upload, you'll get an email about whether your upload
succeeded (you can also see emails on nntp.perl.org). Make sure you have a
in your dist and that the dist
version you're uploading is higher than the currently uploaded version. Those
are the most common upload errors.
Step 4: Relax and Wait
If you're on IRC, in about 10 minutes after your upload, our buggable robot will announce it:
<buggable> New CPAN upload: Number-Denominate-1.001001.tar.gz by ZOFFIX
In about 2 hours, the dist will also appear on modules.perl6.org. Its updater is started in a cron job on 20th and 40th minute of the hour (unless a job is already running) and it takes about 2 hours to finish each run.
Step 5: Celebrate with the Appropriate Amount of Fun
That's about it to the process. I foresee more tools will be created in the future to make the process even easier than it is today. If you have any questions or issues, just talk to a human or a robot on our #perl6 IRC channel.
CPAN support for Rakudo Perl 6 dists is now usably here. You're encouraged to upload your dists to CPAN, to grow a more dependable ecosystem. You're also invited to improve and create tooling that manages and displays CPAN uploads.