DEV Community

Tom Browder
Tom Browder

Posted on

3

Publishing Raku modules

As a long-time Raku user and author of several published modules, I have learned a good bit from my own experience and from using my Raku friends' modules and I recommend the following steps be considered for new authors.

  • Create a public account on Github

If possible, make it a name you use as a handle on IRC #raku and your auth name for the Zef module archiving system (similar, but more secure than Perl's CPAN).

  • Create a fez account

It is the key-generation system protecting your user name and Zef auth name. It is required in order to publish to the Zef archival system.

  • Create the module on your local host

You may use mi6 (from module App::Mi6), but for extra credit, and highly recommended, use my module Mi6::Helper's binary mi6-helper. It encapsulates many of my preferences I consider to be "best practices," and it greatly eases the boring work of starting a module.

  • Think carefully about the module's name

Perl used to have a recommended standard name hierarchy, but the Raku community has been much more indifferent about that. My first module was a port of a Perl module I needed for a personal Perl project I wanted to port to Raku: Geo::Ellipsoid. When I started my first Raku module from scratch, I asked the community for guidance but didn't get many firm suggestions. I learned later to consider a new module's name in a combination of my opinions melded with existing names of other authors' modules. As our module ecosystem has evolved, it is possible, but a bit rude in my opinion, to use another author's module name, but the system can disambiguate the two by the respective authors' auth names. For example, one of my better modules can be referred to as Date::Names:ver<2.2.4>:auth<zef:tbrowder>.

I also learned, as I worked on a new module, the original name often needed changing as the design zeroed in on its final form. Developing on Github makes it easy to change names prior to publishing a module for the community's use in its fez archive. After that, any name change is more involved and its popularity needs to be considered.

One can see the list of published modules by visiting the site at https://Raku.land. The site does have some issues, but they are slowly being worked. (Note the Modules search window on Raku.org which links to Module.raku.org is not maintained and should be ignored.)

  • Summary

Publishing useful modules is fun and rewarding. The Raku community is a warm and welcoming one. Please visit and we hope you will learn to love the language as much as we do.

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay