Where is Perl 6? The question that won't die


Every so often I get asked that dreaded question "When is Perl 6 coming out?" Sometimes it's a local Perl Mongers meeting, and sometimes it's an email like below, from a reporter at cnet.com, in response to my Perl 5.10 announcement:

What's up with Perl 6/Parrot? I've never covered the issue terribly closely, but it seemed that there was one school of thought that argued for some universal virtual machine and another that wanted to keep Perl more with its duct-tape-of-the-Internet roots. Please feel free to set me straight in this area--I have only passing familiarity.

Is Perl going to stay on a dual 5.x and 6.x track? When is 6 due? How about 5.12?

Stephen Shankland
reporter, CNET News.com
blog: http://www.news.com/underexposed

This is not at all uncommon as a perception. People just don't know about Perl 6, don't know about Parrot, and certainly have never heard of Pugs. Here's what I replied:

Perl 6 is a rewrite of the Perl language. It will feel Perly, and yet become more modern as it pulls in influences from languages like Ruby and Haskell.

Technically, Perl 6 is just a language specification, and there are at least two implementations underway. One of the Perl 6 implementations is named Pugs, and is written in Haskell, on a project led by Audrey Tang. The other Perl 6 implementation is being written to run on top of Parrot. Parrot is a virtual machine for running modern dynamic languages like Perl, PHP and Ruby, among others. The intent is to have Parrot bytecode generated by one system, say, Perl 6, easily interact with any other language's Parrot bytecode.

Yes, Perl 5 and Perl 6 will stay in dual development. Perl 5 has such a huge installed base, it won't be going away any time soon after Perl 6 exists.

There is no due date on Perl 6, and never has been. At this point it's still sort of a big research project. Fortunately, some of the development in Perl 6 has found its way into Perl 5.10, such as the "say" keyword and some regular expression improvements.

I don't think the Perl 5 Porters have even started thinking about a timeline or feature set for 5.12 yet, since 5.10 has only been out for eight days now. From my monitoring of the perl5-porters list, we're just trying to make sure that problems people are reporting with 5.10 are not actually problems with 5.10 itself.

Let me know if you have any other questions.

I've published this open response for two reasons. First, I wanted the core Perl community to get an idea of what outside perception of us is like. People know bits and pieces of what we here in the Perl core echo chamber know.

Second, I wanted to raise the flag again of how outsiders want to know more about Perl 6, and that the first, and in many cases only, thing that they want to know is "Where is it and when will it be out." I've never felt that the Perl 6 development team has ever been interested in addressing the concerns of those who ask.

Note that I'm not talking about giving a timeline, or a schedule, because of course Perl 6 is being created by volunteers, and there's no point in giving a schedule if the project can't realistically hit it. What I did say was "address the concerns." Maybe the project can't give the people want they want, but is there something they can give to help satisfy the hunger, and keep people interested?

For that matter, I've never felt that anyone on the Perl 6 development team even saw it as a reasonable question to ask. I've always seen the question answered with angry, defensive replies. Such a problem to have! People clamoring to use your project!

It's amazing to me that we have any goodwill left, any interest, that Perl 6 hasn't been written off as permanent vaporware. To the Perl 6 community, I ask, what can we as the rest of the community do to help keep people interested in Perl 6? Do you see that as a reasonable goal? And to everyone else, who is willing to help in this task, to help keep the fires of anticipation burning in the public?


The idea that Perl 6 is a research project rather than a design process makes a lot of sense, and may be the first sensible thing I've read about it. I really want it to hurry up though, because I hear Duke Nukem Forever is written in Perl 6 and it's the game Warren Ellis was playing when he finished the last issue of Planetary.

I'd find it really useful if someone from the PR side of the house could coordinate getting the weekly summaries of IRC, the mailing lists and commits back on track. The summaries are one of the best vehicles for getting the word out about what's actually going on in Perl 6 development.

Is this something that you, as the TPF's PR czar could make happen?


For that matter, I've never felt that anyone on the Perl 6 development team even saw it as a reasonable question to ask.

It shouldn't be difficult to understand.

I'm coming up on almost five years of contributing to Perl 6. I've received free admission to a couple of conferences because I'm talking about Perl 6 or Parrot related topics, but I spoke at conferences for free before that.

