Is Perl 6 pointless, hopeless or just not done?

[Update: as you read this, when I say "Perl 6", it will help if you take that as "production-ready Perl 6".]

I've been in the middle of several debates discussions about the evolution of Perl 5 in the last few weeks. I've come to realize that inherent in various attitudes are three points of view about Perl 6 and each of these parallel different views for the future of Perl 5.

[These are not mutually exclusive, either.]

POV #1: Perl 6 is pointless. Even when it gets done, no one is going to port their legacy apps to Perl 6. So Perl 5 needs long-term maintenance anyway. Maybe Perl 6 will have some killer features, but it will have to compete with other hot languages to get enough adoption for it to be significant for anyone's employment prospects. Companies will continue to favor more popular languages with easier hiring.

POV #2: Perl 6 is hopeless. It might have great ideas, but -- given its track record -- has no chance of getting to production readiness in any useful time-frame. Possibly, less ambitious evolutions of Perl 5 that fix some of Perl 5's warts without trying to be a hundred-year language could succeed instead.

POV #3: Perl 6 is just not done. We already have an evolution of Perl 5 and it's called Perl 6. It's taken a long and twisty path, but recent work to port it to well-established VMs is giving it a real path forward. Maybe other alternatives to Perl 5 are possible, but Perl 6 has a head start. It's just a matter of time.

If someone thinks Perl 6 is pointless, then it would be logically consistent to think that evolutions of Perl 5 are pointless, too. Any discussion of Perl 5 evolution just distracts from maintaining (perhaps tweaking) Perl 5 or trying to boost its market share somehow.

If someone thinks Perl 6 is not pointless, but is hopeless, then it's logically consistent to want a significant -- but less ambitious -- evolution to Perl 5 instead that might have a higher chance of success. I think this explains the (premature?) excitement about the potential of Moe, despite the fact that it's explicitly just an experiment.

If someone thinks Perl 6 is neither pointless nor hopeless, but just not done, then all the debate about evolving Perl 5 might seem unnecessary, and they might be frustrated that the efforts towards Perl 6 haven't gotten more credit.

I think if I bucket the opinions of people I speak to or whose blogs I read into those categories, it encompasses most of the debate. And -- because those positions are pretty much pure opinion -- it's hard to shake anyone out of them and the debates waste a lot of energy and accomplish little.

We won't know if Perl 6 is pointless until we have it (or a comparable successor) -- though we might draw hypotheses from other successor languages like Python 3 or from brand new languages.

We won't know if Perl 6 is hopeless or just not done until the Perl 6 implementors ship a real production release. The more evidence they can show that real progress is being made, the more they can shape opinions, but they've spent more than a decade setting low expectations and that's a hard hole to climb out from.

Personally, I don't think Perl 6 (or a Perl 5 successor) is pointless. I don't think Perl 6 is entirely hopeless, but at this point I'm extremely skeptical, even while I wish the Perl 6 team the best of luck.

28 Comments

I'm somewhere close to POV #2, but I'd word it slightly differently, and compare it to the transition from Perl 4 to Perl 5.

During the transition from Perl 4 to Perl 5, it felt like there was a very coherent drive to get Perl 5 production ready, and to help people make the move. It felt like Perl 4's days were numbered, but it was in stable production mode for a good while. This is a fairly natural mental model when Foobar N transitions to Foobar N+1.

This isn't true for Perl 6. There is intentionally not a drive to "ship": it doesn't want to be the successor, it wants to be a sister language. But there's no final spec (yet), no checklist to countdown, and no target release date. That's fine, it's a research project after all; you might call it a blue sky research project. As a result, I have no way of knowing whether it will ship soon, in another 13 years, or never. That's ok for a research project, but as a result, not something I can rely on.

TL;DR If you don't have time to hack on (or test, benchmark, document etc.) Perl 6 to help toward its productization, please at least consider commenting on or amending the Most Wanted repo. This will help direct the drive toward productization. If you want to discuss what productization means and/or you have time to help, please join the IRC channel #perl6 on freenode and pose questions about productization, especially to TimToady.

There is intentionally not a drive to "ship""

I'd say that your comment is a fair summary of what happened for most of Perl 6's life, at least as far as Larry Wall is concerned. For example in 2010 he said "I've specifically been shying away from anything resembling productizing".

