How to write about Perl 6

YAPC::EU is about the Renaissance of Perl (although Eddie Izzard wonders why the Italians gave the real one a French name), and like the original, that's the time for an explosion of information and exchange of that information.

I have a few suggestions for people who want to promote Perl 6 by writing or speaking about it. I've had these complaints about Perl 6 articles people wanted to put into The Perl Review, but from the summer conferences this year I've been hearing the same complaints from other people. I've also had these same complaints about my own Perl 6 talks (which is why I have stopped giving them for awhile). This isn't just my own advice, but wisdom I've collected from many people over my years writing about Perl. It's also the stuff that I want to read about Perl 6.

First, show something that Perl 5 or other languages can't do. It's easy to show how to make arrays or show that the sigils don't change, but the simple syntax stuff is really, really uncompelling, even to the point of being discouraging. Surely all that development time and effort and thought was for more than just fiddly typing bits, so show stuff that doesn't exist. Junctions, hyper-operators, and infinite lazy lists are interesting because they are new not only to Perl, but to widely-used computer languages. Quoting syntax isn't sexy and it's just something you look up. People aren't going to rush to Perl 6 for its quoting, even if the fancier quote-words operator makes things less painful. Include something radical and salivation inducing. I recall the first thing Larry Wall mentioned in the meeting where Perl 6 was born, way back in 2000. He said he wanted was distributed computing. Eventually we'll have map-reduce as a couple of keystrokes because we can let map, grep, gather, reduce, whatever work out on its own how to farm out work. We might never need Gearman again!

Second, show something more than simple demonstration programs. Most of the writing I see about Perl 6 doesn't even get past the second hour of my Learning Perl class, or even the BASIC class I had in junior high. Putting stuff in variables and printing it out again is less than uncompelling. That's the easy stuff to write about because you don't have to explain much, but for someone considering switching to Perl 6 from, say, Ruby or Python, isn't going to be impressed that Perl 6 looks like the language they already use. You don't have to write complete applications, but something that people could reuse would be nice. People writing about Moose, such as Yuval, have been very good about this. I've really liked Jonathan Worthington's Perl 6 essays, because, even though he's usually creating what look like toy programs, they are really just exemplars for common tasks.

Third, have three arcs in your stories about Perl 6. There's the main one that you want to show, which is probably something about syntax or technique, but develop at least two minor points to draw more interest. For instance, if you want to talk about an algorithm in Perl 6, show it in other languages or discuss its history. Mark Jason Dominus is a master at this, and it's one of the reasons he can attract interesting audiences: he's talking about something more than just Perl usually. For your third arc, thrown in something of a human aspect. Why is the feature interesting to you and your work? What did you try previously? What spectacular failures did other attempts have? People like train wrecks, which provide extra entertainment even if they already know about your main topic. A corollary to this point is to cut out anything that doesn't relate to the three stories you're telling. Ignore detractors, don't try to give every negative remark you've seen previously even more traction by discussing (much less linking!) it. Get your own message out there, not someone else's.

Lastly, be very clear when you say "useable". You know what you mean, but a lot people on the sidelines think "useable" means "production ready" instead of your intended "it mostly works for you to get started". I've been asked by customers several times this summer if it's time to switch to Perl 6 because it's "useable", and many publishers are itching to get their Perl 6 book now that it's "useable". I have to disappoint both of these groups by explaining the current state. We've gone through this cycle a couple times since 2005 when Pugs was the hot implementation. No matter what you think people should think, there is always the literal message, your intended message, and the received message. Each is influenced by context, expectations, and knowledge on both sides. The term "useable" is a poor description because people's expectations of it are so varied.

Those are just my two cents, having written about Perl quite a bit and having received a lot of reader, listener, and editor feedback. It sounds like a lot of work. Paying more attention to the impact and implied messages in your writing is a bit like using strict for the first time. It only gradually gets less annoying as you gradually get better.


One of changes in Perl 6 is moving from regexps to grammars (backported to Perl 5 as Regexp::Grammars), so a good example would be how easy is to write a parser in Perl 6 (would it be possible to read (A)BNF and generate a parser, for example, c.f. Marpa?).


Your comments are all good ones (and are exactly what I've tried to do in my talks about Perl 6 -- focus on the new cool features, not just the new syntactic improvements).

Do you have any suggestion for a word or phrase we could use besides "usable"? It wasn't chosen arbitrarily or in haste; it was chosen after consultation with many others about what might be the "least bad" (as in "positive without being too misleading") way of describing Rakudo at this stage of its development. It's also why I started using the phrase in conjunction with the Rakudo Star announcement last year -- so that hopefully people could suggest better phrases (and I'm still very open to suggestions here!).



"Usable" begs the questions "to whom" and "for what"; the latter being the bigger question.

Is "learnable" the right word to use? I speak as a novice to Perl 6. The people familiar with Perl 6 seem to me to be saying that now is a good time for novices like me to start learning Perl 6. Is my impression correct?

In other words, if I start learning Perl 6 now, how much will I learn that later becomes wrong, that'll I'll have to re-learn?

The phrase I'd use for Rakudo Star is "partial prototype." It doesn't include all the features, and the implementation itself will likely change radically before the production-ready release, but what's there does work. And so, "partial prototype" or maybe "developer preview" or something similar.

“Usable” begs the questions “to whom” and “for what”; the latter being the bigger question.

In many senses, those are exactly the sorts of questions I'd like to have begged when someone says "Is Rakudo ready yet?" :-)

I doubt that it's possible for us to come up with an short + accurate description that is immediately and clearly understood by everyone who reads it. Some people see only the words "Perl 6" and "release" and expect that the rest of the announcement conforms to their conception of what "release" means, regardless of what it actually says. (For example, the article "Perl creator hints at imminent Perl 6 release" morphed on Twitter to become "Perl creator hints at final Perl 6 release".)

Based on the responses and conversations I've seen in most of the forums I frequent (which I admit could be an echo-chamber), I feel like we got the phrasing about right.

"Learnable release" would imply to me that Rakudo is primarily intended as a teaching tool, which definitely isn't our intent. A similar argument holds for "partial prototype": While I agree that Rakudo is a partial implementation of Perl 6 (and I think it will be at least another 2 years before any "complete" implementations of the Perl 6spec exist), we don't consider or treat it as a prototype.

"Developer preview" is definitely better in these respects; we might consider something like it for the future.


Leave a comment

About brian d foy

user-pic I'm the author of Mastering Perl, and the co-author of Learning Perl (6th Edition), Intermediate Perl, Programming Perl (4th Edition) and Effective Perl Programming (2nd Edition).