I haven't made a single penny off of Perl 6. Now I don't do this for money or and I don't care about money. I wouldn't do this if I cared about money. I do this in my spare time, what spare time I have, because I find it interesting and useful and hope that someday soon I will be able to use Perl 6 productively. It's a great language, and I really like what I've used of it so far.

After five years of being cussed at every time I say "It'll be ready when it's ready" and "Yes, I know it's not ready yet," I'm more than a little bit tired of people who are fully capable of making even one little contribution -- not even code, perhaps a test report or answering a question on a mailing list or even answering the question "When will it be done?" themselves -- complaining because people who've worked on this project for free for years aren't working to their particular schedule.

I also believe that I've answered everyone who's asked an honest question about its status honestly. The best answer we have is that it's in progress, and it'll be done when the amount of work put into the project by the number of people available to put work into the project meets or exceeds the amount of work remaining.

That's simple project management, and I can recommend a couple of books about software project management, having written a couple and contributed to a couple of others.

You deal with multiple years of passive-aggressive whiners on the Internet complaining that you're not volunteering hard enough, and if you don't get your act together, they're not going to use the software you write and give freely to the world, and see how much time you want to devote to answering the same question over and over again when you could be actually, you know, doing something that moves the project forward.

Aside from attending weekly design meetings, taking notes on weekly design meetings, publishing those notes, running #parrotsketch half of the time, hacking on Parrot, writing articles on Parrot and Perl 6, being the release manager for two Parrot releases every year, updating Synopses occasionally and the Parrot website more frequently, posting journal entries about our progress, and participating in two or three Perl 6 mailing lists, shall I also do something nebulous to "address those concerns"? What more is there? Where am I going to find the time?

Stop kicking the butts of the people actually doing work for the whole world to use for free in perpetuity. You don't have to show any gratitude at all. You don't have to like what we're doing. You certainly don't have to use it. You don't even have to accept the answer that it'll be done when it's done. Plenty of software projects never accept that. You can tell; they often fail.

Still, a little "Thank You" goes a long way.

Jesse, chromatic: The last thing I want to sound like is ungrateful or that I'm kicking butts. I just need a story to be able to tell.

The uptake on Perl 5.10 announcements has been great. There's a story there. "Here are cool things in Perl 5.10." I don't have any similar story to tell with Perl 6.

All of my saying "We're working on it" doesn't help anyone on the outside. We need something else to say other than "We're working on it" and "It'll be done when it's done." It's simply not a useful answer. As a PR guy, I can't work with that. I have no spin for that. I understand that yes, there's a lot of work going on behind the scenes. Much of it is my own over on Parrot. However, that's not interesting or useful to anyone on the outside. It's kind of like visiting the construction site and seeing all the hammering and sawing and busy activity, but there's been seven years of that.

Consider my situation. Someone from cnet.com comes to me, writing an article about Perl 5.10, wanting to know more about Perl 6. All I have to say to him is "we're working on it." Design meeting notes aren't useful to anyone on the outside.

Is there any way we can say "Here's what we've done and here's what's left?" At least that's a story I can tell. At least that kind of leaves us with "See, you can see the shape of the house and the roof is on, and we're working on the wiring and the plumbing." Yes, I know that there's always going to be more things we haven't thought of, but after seven years, we've got to have some things nailed down and complete and off our minds, right?

I'm sorry if I sound like I'm kicking butts or sounding ungrateful. I'm well aware of the large amount of time being put into both P6 and Parrot. I just know that "It'll be done when it's done" translates in the minds of the public to "It'll never be done," because we show them no reason to think otherwise.

"Note that I'm not talking about giving a timeline, or a schedule, because of course Perl 6 is being created by volunteers, and there's no point in giving a schedule if the project can't realistically hit it."

If a "schedule" is too much to ask, how about a "prediction"? One based on progress so far, comparison to similar projects, generic milestones reached, etc.--in the same way that fairly accurate predictions can be made about unknowable things like election results, the weather, expected travel times.

Milestones could be: is the Perl 6 specification complete? Does the Phalanx 100 run? Is it used in production? Is it widely used in production?

