Building a Better Duct Tape

What began with coffee mugs being hurled across a hotel meeting room has resulted in a complete redesign of the Perl programming language. Larry Wall shares his thoughts on the future of Perl.

Perl sillhouette

It started with a tantrum at last year’s Perl conference. Tempers flared; hotel property was thrown; and before the day had ended, a radical redesign of the Perl programming language was in the works. After filtering through hundreds of suggestions from Perl developers, the task of guiding Perl through its most radical design ever has fallen on the shoulders of the scripting language’s creator, Larry Wall. In April of this year, he began revealing his plans for Perl 6′s design in a series of public statements called the “Apocalypse” articles. Educated as a linguist, trained as a missionary, and now on the payroll of book publisher O’Reilly & Associates, Wall is one of the open source community’s most interesting thinkers. Linux Magazine’s Executive Editor Jeremy Zawodny and Editor at Large Robert McMillan caught up with him recently to discuss his plans for Perl 6 and his thoughts on the current state of Open Source.


Linux Magazine:Tell us the story of how you decided to do Perl 6.

Larry Wall: At last year’s Perl conference, we were trying to reinvent part of what Perl was about. Jon [Orwant -- editor of the Perl Journal] listened for awhile, and then, in what can only be characterized as a beautiful performance, started throwing hotel mugs across the room to draw attention to the fact that merely redesigning the governance of the community was not going to excite anyone, and that we really needed to look at redesigning everything.

LM: Was this at a public meeting?

LW: This was a pre-meeting, which was by invitation; we were going to have a public meeting in the afternoon where we’d have all the Perl 5 Porters. This was one of those pre-meetings where we decide what we might say. There were 10 or 12 of us, I think.

LM: Were the mugs actually breaking?

LW: Well, he had difficulty. The first few of them did not break, and that sort of ticked him off. He got better as it went along. I was sitting there thinking, “Hmmm? Should I get up there and throw mugs too?” I know Jon well enough to know that this was calculated before he came in. It basically galvanized us into saying, “Well, how much can we reinvent and still keep what we have that is valuable.” We went down a list and decided that there wasn’t anything that was completely sacred.


LM: When will our readers start to care about Perl 6?

LW: I think they will start to care when their boss asks them to take their little pet scripting project and turn it into something big. With Perl 5, we did a pretty good job of not only allowing programming in the small, but also allowing programming in the medium. However, there are things preventing it from being really good at programming in the large. If we can put another stop on that knob, so you can turn up your level of discipline one notch from what Perl 5 can do, then people have the option of less painfully writing something large.

I really was the only designer of Perl 5, and it shows. So Perl 6 is — even though I’m officially appointed the Chief Language Designer — it really is a cooperative effort.

We are not actually smart enough, any of us, to know what we’re going to want in five or ten years. So what we’re actually looking for is what you might call evolvability. Perl has always had some features to help it evolve over time, but we are particularly interested in the features of Perl 6 that will help us tweak the language further and to almost use it more as a language workbench. As for how soon people will care about it, I think people already care about it; they just maybe don’t know they care about it yet.

This April, an April Fool’s joke came out — an announcement of a common language runtime for Python and Perl called Parrot. The thing that made it a good April Fool’s joke is that it was actually pretty close to what we are thinking of doing. The only thing that was really false about it was that Guido and I had not in fact conferred over this thing.

LM: Or named it?

LW: The Perl guys have been trying to come up with a name for our new runtime and seem to be settling on the name Parrot for some reason.

We would like our runtime to be flexible enough that you could put multiple parsers on the front of it, whether it’s a variant of Perl that’s suitable for some new thing that’s coming down the road or whether it’s as far out as to resemble the syntax of some other language, like Python, Ruby, Java, or what have you.

