Monday, 6 July 2009


So I'm resigning from my role of Perl 5 pumpking. That doesn't mean that I'm not proud of what I did for Perl 5 in the past, or that I don't stand behind my choices anymore.

Let's begin by inspecting some of the core ideas that drove the chromatic rants since the last six months, and examine why they are a sure recipe for failure.

First, the regular snapshots, labeled releases. When you cannot control how much development time you'll have for the next release, nor the list of hot topics that the contributors will volunteer to contribute to, you don't release easily; at the best, you snapshot. Which is fine for alpha-grade software as parrot, as I've already said; but not for production-ready software. Did I point out that Perl was a very complex project with a lot of interdependent parts? Care is essential.

(As a side-effect, it might quite be easy to predict the release dates of parrot for the next century, but not the date where it will be used in production. If that happens at all, that is.)

Secondly, a lack of feature plan for the next versions of Perl. Again, this is not something that you can control in a volunteer-based project. I've said many times that I'd like 5.12 to solve some inconsistencies on the handling of UTF-8 strings with regard to case-insensitivity comparisons and case-changing operators. That would be a backwards incompatible change and would break code -- contrary to the gross mischaracterisations that chromatic presents as truth, P5P is certainly not opposed to backwards incompatibility. But to achieve that, you need a regex + UTF-8 guru, or somebody willing to invest countless hours into becoming one. If someone comes with another itch to scratch, sends patches, implements a neat new feature, then that would warrant a shiny 5.12 without the UTF-8 revamp.

Thirdly, the "untested code is not worth caring about" fallacy. One can try to wave away the DarkPAN into oblivion with a blog post, but if Perl still exists for more important purposes than the amusement of a few computer language geeks, it's because of the DarkPAN. And not all the DarkPAN code is regression-tested, or even testable. Quick glue scripts, crontabbed email reports, network management helpers, post-commit hooks: they cost too much to test, because the environment they run in is orders of magnitude more complex than their internal logic. I've code out there in the DarkPAN that deals with the relative replication delays on two pairs of master and slaves databases. That's not testable. But this code is critical.

Fourthly, the main argument chromatic has to back up his proposals for Perl 5 is "we should change defaults and add syntactic sugar without thinking about the consequences because that will allow me to rip off three lines of boilerplate code." The hints I gave at the time on P5P that maybe adding syntax would be a better idea if there was some semantics behind it were then aggressively relabelled as reactionary. (As a coincidence, started its anti-P5P propaganda shortly afterwards.)

At the contrary, every language extension that went into 5.10 was there because it solved an actual problem, in a more efficient way than the CPAN could provide, and sufficiently thought out (I hope) to avoid being sorry having to maintain it in a couple of versions from now. (But now I'm not so sure about UNIVERSAL::DOES() anymore.)

Fifthly, the way chromatic has arbitrary chosen one particular regression from 5.8 to 5.10 and presented it as if it was as serious as a remote root zero-day vulnerability, willingly ignoring every other regression (or improvement) in the hope of making a point. Note, that regression wasn't even a bug in the language, something that could have made Perl programs misbehave or segfault. It was a performance regression. In a world where most programs are I/O bound anyway. And there were many other more interesting regressions to choose from, I won't hide that. So why this one? Certainly because of its marketing value. It was certainly sexier than a more severe regression on an obscure feature he would have needed to explain to his readers.

At the end, I've had enough of those gratuitous attacks. I've always accepted and even encouraged criticism about my decisions as a pumpking, but only as long as there were based on technical arguments, not on marketing slogans repeated hysterically by someone who remains deaf to any form of discussion. So I'm stepping down from my role of pumpking. I'm burnt out. I don't want to have to justify myself again and again in front of all this.

Moreover, if my resignation can help Perl 5, it will be for the greater good. There are many committers and knoledgeable contributors, and they'll probably start reviewing the patches to apply a bit more: avoiding bottlenecks is good. The release process will be documented and distributed (and thanks to Dave Mitchell for having worked a lot on this) and the whole bus factor of Perl 5 will go up. Don't worry, I'll still be around to ensure that the future of Perl 5 is not handed to the marketroids, and to produce the occasional patch. But I'm withdrawing from the front line. Which will have, I'm sure, positive effects in the end.


Garrett said...

Being a pumpking looks to be a particularly difficult and mostly thankless task. Thank you for your love of Perl and your stewardship of it.

Adam said...

Thank you for everything you've contributed up until this point.

Anonymous said...

Hey, that's cool, now maybe you'll have time to have a beer from time to time at the Maldoror!

See you Wednesday,


Anonymous said...

Thank you very much for your work as pumpking.

Tom DeGisi said...

Thanks so much for all you have done (and will do) for Perl, both as pumpking and otherwise.

Tom DeGisi

Anonymous said...

Thank you. A true Perl 5 Porter is a rare breed.

But if I may... speaking as someone who has argued extensively with chromatic, people are going to be wrong. I didn't see the comments referred to as "personal" by others, but I've always known chromatic to be civilized, even when I wasn't. I've been a long time critic of Parrot and I've written extensively about its design flaws, rampant premature optimization being one of them, on my blog. At the YAPC dinner just a couple weeks ago, chromatic told me that he'd come around to my way of thinking on one of those points. Not to say that I'm always right, but that, in general, any certainty someone speaks with is usually misplaced. We all need to allow for this. We need to not be overly sure and we need to forgive and ignore people who themselves are overly sure.

There are a few absolutes though. The pumpking is in charge of patches and the release. There's no reason chromatic couldn't jockey for the position for next go. Perhaps his only contribution would be doing a whole heck of a lot of work to streamline the release process. And there's nothing wrong with that. Having a pumpking in once that concentrated on human elements rather than technical elements wouldn't be all bad. But for the most part, the traditional role of the pumpking is "I'm working on Perl; if you send me a patch, I might apply it too".

Yes, Perl 5 has far more contributors and users and is far more mature. I also doubt that what's good for Parrot would also automatically be good for Perl 5. I have a hunch that countless observers like myself who would tend to agree with you simply stayed silent while those with "ideas" voiced them.

Every programmer who has programmed for money knows about "ideas". You don't want your client on the phone all day talking your ear off about their "ideas" and you don't want to sit on p5p and talk about people's ideas. I think it's justifiable to dodge this just like Dave Mitchel just declare he is going to. Just because people are fussing doesn't mean it's a big deal. There are still a heck of a lot of people who aren't fussing. Moving to git did give the Extreme Programming followers a taste of blood though.

The #corehackers crowd seems to be doing a much better job of handling ideas though -- everyone is playing with a few, but no one is taking anything seriously, at least not to any unhealthy degree. Just a thought, but you might enjoy hanging out with us relative novices rather than the strongly opinionated personals such as tchrist, Randal, and that whole lot, god bless them as they are =)


me said...

Rafael, this is all very well said. Your five main points are so sound and reasonable it's hard to imagine any well-informed person successfully disputing them.

One point I disagree with, which is the suggestion that your resignation might be good for Perl. It might well be the right decision for you, and I respect it, but I don't think Perl will easily find someone who can match you in understanding what's there but also relentlessly moving it forward. I think Perl 5 will be in recovery mode for awhile.

Thanks for all of your patience and guidance.


Isaac Lin said...

Regarding point 3: lumping everything not in CPAN into one category seems to me to be far too glib a treatment. It is the norm for development communities working on open development platforms to be able to choose the distribution channel of their choice, without being marginalized as a consequence. Since any analysis tools will presumably be made publicly available (as I believe Adam Kennedy for example has been doing), it is quite possible to solicit input from a wider audience (and there appears to be some receptiveness to this idea).