I'd say your comment fails to capture what is going on now. In 2012 Larry talked of "the things we need to do to productize Perl 6 over the next year or two". I've seen many sixer discussions, actions and decisions that are consistent with his comment and I don't recall any commits that were in serious conflict. (I've been reading the #perl6 log daily since mid 2011.)

it doesn't want to be the successor

I don't think that expresses the #perl6 zeitgeist.

Imo it would be good for the whole Perl ecology if Perl 6 became an increasingly viable alternative and complement to Perl 5. I think an apt analogy is that of a savvy 13 year old kid with ambitions to contribute to and co-manage the large business currently being run solely by the kid's 25 year old brother.

While the language/compiler features checklist is somewhat coarse and currently limited to language and compiler features, it is a substantial contribution toward a productization checklist. Please consider contributing to the ongoing discussion about such matters on #perl6.

no target release date

While I'm not aware of anyone saying anything more specific than Larry's comments above, I stand by my 2009 estimate of Christmas 2014.

Carl Mäsak, who got involved with Perl 6 in 2008, seems to think it'll take a bit longer, but he recently wrote:

Thanks for a long, well-thought-out reply. Good to see a "sixer" chip into one of these threads, as there hasn't been much comment from that direction in recent discussions. By "final spec", I did indeed mean "a final spec for 6.0.0".
Your comments have changed my mind about "where Perl 6 is at".

Good to see a "sixer" chip into one of these threads, as there hasn't been much comment from that direction in recent discussions.

I trust you understand why (waves to chromati^WFiver :). ;)

By "final spec", I did indeed mean "a final spec for 6.0.0".

Then my "there will be no final spec" is unhelpful. Damian Conway has said he thinks it's already good enough to warrant the 6.0.0 label. I'm pretty sure it'll be Larry Wall who makes the final call. I'd love to see what happens if you ask him on #perl6 how he makes that decision and if he has a sense of what year it will be. :)

Your comments have changed my mind about "where Perl 6 is at".

Oh! If I put you off, well, at least it's an informed decision. If it shifted your understanding of the next 5 years of Perl, I'm comfortable that's fair. If I implied you'd be able to easily justify using Perl 6 for $dayjob in the next, say, 3 years, I am probably guilty of misleading you (unless you are self-employed, and then, well, maybe). If you're thinking of taking a closer look, please be ready for it to be slower than molasses, missing pieces, and still another year or three to 6.0.0.

I definitely don't think it's pointless. There's a lot of good ideas in Perl 6. Maybe they won't all work in production, but hopefully there's room for change Perl 6.1.

I wouldn't say it's hopeless. I can't predict the future. I see some momentum in the JVM port. OTOH, that doesn't mean it'll ever get finished enough to use in production. The track record on that so far isn't great. I *hope* that it's just not done, but how could I tell?

So I'd add POV #4, the future Perl 6 is unknown. Given that, it makes sense to continue to invest in Perl 5 and to consider evolving it. I'll be perfectly happy to be proven wrong when Perl 6 releases a production ready version some Christmas, but for now I'm stuck with Perl 5, and I'd like to see it improve.

I must be somewhere between #1 and #2, but I would phrase it as "I don't care if Perl 6 is hopeless or not", I use the language that I develop in, the one that does exist. It has wart and ones that we can and should remove. The only reason that Perl 6 ever crosses my mind is when I think how unfortunate that it is that for want of a number, I will have to type `use strict; use warnings; use v5.X; use utf8::all;` at the top of every file forever.

If Perl 6 ever should be ready, then and only then will I consider porting to it. Until then I wish I could see Perl (5) get a well deserved and much needed cleaning.

I don’t know if Moe is going to be a better Perl 5 or another sister language – and this I mean in the sense of whether it feels true to Perl 5 to me, not what the intent in the mind of its drivers is. But if it turns out to be a sister language that can coexist with Perl 5 as part of CPAN, it will make a fine addition.

But I am not entirely convinced of the premise in such efforts, that perl is too ghastly to overhaul. The question is rather one of manpower, to my mind. And I would like to see improvements happening there.

I do believe Perl 6 is just not done yet; whether it is just around the corner or another decade away, I cannot tell. But I do believe it will eventually arrive. What I don’t know is whether at that point it will matter; but progress in other languages seems to be happening in areas turning out to be complementary to Perl 6, not competitive. So I continue to exercise patience.