There are ways in which we could improve the evolvability of Perl, such that people could use standard Perl as the basis for building other languages that resemble it. People are often a bit scared when I say that — particularly some of the older people in the crowd who have dealt with language variance. The issue a few years ago was that you could take a program from one machine and it wouldn’t run on another machine. But those were closed source, proprietary implementations, and the whole point of having the infrastructure be open source is that if you have a language variant, you also have the wherewithal to process that language variant. And it’s not implicit knowledge; it’s explicit. Right up at the top of your program, you’ll say, “Use this variant.” And it’s like pulling in a module; if it’s not there, it blows up immediately, and if it’s something that’s publicly available, you ought to be able to download it — maybe even automatically — and you are up and running. So it’s really one of those things that’s not worth being afraid of.

Another one of those things is this: if a mathematician wants to write a variant operator and use some fancy Unicode character to represent that operator, why shouldn’t he? A language that is the standard Perl except for one funny operator is easy to understand. You can use a slippery slope argument against it, but I’ve grown tired of slippery slope arguments.

LM: Why is that?

LW: Well you have to understand that I grew up a fundamentalist, and they use slippery slope arguments all the time. It’s like, “Okay, if we say that this particular bit of the Bible is maybe less historical than some people think, then where’s it going to stop?” It’s an argument that usually means you’re not interested in balancing things out. It usually means you’re interested in driving a point to one extreme or another, and you’re not willing to compromise on it. And to me — as a language designer — that is something that I should not be doing. Natural human languages do not try to force extreme points of view. They are vehicles for expression, and it is the job of the person writing the poem to make the poem come out good. It is not the goal of the language itself to be a language that is better or worse for particular subjects.

LM: There’s been a lot of commercial sponsorship of Perl in the last few years. O’Reilly pays your salary, and work on Perl is also being done by ActiveState and the Open Source Developer’s Network. Is there enough commercial support these days that it would be a problem if it went away?

LW: I think it would be problematic. I’ve always seen the relationship of the open source community as potentially symbiotic with the commercial community. I mean, just because I want to give something away doesn’t mean that everybody has to give everything away.

There’s a legal fiction that a corporation is just a person, so there is no particular reason why a corporation cannot understand the dynamics of open source as well as, or better than, an individual person. And I think that, particularly, ActiveState has demonstrated a very good understanding of how to work with the community, how to avoid misunderstandings, and how to avoid code forks.

We were starting to get a code fork, and we worked very hard with ActiveState to unfork it with the so-called OnePerl mailing list, and it worked. That was very valuable. What it helped do was draw the boundaries between what parts of Perl were Perl and what were the parts that Active State considered theirs. So I think that actually was useful in clearing up in peoples minds what their business model was in fact — how they were going to be making money with Perl without selling Perl into slavery. I’ve never been anything but impressed with Dick Hardt. Now, some people cannot bring themselves to trust anybody who works as closely with Microsoft as ActiveState does…

LM: That’s not a concern for you?

LW: It’s an abstract concern, but I’ve never seen any evidence on the part of ActiveState that they would want to betray their trust with the open source community. I think their clientele wants them to do the right thing, and I think they have very conscientiously kept the lines drawn between what ActiveState thinks and what Microsoft wants them to do. They’ve been good about that. I really have not seen any cause for concern there.

LM: What about Microsoft? Do you see them as hostile toward Perl?

LW: I did sign the — whatever it was called — the letter to Craig Mundie [This May, Wall was one of ten open source luminaries to sign a letter pointing out some inaccurate statements about the GPL and open source software made in a speech by Microsoft Senior VP Craig Mundie to the New York University Business School].

LM: Microsoft seems to do everything with a broader strategy in mind. Do you think they’re going after Perl?

LW: I don’t think they’re terribly worried about Perl yet. I want to make sure that Perl runs on .NET; I want to make sure that it runs on a Java virtual machine, and that it also runs on its own. Whether they feel that over the long-term this is making something that is more general than .NET and a threat to them, I don’t know. They might. I think they’re much more interested in reducing mindshare of open source as a whole than they are in picking off any stragglers.

LM: So from Microsoft’s perspective, Perl is just a straggler?

LW: It’s a piece of the puzzle. At least up to this point, I’ve managed to keep it a part of the puzzle that is sort of at right angles to what they’re trying to do. That may be becoming less true.