A recent Perl 6 status report reveals, among other things, that the "copy" opcode has just been implemented and that some people have some "initial ideas about handling eval()". Perhaps these advances are more significant than they sound but based on not much at all, my prediction is 5+ years; perhaps someone involved in Perl 6 development can offer a prediction somewhat better-informed.

chromatic, saying "it's done when it's done" is not the same as saying "we only have so much time and that's why it will not be done in the next X months". Volunteering doesn't entirely preclude giving an estimate, nor does it force you to be insulting to the point where people walk away for reasons unrelated to the quality of your work. That's just unnecessary.

I don't get it. You want details, but you don't want technical details. You want someone to tell you a story, but the same kind of story that's appropriate for Perl 5.10 isn't appropriate for Perl 6. (Perl 5.10 has smart match and Perl 6 has junctions, but you can't talk about Perl 6 having junctions because it's confusing and technical.)

If you want a story, tell the story about how Microsoft spent more money paying its Vista developers to send e-mail and take coffee breaks during one week than has gone into Perl 6 in at least the past three years, if not its entire history. Tell the story about how at least half of the progress on Parrot has come from people who quit their jobs to work on Perl 6 or Parrot. (I can think of two people responsible for much of the progress in the past three months who are deliberately working half time or less at paying jobs.)

Tell the story about how Sun or Microsoft or Apple could spend more on salary for one programmer for one year than will go into Parrot or Perl 6 in 2007, and how millions of programmers depend on the work of just a few unpaid people in their nights and weekends and sometimes days. That's the story where there are no magic code fairies and the only work that gets done gets done because someone plants his or her seat in a chair and actually does the work. That's the story where the Mozilla Foundation kicked in $10,000 -- and how much work would you do for three months for $10,000? -- because they think that having free and open languages is important for the health of the Internet and the world of software in general, and just $10,000 has removed one major roadblock and spurred on a tremendous amount of new development.

You can tell the same story about Perl 5 too.

I read PlanetSix http://planetsix.perl.org/ to find out whats going on with Parrot and Perl 6. Its pretty raw and detailed but it lets me feel connected with the pulse of the project.

From what I can tell perl 6 on parrot is something you can actually hack around on now as far as writing code and having it compile and run but it's very early and incomplete.

"And to everyone else, who is willing to help in this task, to help keep the fires of anticipation burning in the public?"

My advice would be to not keep the fires of anticipation burning in the public. For the good of the language, Perl 6 needs to be deemphasized in public, and, in addition, renamed.

How Keeping Perl 6 Front-of-Mind Hurts

1) It emphasizes the "inadequacies" of Perl 5 (http://www.perl.com/pub/a/2000/07/perl6.html).

2) It makes the development community look unorganized, at best. People comparing at the development pace of Python, Ruby and PHP to Perl 6 are likely to come to harsher conclusions about the community's focus, viability and competence, based on Perl 6's seven-year, and counting, gestation period.

3) It creates uncertainty: what happens to Perl 5 when Perl 6 finally drops? How much new stuff will I have to learn? How will my existing code work, or not, if I upgrade? Why should I invest time in Perl 5 if Perl 6 is just around the corner, and will be far superior?

4) It creates frustration inside the community. Perl 6 has been "coming soon" for 7.5 years now. It's hard to remain excited about something that long with no payoff.

5) The story is confusing: Pugs? Haskell? Parrot? Two development tracks? I thought this was about Perl? Yes, I have an idea of what those things are, but most folks outside the community (and a fair few inside, I'd wager) don't know, don't care, and shouldn't have to.

Basically, the more we push Perl 6, the more we Osborne ourselves.

How Keeping Perl 6 Front of Mind Helps

I got nothing. Honestly, I can't think of a single positive for trying to keep public anticipation burning.

How Deemphasizing Perl 6/Changing its Name Helps

1) Allows us to focus on the strengths and successes of Perl 5.

2) Allows us to tell the development and improvement success story of Perl 5, which is as good as that of any other scripting language.

3) Removes uncertainty that can be used against Perl when companies and developers make decisions about which language to use.

4) Finally, by changing Perl 6's name, to something like PerlNG or PerlFG, we can get away from the "It's just a 1 point upgrade," problem and have a basis for which to talk about it as a "research project." That allows us to both avoid talking about delivery dates, and allows to talk about how cool stuff from PerlNG is finding its way back into Perl 5.

