The Mysterious Backstory of Perl QA (chromatic remix)

chromatic on 2008-02-02T21:11:14

If you hate Perl 6, look away now. Thanks.

Way back in time, when I was a lowly system administrator with a lot of spare time, a contracted author for Slashdot, the author of a couple of hundred posts on PerlMonks, and a bundle of more spare energy than concrete contributions, I wanted to go to OSCON 2000. I almost made it in as press, until Carly Fiorina decided that it was more expensive to pay system administrators who could fix million dollar problems in five minutes (no joke, I did this one night) than to make engineers whose time was worth $300/hour sit around for a couple of days while someone in another state figured out that merely rebooting a machine wouldn't fix a broken hard drive. Buying a plane ticket and springing for the hotel room in Monterey was less important than being able to pay the rent that month.

I only heard about the Perl 6 announcement after the fact.

In those days, there were several Perl 6 working groups devoted to studying various important issues. The idea was that each working group would come up with an optimal design for its particular area, then report it to Larry, who'd approve it for Perl 6. This was a process designed to take months. This was also, per Larry's suggestion, a process designed to include mere mortals like me who may have known the language and had a couple of years experience with it (at that point, one and a half for me), but who wanted to do something.

Schwern ended up the QA pumpking. He'll probably tell the story with more detail and less inadvertent falsehoods than I will (but maybe not; his memory's about as sketchy as mine is). One of the main results of the QA working group was the idea that improving the quality of Perl 5 (not a typo; I really meant the number "five") -- in particular its test suite -- would help Perl 6 by developing better testing tools, better testing patterns, and a nice suite of regression tests for five-on-six compatibility. "That's a great idea," I thought. Why?

I'd written my own test modules around that time, as the testing bug had infected me in about 1999, but it was clear through the end of 2000 that Test::More had serious advantages. Integration with Test::Harness was a huge improvement over my home-grown framework.

I did get to go to OSCON in 2001, the first year in San Diego, because I was speaking about extreme programming and XP and open source development. I don't remember a lot of details, but the rooms were packed, and all of the information on testing seemed to grab the audience.

In MJD's tutorial about iterators, generators, and Perl's advanced techniques (there could be a handbook in there somewhere), I somehow promised to refactor of File::Find to use iterators internally. (I still have the code somewhere; it's a lot more portable, but it broke Mac OS 9 and it's probably a failed experiment by now.) Along the way I noticed the opportunity for a few small patches to the Perl core. Unfortunately, the first one (to English.pm, of all things!) didn't work. Jarkko mentioned something about the tests.

Oh yeah, tests. I'd heard about them somewhere. I revised and improved the tests and submitted a fixed version of my patch. Someone (probably Schwern again) made a list of undertested and untested modules, and I wrote a fair amount of code over the next few months. (I was also trying to avoid writing a book, so if you plot the due dates of chapters versus my patch contributions, you can see a strong correlation.)

Around mid-September 2001, I poked around at Test::More's internals and realized that extracting what would become Test::Builder was simple. (It was on the wishlist for the module, so it wasn't originally my idea.) It took a day or two.

Several years later, I can think of a couple of other modules that use Test::Builder, so it may be some of the most useful code I've written/extracted. It's not quite right to say that it exists only because Perl QA came about from the Perl 6 working groups; Perl QA might have existed for some other reason at some other time in the absence of Perl 6. However, in my mind, one of the most productive and impressive changes in the nature of the Perl community at large -- the testing revolution -- traces its history back to the Perl 6 announcement in 2000.