LM: How do you think .NET will influence that?

LW: The real question is, of course, where does Microsoft feel that their lock-in will be? Perl’s overall strategy, even from the first, was to fit into the nooks and crannies — into the interstices. Whenever proprietary solutions would give you a “you can’t get there from here” problem, Perl would be the glue you could use to construct a solution. Just where those nooks and crannies are going to be five and 10 years down the road, nobody can predict. It depends where the various proprietary entities plant their proprietary flags; but we can be certain that there will be interstices, and that a language that can easily flow into those, like glue — or can be wrapped easily around it, like duct tape — something that is just useful for getting from here to there is always going to be in demand.

So we might not be using CGI scripts, but there will be databases that have to be hooked up with textual interfaces. We don’t know what those textual interfaces might be, but they’ll probably be XML-based. Larry Ellison would like us to think that the database will be Oracle, but maybe not. The general principle is that if you have got a language that can mutate into the forms you need, then it will. We’re going to keep trying to make Perl that language.

LM: So you’re saying that you see .NET competing with Perl?

LW: Well, I think Microsoft is scared for their current business, though they are certainly not going to give it up. They see a world in which the network is the computer — as opposed to the thing on your desk — and they would like to own all the freeways and make them toll roads. And Perl is about making toll roads into freeways, so there is a very natural level at which what we’re trying to do is going to be antagonistic to what Microsoft is trying to do. On the other hand, Perl has always tried to compete by cooperating. So whatever people are trying to do with their Microsoft computers or applications or services, Perl’s going to be there trying to help those people get their job done. And if it’s doing a better job at that than whatever Microsoft is offering, then Microsoft’s customers are happier than they would be if they’d just stuck with a proprietary solution.

The other way they might attack Perl or the open source community is through various kinds of legal maneuvering. If they could come up with a set of patents that prevented open source from developing, or if they could somehow buy enough votes in Congress to make open source software illegal, then that would make it more difficult for me to do what I’m doing. But I don’t think it’s ever going to be illegal for people to give things away — things that they have created out of the goodness of their hearts and that aren’t infringing on someone else’s property.

If there are legal finaglings, then I just see that it would tend to drive the open source movement into producing things in smaller bits and pieces. Okay, so I can’t write a system that does this particular fancy graphical thing. “Oh well, okay, I could write plugins that plug into that, that are all open source.” I hope it doesn’t come to that. I hope that as we go along, the legal climate will be such that larger and greater things can be done as open source infrastructure; but people are still going to want to do the right thing, regardless.

LM: Have you met with people from Microsoft? Have they had you up to Redmond?

LW: No. I try to keep a low profile on that score. I did actually meet Bill Gates before he got started.

LM: How did that happen?

LW: He was programming for the University of Washington Experimental College. What made it experimental was that they were trying to do class scheduling on the computer, and he was chewing up an awful lot of computer time trying to do this. I was at the Seattle Pacific University Computer Center at the time. We had the cheapest computer time in the city…it was not cheap enough for him. He was trying to jawbone us into giving him free computer time.

LM: When was that?

LW: It was about the time he was dropping out of Harvard.

LM: Did he make any kind of impression on you?

LW: Well, enough of an impression that I definitely remembered him coming in and yelling at us.

LM: Do you think that you will someday do another open source project?

LW: It’ll probably be a different open source project, but it’ll probably be called Perl. You could argue that’s what I’m doing now with Perl 6. All the other projects I worked on had a natural limit to their size, and I abandoned them for other people to work on. Perl is like a black hole; it kind of sucks everything in. It’s quite obvious that it’s my magnum opus and it’s my Lord of the Rings. So even if I were to get interested in something else, it would certainly be something that would still be part of the Perl world. Philosophically, Perl is not just the language itself; it’s all of its connections to everything else, and that’s what makes it a glue language. So if I work on any one of those connections, I still feel like I’m working on Perl.

Robert McMillan is editor at large with Linux Magazine. He can be reached at bob@linux-mag.com.

Comments are closed.