5) Gets us away from all the negatives listed above.

How Deemphasizing Perl 6/Changing its Name Hurts

1) It might be harder to get folks to work on PerlNG if it's not "just around the corner." I happen to think that can be overcome with inside-the-community marketing.

For the record, I greatly appreciate all the work that folks have put into Perl 5 and Perl 6. Nothing here should be taken as a criticism of how the actual development gets done, nor of the talent or the commitment of the developers.

I don't question the desirability of Perl 6 either. I can see how, when it's finally finished, it will be an improvement over any language available.

However, from a Communications standpoint, it's obvious that there are significant problems in communicating about perl to the world at large. Perl 6 has been a Public Relations disaster, one that has made it harder to attract developers, other contributors, users and companies.

Again, from a Communications/PR standpoint, our goal should be to stop shooting ourselves. And that means taking the public focus off Perl 6 as much as possible.

Stop pussyfooting around. Perl 6 has been a "public relations disaster" for a few reasons.

  • It's a bigger project than anyone realized. Perl 5 (and Unix and C and shell and regular expressions and Lisp and...) is a bigger maze of inconsistencies and special cases than anyone realized. It takes a while to detangle that.
  • There is no money. What a paid developer could do in a normal forty-hour week takes a four-hour-a-week volunteer at least ten weeks to do. Complain about the schedule and you're complaining that we volunteers aren't busting our humps working another forty hours a week for free. (There's a word for that.)
  • It's an ambitious project, and we've had to invent a few things to make it work. Seriously, when was the last time anyone invented a lexically scoped mutable hygenic grammar that's not just a bog-easy Smalltalk or Lisp (without quoting rules) form?
  • Some things failed. Some people we hoped would stick around didn't. Some projects we hoped would work didn't. Some volunteers had to take jobs, others graduated, most have to pay their mortgages somehow, and occasionally people get sick and spend time in the hospital or on very special diets.
  • The primary public, non-developer output of the project for the first few years was press releases. You have to put out a heck of a lot of working code for several years to get over the perception that everything you do just exists to back up the latest "OMG PONIE SAVEZ TEH WORLDS! LOLLERS!!!" press release, which will probably turn out to be wrong.
  • Not everybody wants Perl 6. That's fine. Not everyone has to have it. I don't have a space ray that can erase Perl 5 the moment Perl 6.000 is out and ready, and I wouldn't use it if I did. Perl 5 maybe.

Also, there's only one person who gets to change the name (or call it a research project), and his name is L. Wall. Wait, that's too obvious. Let's call him Larry W. As such, I can't see how lying about what Perl 6 is (a research project? Whatever.) or when it'll come out (You can't predict this. Did you learn nothing from The Years of the Press Release? Do you know anything about Software Project Management?) is going to be useful.

If anyone wants to communicate anything, I recommend this:

Perl 6 is under active development. We aren't sure when we will recommend it for production release, but there are multiple working Perl 6 compilers in various stages of completion. For example, Perl 6 on Parrot is part of the monthly stable releases. To download and try them, see ....

It's accurate, it's clear, it doesn't promise anything that's not present, and it avoids the knee-jerking "Gosh golly shucks hyuk hyuk don't take us serious naw" of the "Oh don't worry about Perl 6, it's just a research project by architecture astronauts that no one in the Perl world takes seriously anymore either."

I want to know more about the status and progress of Perl 6, too. Not because I think it should already be done, or because I think that someone isn't doing enough, but because I'm excited and interested. I want to play with the new toy. I know it's easy to assume that questions about the schedule or status are actually thinly veiled complaints or judgements about the rate of progress, but they're not always.

I think you guys are probably writing a really useful and cool thing. I want to play with it. I want to hear occasional news about completed milestones or new ideas.

Please don't mistake interest for criticism. I'd hate to see something like that frustrate anyone or slow down the progress.

Andy, please consider putting links to the Perl 5, Perl 6, and Parrot Wikis at the top of list under the "Other Sites" column on Perl Buzz. This would certainly help address some of the issues raised above. This would also (hopefully) help many more people discover and use these wonderful (but under-utilized) resources.

Paul and others, I think the important thing to prominently emphasize in all significantly publicly-oriented Perl 6 discussions is that Perl 6 will still support Perl 5 (including CPAN Perl 5 modules).

chromatic, wrt Perl 6 and Parrot, thanks+++++

Has any one ever thought of posting a Gantt Chart (without dates) of the major tasks required to release the first version of Perl 6 on Parrot?

It might help those that could help understand what might be needed far enough in the future that they can start interjecting themselves into the system... At one time I thought about working on something to help Perl6, but after looking around I felt too overwhelmed to get started even: it's doesn't seem like something you can help without jumping in with a 60 hour per week minimum dedication! A list of smaller projects (i.e. with 10 to 100 hours of estimated work) might help ease people into the project.

The "Big Picture" Gantt Chart might also help others understand at a glance what's been done and what needs to be done. Give a visual pulse on the project.

The Gantt Chart can be updated at fixed intervals (e.g. quarterly) with new tasks, completed tasks and new dependencies.

Is there already such a thing for Perl6 and I've missed it? (I really can't imagine a project of this magnitude not have some sort of project management.)

Has any one ever thought of posting a Gantt Chart (without dates) of the major tasks required to release the first version of Perl 6 on Parrot?

That would require a list of the major tasks required, and that list just does not exist.

I'm doing what I can to work with Will Coleda and Patrick Michaud to pull those together. I've started scratch pages for Parrot development dashboard and Perl 6 development dashboard.

I'm hoping that pulling together some sort of major tasks, both completed and yet-to-be-done, will give us some sort of shape of the projects to look at.

Andy Lester, how did Perl 6 get along for 7 years without a list of the major tasks required? Statements like yours really do make Perl 6 development look dreadfully disorganised. But I am glad that you've already realized this and are working towards drawing up a list and Gantt chart.

how did Perl 6 get along for 7 years without a list of the major tasks required?

It had several, actually. No one seemed to care.

Hi chromes, you're right -- ultimately, this is about resources. Let's get some.

For those not otherwise contributing (like me), I propose a voluntary tax of one buck [euro, rupee, peso, whatever] for every billable line of Perl.

I personally hereby pledge to contribute one buck per line of billable Perl code to Perl 6 via www.perlfoundation.org.

And I hereby challenge every programmer (billing for Perl work, not otherwise contributing) to do the same, in whatever is your preferred unit of currency.

chromey is right. Let's pay to play. Whoever bills for the most lines pays the most tax, and gets a gold star on the Perl Foundation's contributors page.

Come on, non-contributing professional Perl programmers of the world! Let's pay to play.

I'm sure TPF wouldn't mind donations, but I'm uncomfortable with the idea of even a voluntary tax on Perl users. Personally, I prefer contributions of (some sort of) work. The code's free, and if it's useful to you, great!

The general free software world ought to be more clear that people who want something more (bug fixes, features, more rapid delivery of new versions) have an obligation to contribute something themselves, even if it's as small as a "Thank you". That's all.

Gotcha, and thank you.

Earlier today, I wrote to the Perl Foundation with the idea of a micro-fundraising campaign aimed at Perl programmers who are not otherwise contributing.

I'm thinking specifically of the everyday Perl programmers who make a decent living thanks in whole or in part to Perl 5, who would be psyched to underwrite a tiny part of Perl 6.

(I put myself in that category, of course.) People who contribute financially get to feel a little thrill of participation. Anyway, I write this because the issue of resources seems central.

I support this idea of renaming 'Perl 6' to 'PerlNG'. If it is a complete rethinking of the language then it should get it's own name. It will also take the pressure off of it's development.

Perl 6 makes it really tough to pitch Perl to engineers and managers. The question is always about what the upgrade path from Perl 5 to 6 will look like because that's the expectation when there are sequential version numbers.

Moving 'Perl 6' to 'PerlNG' also opens up the potential for a newer version of Perl 5 to be marked as Perl 6 in a reasonable time frame. That would demonstrate positive language evolution.

Leave a comment

Job hunting for programmers

Land the Tech Job You Love, Andy Lester's guide to job hunting for programmers and other technical professionals, is available in PDF, ePub and .mobi formats, all DRM-free, as well as good old-fashioned paper.