So I just got word that the maintainer of
App::CLI::Extension merged my changes!
I’m very excited to have participated in January and I’m looking forward to seeing what my February assignment will be.
Eight days ago I submitted the pull request https://github.com/holly/perl-App-CLI-Extension/pull/1
today I contacted the maintainer of the module, Akira, to see if they had any feedback. I’m hoping to get something constructive back which leads to a merge and ultimate release of these – admittedly tiny – changes.
This was quite possibly the least I could do, but I did find it challenging since I’ve never really used the module. I learned a lot about how this module was structured, how
Module::Install works, and I learned about configuring things in Travis-CI.
I’m looking forward to responding to any feedback from the module maintainer, and I’m excited to see how next month goes, too.
So, today I got a little more progress on my task. I found an
xt/perlcritic.t test, and I updated it to use severity 3. I need to remove the
no refs from the
perlcriticrc because I worry that I think there are more places that use it than need to… but I need to check.
I’ve got most of the files passing now, and now my
git status looks like this:
~/Documents/Devel/perl-App-CLI-Extension$ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: Changes modified: Makefile.PL modified: lib/App/CLI/Extension.pm modified: lib/App/CLI/Extension/Component/Config.pm modified: lib/App/CLI/Extension/Component/ErrorHandler.pm modified: lib/App/CLI/Extension/Component/InstallCallback.pm modified: lib/App/CLI/Extension/Component/OriginalArgv.pm modified: lib/App/CLI/Extension/Component/RunCommand.pm modified: lib/App/CLI/Extension/Component/Stash.pm modified: xt/perlcritic.t
I’m excited about what I’m going to be able to commit here soon, but I’m going to do all of these perlcritic commits at once so as to make it easier for the maintainer to review.
I have updated
App::CLI::Extension tonight to have another module within my assignment meeting
perlcritic -2 with the exception of POD headings. I’m also throwing
Readonly into the per more modern best practices. I’m going to include updating those constants to using
Readonly as I move along.
Another day, another tiny improvement.
So, I have a couple of confessions to make:
Neil did not ask me to be judgemental, or to critique other peoples’ contributions to the rich set of modules contributed freely to CPAN. Neil’s challenge wasn’t for us to help identify modules to remove from CPAN, I suspect that there are already parameters for doing that and that when it is appropriate to do so that this is done.
The challenge at hand was to take a module that has been abandoned and left lonely, not being updated or added to, and give it a little TLC. Even if it is just a spit-shine, these modules need something… anything.
I can’t help but feel like I walked into this challenge having completely missed the point of the whole thing.
It’s hard releasing stuff into open source. I’ve been doing so for more than 18 years now, and it’s not an easy thing to do, subjecting your work to criticism. We owe it to one another to at the very least not be judgemental and dismissive in this challenge.
So, what am I doing to improve
App::CLI::Extension? I’ve got two things in store:
Module::Installthat’s causing trouble, so I want to fix that.
perlcriticand PBP for this.
I don’t know what else to do just yet, but it seems like so far I’ve got a few hours of work. Let me know what you think, and if you use this module, definitely speak up and let me know if you have any specific requests.
I got my first assignment from Neil for the Pull Release Challenge:
Tonight is my usual coding night, so I’ll probably start tonight, but I also have some more work to do on
I saw on my Perl Weekly newsletter today that there’s a new challenge started by Neil Bowers to try to help people working more on the various CPAN modules which need work. This seems like a neat idea, and the gist of the challenge is simple:
Neil is also encouraging folks to blog about this while they’re doing it, and so I am. I’ll keep you all up-to-date as to what I’m working on for this challenge.
For more information, you should probably refer Neil Bowers’ post about the 2015 CPAN Pull Request Challenge.
Currently, I’m still also doing work on
Net::AMQP::RabbitMQ, mostly focusing on some interesting things I found in the C library it is binding to.
I’m excited to receive my first assignment, however, which I believe should be arriving at some point today (2015-01-05).
This weekend I released two versions of
Net::AMQP::RabbitMQ on CPAN: 0.007000 and 0.007001.
The first version was the culmination of some major refactoring in how Perl types were inferred into C and AMQP types in headers, and then also adding a bunch of previously-unsupported AMQP header types into Perl.
The second version was fixing an oversight where
timestamp types in headers weren’t supported. I also added a
manual_tests directory which is where I will add some manual tests as I do some of those. There is a test where I verify dead-letter queue functionality that helped me verify that
x-death headers were working properly now.
The primary reason why this is huge is because the special
x-death headers are now supported. Not only that, but in the event that you had a non-Perl program publishing to your queue with headers, you may have had compatibility issues with the header types that would cause to have to kluge.
As of now, the new version – 0.007001 – isn’t live, but if you search for the module on CPAN you should find the latest published version.
If you notice any issues, let me know by going to the official github repo and filing an issue.
Today I got tests done, and I kinda abandoned
Error.pm for exception handling. I switched over to using
Try::Tiny since it looks like there are known issues with Error.pm in more modern frameworks like
Moose. I’m going to try to avoid using ##no critic as much as I can, but I had to use it twice in my
ModExec::Exception class since I wanted to include the sugar functions from
Try::Tiny, and since I want to use
die() in my throws to keep the object intact.
Here’s tonight’s changeset: http://tinyurl.com/nuzvnzt
Next up is the base class,
In re-factoring ModExec, I have started with the exceptions. I’m debating how I used to do them. When I first started I used
Error qw/:try/ and
Error::Simple for exceptions. I still think I will, it looks like it’s still being well-maintained by Shlomi Fish (see here).
I think that the piece I will bite off first is to get some test coverage around my exceptions and add documentation. They’re not much more than what you get with
Error::Simple, but there’s some stuff in there for stack dumps and things like that.
Goals for this first pass are:
`perlcritic -3`for all exception code
Here are some GitHub links: