Nat Torkington - interview
From LXF Wiki
Linux Format can exclusively reveal why Perl 6 is taking so long: Perl Foundation board member Nat Torkington is too busy... solving arithmetic code puzzles.
When Noah gathered the animals two by two to save them from the flood, he had God on his side. When the Pied Piper led the children out Hamelin, he had a pipe and a natty way with a tune. Yet Nat Torkington gathers geeks from across the globe to the OSCon conference with only a website, a few emails and a chunk of Tim O'Reilly's money arguably an even more impressive task. When Graham Morrison met the OSCon programme chair he first wanted to Torkington about his other big work: Perl.
Linux Format: Do you get the chance to do much hacking?
Nat Torkington: I didn't used to. My job at O'Reilly [he is an editor] would keep me very, very busy, but this year I've started carving out more and more time to get back in. So I taught myself Ruby, and I'm loving that. I'm working my way through programming contest puzzles, having fun with code again.
LXF: You studied and taught at the Victoria University of Wellington, New Zealand, back in the nineties. Is that how you got into Perl?
NT: Well, the classic need within a university is the roster to be able to search for somebody's name and get a list of results. And the only way you could do that in those days was by running a web server in Perl called Plexus. So I had to learn Perl in order to do this. And I learned Perl from Programming Perl, the original one, the pink camel book, and it was fun. I'd learned C from the Kernighen and Ritchie book [The C Programming Language], and it was a lot easier than C. [Laughs] Much, much easier than C.
LXF: Do you think that PHP has stolen any of Perl's thunder?
NT: Absolutely, yes. What it did was provide an easier way to create dynamic web pages, and the people who had been coming into Perl because of dynamic web pages are now going into PHP. But that's fine. I don't think there's a whole lot of rivalry between those languages any more.
At the top of the food chain, the creators of those languages, like Guido [van Rossum] from Python, Rasmus [Lerdorf] from PHP, Larry [Wall] from Perl, they all respect each other, they all talk, they all like what the others are doing. They all like one another and hang out, and it's not a competitive thing at all. Sometimes the users can be competitive, the programmers can be competitive, but even that's getting less and less.
LXF: Do you think that's peculiar to the open source kind of world?
NT: Do you mean the competition, or the diminution thereof?
LXF: I mean the respect, the openness. You learning Ruby, for example.
NT: I think it happens a lot in the technological world as well. The AT&T Bell Labs guys who invented Unix and C and so much of the technology that we now take for granted, they're just as open to smart guys and smart systems built by IBM, built by Linus Torvalds, built by anybody. If it's a clever piece of engineering, if it does something, it gets respect.
LXF: How close are we to a release of Perl 6?
NT: I think the joke for a while was that it would be Christmas. We're just not going to tell you which Christmas.
LXF: I imagine you're asked this every single time you talk about Perl.
NT: Right. It'll be done when it's done, and if I give you a date, I'll be a liar. Either it will be earlier or it will be later, I can't win either way.
LXF: Does there need to be a release?
NT: So you're thinking of it as some sort of aspirational ideal if we never release Perl 6 we'll just get people continuing to build it.
LXF: It seems to be doing OK as it is there are plenty of books on it.
NT: Well, you can play with Perl 6 right now. You can go play with the Pugs system, which is the Haskell-based Perl 6 interpreter. It's an amazing system; Larry is actually using it as his main platform for figuring out the rest of the language. So when Audrey [Tang] built Pugs, Larry was able to say, "All this stuff that had been floating around in my head, let's actually write some test cases for it." And he started to realise, "Whoa, that's a bit difficult in real life, how can we make that easier?" And when it became tangible and experimental the design started to settle down. It's now at the point where people are also porting some of that Perl 6 functionality back into Perl 5, and it's really kicked the Perl 5 development community back into gear again.
LXF: I have to say I don't know anything about Haskell. Why was it chosen?
NT: I don't know a thing about why Haskell was chosen, you'd probably have to talk to Audrey, but I know that it has proved exceptionally good for the task. I was talking to Audrey and Max [Maischein, Perl hacker] last night, and she was saying that it's so good that she would use it for any project in the future.
LXF: It looks fascinating, I really like the idea of it.
NT: It's a bit like Perl 6. Perl 5 was amazing because it brought technology from academia into everybody's hands, so a lot of people got their first exposure to for example closures in Perl. It took a long time for Python to have closures that were true closures. Perl programmers were able to play with them and learn about that aspect of computer science. If you're a Lisp programmer that's your bread and butter, you grew up with that stuff. But if you're a programmer coming at it from the ground, that kind of non-obvious concept that wasn't built into the language, you never encountered it.
Perl has always done a great job of making available the concepts that are one step beyond the current state of what the mass-market programming languages are doing. And Perl 6 is continuing to do that. I think Haskell is probably one step beyond Perl 6 at the moment. There are some concepts in there that are just too scary for Larry at the moment.
LXF: So the fact that Pugs uses Haskell is not that important in itself?
NT: No, absolutely not. Haskell turned out to be an absolutely amazing, rapid development platform for the concepts of Perl 6. So Pugs was written very quickly because it was written in Haskell. If it had been written in C, we'd still be trying to get to Hello World.
LXF: Is the increasing importance of object-oriented functionality a response to the way that people want to program, or does it signal something more a change in direction for Perl?
NT: Perl has had objects since Perl 5 came out I think that was '93, '94 [Perl 5 was released in 1994] so Perl has always had the ability to create objects and call methods on those objects.
LXF: It's becoming more formalised, though.
NT: It's becoming more formalised, exactly. I learned object-oriented programming [OOP] through Perl. I had done some object-oriented programming in my university classes, but none of it really stuck.
LXF: You didn't go from C to C++ then?
NT: No, I was the last year we did C, then they jumped straight into Java. We did Pascal in our first year, which is even more barbaric.
LXF: We did Modula-2.
NT: We did Modula-2 in our second year, aren't we fancy? We used the Metrowerks C Compiler, and it was ghastly, dreadful software.
Perl has always had OOP. One of the lessons we learned is that it has to be easier. OOP is one of the higher-level concepts that people talk about now. You can't emulate it, you can't break it down into smaller pieces and let people assemble objects from those smaller pieces which is what you have at the moment in Perl, where a method is a function, a data structure can have a class associated with it, and that makes it into an object. Right now it's very visible how the inner working are. In Perl 6, it says, "Take objects and make them first-order, first-class citizens, so that you can program directly in objects without having to worry about the inner details." Though Perl being Perl, the inner details will be there if you need them.
LXF: Would you use objects as a quick script, or would you be expected to use Perl as you always have done?
NT: You can still use objects as a quick script in Perl 5 a lot of the functionality now is exposed through objects. For instance, the quickest and easiest way to do socket-based networking, TCPIP stuff, is to use the I/O socket class. One line gets you the object that you can then print to or read from just as over a file handle. And it's easier than doing it the old-fashioned Unix way where you construct a socket and you associate protocols to it, you bind it to a port and... yeuchhhchchch.
LXF: I was going to ask Allison [Randall]: where does Ponie fit in?
NT: Ponie was a really important lesson in the internals of Perl 5 and the internals of Perl 6 and how to make them play together. The Perl 5 people have been borrowing steadily from that work and the Perl 6 people have been borrowing steadily from that work, to the point where we think: "There's not much point having a separate project. Let's just keep the Perl 5 and the Perl 6 stuff in parallel." And so Ponie itself won't continue as a separate project, but all of the work that's been done is being folded back in to either Parrot of Perl 5. It was really good for us as a glimpse into the future, the different mindsets between Perl 5 and Perl 6, and how they're going to play together in the future.
LXF: I've read a lot about how Perl 6 is being driven by the community. Other than in terms of making the whole process a lot longer, how has that changed things like ratifying standards? Has the effort been worthwhile in the fact that it's community-driven rather than being driven by just one or two people's ideas?
NT: It's hard to say. It's hard to answer because there is no other way to do open source software.
LXF: But it's a transition for Perl.
NT: The big difference for Perl 6 was that we were trying to get away from the squabbling that had been in the Perl 5 `port this' list in the late nineties. Some people say that we solved this problem by drawing all the crackpots to the Perl 6 design process. I Iike to think that we had a calming influence on everybody. The status of the Perl 5 and Perl 6 mailing lists is that both are extremely healthy and mature now. The problems that plagued the `port this' list in the late nineties just aren't there any more.
LXF: Because people feel like they've got a role to play in Perl 6?
NT: And they feel like they can see where things are going, they know who to talk to, they know that their questions and their comments are being listened to and acted upon. There was a bit of... [pauses] I've been thinking a lot about open source projects. I think that every open source project has to deal with attrition. Programmers come, programmers stay, programmers leave. And I used to think that was a bad thing. I remember the first time I noticed it I became really worried that the people who had been pushing really hard to get version 5.004 out were gone by the time of the 5.005 release; they weren't contributing at all. I thought: "We have a problem with consuming people and burning them out like this." But then by 1998 I was realising that if people don't leave when they're ready if people don't leave when they've made their valuable contributions you end up with people who have no valuable contributions to make. And that's far worse. You really have to accept that people will come, people will leave and that's healthy. A sign of disease is when nobody does anything and everyone talks and harps and nags.
We had a problem in Perl 5 where there were what I thought were a lot of oldbies, not newbies. Open source is often pitched against newbie participation, and our problem in Perl was that we had a lot of oldbies who hadn't left yet. I'm happy to have said, "I'm done, I'm walking away. I'm happy to help if you need me, but I'm not going to stay on the mailing list, I'm not going to pipe up with every opinion that I have, I've stopped doing things, I'll step back." I think that was needed.
We've got a much healthier community now than we had in the late nineties. It's been rough getting there, but I love the energy we're seeing now.
LXF: That's a really good point, because I've been involved in projects and you do just naturally get bored with them, even though you still love them.
NT: And the worst thing you can do is stick around and impose your 2006 ideas on a 2009 project. Open source is developers scratching their itch. And if it's not your itch you're scratching, you're probably not doing a very good job of it, and your opinions probably aren't as relevant as those of people who are scratching their itch.
LXF: Can I just ask you a bit about OSCon, which of course began life as a Perl conference. How much effort do you put into it?
NT: A lot. I get a couple of months off after OSCon in which I can recharge, but by November we're writing the call for papers again. February we are selecting the papers, by March...
LXF: Can anyone contribute an idea?
NT: Absolutely. It's an open call for papers, so anybody can submit a talk proposal or a tutorial proposal. I have a programme committee who I work with. They are experts in Linux and Java and Perl and Apache and Python and all the topics that we cover, and I get them to pick the best papers and the best presentations.
LXF: So it's all peer-reviewed?
NT: After a fashion. Ultimately I get to be the evil dictator. I get to say, "That's great but I don't want four tutorials on almost identical topics." Tutorials are the scarcest space that we have after keynotes, and I try to make sure that we have a healthy balance and a healthy mix.
LXF: How much is driven by the sponsors?
NT: Very little. We try to keep a very clean editorial line between the technical programme and the sponsorship side of things. For example, I don't sign sponsors, I don't work with them on that stuff. If they... our sponsors get the products and services track, in a programme, which is different from the editorially-selected stuff; it's labelled `products and services' for a start, which is a pretty give-away indication. If you are a top-level sponsor you get a keynote spot, but I have to be able to talk to the person who's going to give the keynote and verify that they are in fact going to be interesting, relevant and not marketing. That's a policy that's [working] really well.
I've been at conferences with significant blowouts in the sponsorship speaking space, and we had one or two of those ourselves in the early days. This has worked a whole lot better: being able to talk to people and say: "Let me help you with the audience, let me help you with the way that your message is coming out so that you don't have 15 minutes of hostility."
LXF: The corporate speakers can stick out like a sore thumb!
NT: Exactly. I've sent people back and said, "Can you get me a better speaker than this? I don't want to inflict somebody this boring upon the audience!" LXF