FOSDEM '08 is a free and non-commercial event organised by the community, for the community. Its goal is to provide Free and Open Source developers a place to meet.


Interview: Patrick Michaud

At FOSDEM 2008, Patrick Michaud will update us about Perl 6.

What do you hope to accomplish by giving this talk?

I'm hoping that the talk will be useful to a wide audience.
For existing Perl programmers, I want them to get a taste of the terrific feature and syntax improvements that Perl 6 has.
For people who program in other languages, I want to provide a glimpse of how Parrot is promoting interoperability among multiple programming languages. And I hope to share the sense of awe and amazement I have at the far-reaching vision that the Perl 6 design team has created.

How would you describe the role of 'pumpking'?

For the Perl 6 compiler, the pumpking role is a mix of lead developer, project manager, recruiter, and sanity check.
Essentially, I see my role as making sure that we are making progress towards a working implementation of Perl 6, and that the project continues to grow and thrive and does not wither away.

Perl 6 development started in 2000. Do think it was a good decision to use this long of an iteration?

Well, it certainly wasn't a conscious decision, but I think that the "do it right" and "it's ready when it's ready" philosophies that are behind Perl 6 development are the correct ones. Certainly the people that have worked on Perl 6 over the years didn't expect things to take as long as they have.
On the other hand, the Perl 6 specification has had some truly radical and far-reaching improvements over the past couple of years, and I fear that had we committed to an early implementation of Perl 6, we might have cut ourselves off from those improvements.

We've been ensured that "Perl 6 will still be Perl". What does that statement mean to you?

To me, programming languages and the people who use them define a culture and a shared model and value system of looking at the world (well, the computing world, anyway). It's the nature of languages, programming or otherwise, to shape the way we view the world and what we can express about it.
Languages also constantly evolve and adapt based on shared experiences and history, and those that are unable to adapt tend to be discarded.

So, I see language as more than syntax and libraries. To that extent, "being Perl" is really more about the fundamental philosophies behind the language -- things like "There's More Than One Way To Do It", the virtues of "laziness, impatience, and hubris", liberally copying the good ideas and memes from other languages, etc.
To me, Perl 6 and previous Perls share that philosophical underpinning, but Perl 6 does it in a way that is clearer, more direct, more expressive, and without many of the false leads and rough edges that have accumulated over time into the previous Perls.

So, Perl 6 is still Perl in that a programmer looking at a Perl 6 program will instantly recognize that it is "Perl", even if some of the details are different. And my experience matches that of others: once I start writing code in Perl 6, I'm reluctant to go back to Perl 5.

You maintain a very successful PHP project as well, PmWiki. Knowing the power of Perl, how does it feel to express code in this other language?

PHP often seems to have a bad reputation among Perl programmers; some of that reputation is deserved, but much isn't. While there have been a few times where I've thought "Gee, it would be a lot easier to do XYZ in Perl instead of PHP", there have also been about as many times where I've been happy that PmWiki is written in PHP instead of Perl.

In a project like PmWiki, I think success really has far more to do with design philosophy and community development than the language used for the software. I chose PHP because I thought it would be a better fit for the community I was targeting, which tended to have a lot of non-programmers in it.
As far as the mechanics of writing code in PHP versus Perl, I never really notice that I'm switching language contexts. When I'm working with PmWiki I just write in terms of PHP sentences, and when working with Perl 6 I think in Perl ones.

So you don't see PmWiki ever becoming a Perl app?

Not in the near future. My experiences tend to agree with the idea that it's often better to migrate/adapt an existing codebase than it is to do a rewrite from scratch. In PmWiki's case, it's not just the core PmWiki code, but also the substantial set of extensions ("Cookbook recipes") that the community has developed and refined over time. Turning PmWiki into a Perl application would probably feel more like developing a new application than migrating an existing one.

However, there's a part of me that fantasizes that I might not actually ever have to make a choice.  :-) One of the fundamental goals of the Parrot project is to provide a common runtime for multiple languages, and a PHP compiler is being actively developed for Parrot.
So, someday PmWiki could be running on Parrot, communicating with modules written in Perl, PHP, Python, Ruby, or whatever happens to be most suitable for the task at hand. And yes, there's a part of me that thinks that ideas like this are far removed from reality, but I've thought the same about several other aspects of Perl 6 and Parrot that are now reality. So, I'll wait and see what the future holds.

Professionally, do you work more on Perl or on PmWiki?

Over time I think it works out to be about equal for each project. I go through some periods where I have more of a Perl focus and others where I focus on PmWiki, but over time they tend to equal out.
However, I just received grants from the Mozilla Foundation and The Perl Foundation for working on Perl 6, so for the next few months I expect to put more focus on that.

What's the current status of Perl 6, its compiler and Parrot?

Currently there are three Perl 6 compilers: Pugs, KindaPerl6, and perl6. Pugs is written in Haskell, is based on somewhat earlier versions of the language specification, and is the most complete of the available compilers. Many of the recent language changes have been due to experience obtained via Pugs. KindaPerl6 is aiming to be a self-hosted implementation of Perl 6.

The perl6 compiler is the one being built for Parrot and that I'm primarily focused on. As of mid-December 2007, we've just gotten a new object subsystem for Parrot, redesigned the compiler toolchain, and converted the perl6 and other compilers to the new toolchain.
One of the benefits of this is that the bulk of the perl6 compiler is now written in Perl 6. We're currently able to run a test harness (written in Perl 6) and pass quite a few basic tests.

Over the next month or two I expect that we will greatly expand our feature coverage, including the ability to create classes and objects, multimethod dispatch, builtin libraries, regular expression matching and grammars, and so on. So, by the time FOSDEM rolls around we should have a lot of Perl 6 implemented in the perl6 compiler.