I do not believe any of these efforts pointless according to the definition of pointless you gave.

Sounds pretty close to #3, to me. Perl 6 (and by extension Perl 5 evolution) is not pointless. You think Perl 6 will happen eventually, but you're open to other alternatives. That's a very positive, inclusive view, FWIW.

I think of myself more as an equal-opportunity sceptic. :-) I see different problems with each of these directions also, and I have various disappointments, regrets etc with all of them (and with my approach to each). But they each also have their promises, so…

My impression of your #3 was of someone who considers Perl 6 the logical next step for Perl-the-family, btw (which is not what I think). Was that impression mistaken?

Namely I don’t see Perl 5 getting displaced; all the same I see Perl 6 quite possibly succeeding alongside it. (This is the one parallel to the oft-cited C/C++ case I find apt.) I may or may not end up with a firm preference in good time, once that all has happened; but that I will see in good time.

Maybe that is what unites all these buckets, that they assume as a given that one particular direction is the one “we” will end up following – whoever “we” is. Is that so? I don’t know, but I do not see any reason to commit myself in such a way. (I hold with MJD in that respect, who said he doesn’t see himself as a Perl programmer, but as simply a programmer, who happens to mostly be using Perl. I have not, lamentably, dabbled much outside of Perl in a long time (less the inevitable Javascript, of course, as well as purely auxiliary languages like SQL and XSLT), though Go has recently managed to capture some of my attention.)

While I'm agnostic about Perl 6 (for me, it's about as relevant as any other (new) language: I will probably never program in it, whether it finishes and becomes a success or not), I do disagree with the statement If someone thinks Perl 6 is pointless, then it would be logically consistent to think that evolutions of Perl 5 are pointless, too. . And the reason for that, is in another statement of yours: no one is going to port their legacy apps to Perl 6. But while Perl 5 evolves during each release, each new version is as much backwards compatable as possible. Meaning that legacy apps need no, or limited porting.

I don't think evolutions of Perl 5 are pointless, but you cannot deduce from that that I find Perl 6 not pointless.

I think the thing you didn't address is the "what if" sentiment that a lot of these posts have. A common statement seems to be that "if Perl 6 wasn't there, Perl 5 would be better by now". And a lot of the reasoning for renaming releases seem to imply that.

It is a shame tho, and in general I believe we're not actually in a bad position. The problems with the perl 5 interpreter were not solved not because Perl 6 was there, but rather because they are really hard to solve without breaking backwards compatibility which, unlike Ruby or Python, thankfully, is a thing that the Perl community always had as a matter of principle. And that is a good thing.

hard to solve without breaking backwards compatibility which, unlike Ruby or Python, thankfully, is a thing that the Perl community always had as a matter of principle.

I wish more people understood this. Perl, like C, is a stable platform. That makes it stiff and boring, but it also makes it useful. Arbitrary deprecation windows and chasing faddish capital-M-odernity erode what makes Perl great.

I do not believe in the adage the past is reflective of the future. That history repeats itself. If Perl says 'never say die' then Perl 6 could be up and running. I also don't believe in "I have fallen down and I can't get up. Whereas Python is robust, I like the competing style of Perl or any existing or new entrant. I will not give credit to Perl 6 until Perl 6 deserves it, but at the same time I am not a "guesser". I refuse to be one.

I think they need a good project manager, and should solicit some corporate funding (Apple, Facebook, Google are just gushing billions of dollars), and come up with an iron clad schedule to get this thing done! Otherwise, when it finally emerges, it will be irrelevant, like a perfect gasoline combustion engine 100 years from now, only to find that the world has long ago run out of oil and switched to electric cars powered by solar energy or H2 fusion. Not only are other languages evolving, but perhaps more importantly, API's are evolving. I'd rather get a ton of work done by making a few API calls in a non-extraordinary language, than to cleverly reinvent the wheel using some new super cool language. Case in point: the few lines of code it takes in Java to parse an XML file, a task that would be very laborious to do yourself in any language, good or bad. Yes, I realize CPAN has some nice code to parse XML as well, but that's just an analogy.

If Perl 6 doesn't get done pretty soon, it is going to become a symbol for failure just as sure as Palm and Blackberry.