After reading about chromatic's Mojolicious::Plugin::UnicodeNormalize I thought "I could have a crack at that" and created a similar thing for my own framework of choice, Dancer2. Having never written any code that might possibly be of any utility to another human being, I have never uploaded anything to CPAN. Anyway, now there's Dancer2::Plugin::UnicodeNormalize.
Though that's not as interesting as the cool things about uploading to CPAN. The first cool thing is how simple it is with Dist::Zilla which pretty much takes care of a whole load of stuff you used to have to do by hand. It has a plugin system to do neat things like Git integration (version tagging, changelog generation and such). I wish a similar thing existed for autotools (maybe it does) but the last thing that project needs is more scripts.
The second cool thing is CPAN Testers. Anyone familiar with Perl will probably know about this already, but I think it warrants mentioning at every possible opportunity... the family finds it a drag at Christmas dinner, but I will not stop. CPAN Testers is an integration framework in which a team of excellent volunteers will build and test your code on a dizzying variety of platforms. I don't have any MacOS or Windows installs here, but I know my code builds, runs and passes all tests on these platforms.
If only you could find this out before releasing the distribution... Oh, you can. -TRIAL releases are not
indexed for general release on CPAN (they show up as developer releases), though they are tested by the CPAN Testers.
Releasing a trial with Dist::Zilla is as simple as
dzil release --trial. Give it a couple of days
and you'll have access to dozens (or even hundreds) of verbose test logs. Failing test results are mailed to you.
It's a bit like Travis CI and the like, but for releases. And it requires no action
on your part, you just get it for free, whether you like it or not. But you'll like it.
Criticise or contribute to Dancer2::Plugin::UnicodeNormalize on Github. This post is longer than the code.
Text only, no HTML, * denotes a required field.