Friday, July 3, 2009

I'm Not Afraid of Change...

... but I am starting to get a bit worried about the Perl 5 maintainers.

Let me try to explain my point of view more clearly. That 11,000 lines of code of mine represent a significant technological debt for my company. I've learned a lot about Perl since I wrote the bulk of it, and Perl itself has progressed considerably in that time. It isn't well-written, or well-commented, and it certainly isn't tested, other than in the sense that its output is mostly used and seems to work fine.

Luckily, for the last decade of Perl 5 development, I have effectively had an interest-free loan on that debt, so it has only been an issue on the rare occasions I have had to update the code.

Now, as I see it, a new version of Perl can do one of three things to that debt:

1) It can add to it, or force me to pay it off all at once. People keep on blithely suggesting simply keeping old copies of Perl around to run the old software. But with 5+ different platforms to worry about and me hoping to write my new Perl code using new features, this would quickly become a significant new source of technological debt. Likewise being forced to rewrite the code without getting something useful from it.

2) It can keep the technological debt the same. This would be the case if my old code works fine with a few changes, but I cannot easily access new features without completely rewriting my code. In this case, upgrading Perl 5 would be painless, but would only make a difference in newly written code.

3) It can actually reduce the debt. This could be because the old code works with few changes and actually works better -- faster, or automatically detects real errors instead of just nagging me about clumsily written code that works. Or it could be because I can make the old code work easily without blocking my access to the bulk of the new features, and those features are actually really easy to use to make the old code better.

Unsurprisingly, I'd be unhappy if updates to Perl 5 fell into category 1, reasonably happy if they fell into category 2, and ecstatic if they fell into category 3.

What has me now worried about this process is no one seems to be claiming the changes fall into category 3. If all it takes is no strict; no warnings; and maybe a couple of minor tweaks to the code (carefully and automatically pointed out by Perl 5 itself, ideally) to make a range of cool new features available, then I'm excited by that, and I would certainly expect the vast majority of the DarkPAN would be at least okay with it.

Instead, people are making it sound like we can expect most future Perl 5 updates to be like taking some unpleasant but necessary medicine. I don't see how the DarkPAN can really object if it only takes one line of code or a command-line switch to make the Perl 5 of the future act just like the Perl 5 of the past. So when I see comments like "Fuck DarkPAN", I start to get worried that people are envisioning changes that are both major and not easy to ignore.

And one by one, and two by two, They have sailed from the wharf since then;I have said good-bye to the last I knew, The last of the careless men.And I can’t but think that the times we had Were the best times after all,As I turn aside with a lonely glass And drink to the bar-room wall. -- Henry Lawson