2011 QA Workshop Day 0.5
I'm in Amsterdam now, the morning of the first day of the 2011 Perl QA Hackathon, and about to be pulled in by the black hole of Perl developers that is Booking.com. Curiously, this is the first trip in a long time that I haven't used Booking.com for my reservations.
Every year that I come to one of these workshops, my list of things to work on get longer and longer.
Last year I sketched out, with David Golden's help, a possible new CPAN client. We held off last year to see which direction Miyagawa would go in, but this year I don't think our tools really overlap. His tool, cpanm, appeals to the people who want the tool to not only make most of the decisions but also hide the details. It's started off as zero-conf, and you can still use it like that, but it is starting to get some knobs and dials.
I want to go the other way. I want all the knobs and dials. CPAN.pm and my cpan tool give you some control, but not enough. Once you start it on it's task you have three possible outcomes: complete failure, partial success (which is also partial failure), and complete success. If anything goes wrong in the middle, you can't do much about it.
Besides that, I also want to improve the existing cpan tool. I have a lot of that done and I was sprinting for the 5.14.0 cut-off but needed a couple of extra days. Since I missed the cut-off, I put that back on the shelf. Some of the things that I want to verify or polish include local::lib support, failure premonition (such as checking the target directories for writeability), automatic mirror adjustments for temporary changes in geography, and maybe some git interaction. There are a few other ideas I have, but I want to finish off these other features first.
There are some things I have to fix up for tux (H.Merijn Brand), who uses Module::Release much more than I do. My support contract with him is that I save up every email he sends me until the next QA Workshop, where he then forces me to fix them by bringing them up in front of everyone. Module::Release 2.05_02 is on its way to CPAN already.
I could work on some MyCPAN stuff here, but I've been doing a lot of that lately anyway so I want to focus on some other stuff. Maybe I'll write more about that later.
With no particular goal in mind, I want to challenge the group to think about programming without exceptions. What would that look like? I've been doing some Objective-C lately, and the stuff I'm reading is very committed to the idea that exceptions should actually be exceptional and unrecoverable. Anything less than that shouldn't handle exceptions. Exception::*, Try::Tiny and Ouch might be nice syntax for what they intend to do, but what if we assume you shouldn't be doing that at all?