At least one of you was a little miffed at something I said in last week's post about dynamic languages and virtual machines, and there was probably more than one of you, so I thought it would only be fair to air the issue in the open. Specifically, on the subject of Perl 6, I declared, "some would say it has officially graduated to vaporware status."
First, I should apologize. Weasel words like "some would say" and "many believe" are the crutches of lazy journalists everywhere, and I shouldn't have fallen back on such phrasing. Let me come clean, then, and confess that the "some" includes me, and from here on, I speak for myself. Perl 6, in my opinion, is pretty much vaporware.
As I said, however, not everyone agrees. (I'll leave it to someone else to decide whether the dissenting base consists of "some" or "many" people.) Reader "chromatic," a longtime contributor to the Perl codebase and the online managing editor of O'Reilly Media, weighs in:
I believe anyone who considers Perl 6 or Parrot to be "vaporware" has not bothered to look at the project or ask anyone involved with it about its current state. It's a small nit in an otherwise correct article, but it's a glaring nit.
As far as I've always heard, "vaporware" meant "a project, long promised by marketing, which doesn't actually exist." For that to be true of Perl 6, we'd have to have a marketing department (which we don't) and Perl 6 would have to not exist (which it does).
At this point, I should own up some more. I admit that I am not as in-tune with the Perl community as I once was. Years ago, back when I wrote more lines of code than sentences, I hacked out my share of incredibly functional Perl scripts and CGIs. I've since recanted. I've gone over to the camp that says Perl's loose C-like syntax encourages bad habits and results in maintenance-proof code, and I now think that Python is a better choice.
That said, I also have a hunch that a lot of professional developers are starting to agree with me. I don't hear much about large organizations -- such as Google, for example, or Oracle -- doing much with Perl. But here chromatic takes issue again:
How about Oracle (ships Perl), IBM (ships Perl), Microsoft (used in several build systems), Amazon (entire front end written in Perl), Morgan Stanley (heck, most of Wall Street, most of London's financial institutions)....?
Amazon's front end written in Perl? I'll take his word for it. But that's Perl 5; Perl 6 is another story.
I can accept that maybe Perl 6 "exists," as chromatic claims -- but so do countless other experimental languages, in labs and open source projects. At one time Ruby was just such a curiosity. The difference is that a couple of years went by and all of a sudden everyone is abuzz about Ruby. Major Web applications, such as Twitter, are now running (or stumbling) on Ruby. Where's Perl 6?
I fixed at least six bugs in Parrot today (which probably brings me to ten for the week, if not more). You can see my checkins at cia.vc or Ohloh and review the tickets I've closed at rt.perl.org. If Parrot and Perl 6 don't exist, what exactly what I was working on?
But come now -- there's existing and then there's existing. It only took two years to go from version 2.4 of the Linux kernel to version 2.6. That was a pretty significant upgrade, with an awful lot of people relying on that particular piece of software to work, work well, and work consistently. And yet they pulled it off. Further, it took only nine years to go from version 1.0 of the Linux kernel to version 2.6.
Meanwhile, Perl 6 has been in development for eight years, and there's still no production release in sight. And don't tell me there have been lots of upgrades to Perl 5 in the meantime; that might be true, but it doesn't count when everyone's supposed to be planning for an earth-shattering, backward-compatibility-breaking release that promises to be so important that Larry Wall started throwing around the word "apocalypse."
To me, it doesn't matter if there's a binary called Perl 6 that I can execute or not. How can the Perl 6 language not be vaporware if the Perl hacker community can't use it for real-world jobs?
Let's be generous and say that between Patrick [Michaud]'s funding (which has expired) and Jonathan Worthington's funding and Daniel Ruoso's funding ($3000 for SMOP, an alternate implementation), Perl 6 has 0.5 paid full-time developers. Off of the top of my head, I can name a couple of *dozen* full-time paid [Linux] kernel developers. That's at least an order of magnitude more potential work in that period. Even Fred Brooks might agree that, sometimes, more people can get more work done.
In my mind the question of "vaporware" hinges on "does it actually exist?" If you want to raise the question, "sure, it may exist, but will it ever be stable and widely deployed and ready for production use," that's a very different question -- but I don't believe that's a question of vaporware.
I published working Perl 6 code three years ago. That means people could have downloaded, read, run, and modified working Perl 6 code every day for over a thousand days. If you're going to introduce the question of utility for a majority of a language's hackers, Python 3000 will be vaporware for a couple of years. Heck, PHP 5 is barely not vaporware, if you look at installed base among $4.95- a-month virtual hosting plans.
So what's the bottom line for Perl 6, then? Is it here now or isn't it?
While the software isn't finished ... it does exist and has existed for years. We do all of our development in public; we even have a graph of passing specification tests updated daily.
Through Pugs and Rakudo (and other projects -- Perl 6 is a specification which we expect to have multiple compatible implementations), people have been able to and have in fact run real Perl 6 code for over three years. In fact, the Parrot project has released a new stable version of Parrot on the third Tuesday of every month for the past two years. This includes a new stable version of Rakudo, the Perl 6 implementation running on Parrot.
Indeed, their most recent release was this Tuesday. And there you have it, folks!