Summer of Code postmortem: Refactor Pirate...

acme on 2005-09-19T08:11:15

The Perl Foundation took part in Google's Summer of Code program and managed to get 8 projects funded. As the projects were starting, I interviewed the students to see what their plans were. Now that the summer is over, I'm interviewing both the students and their mentors as a project postmortem. What happened? What went right? What went wrong?

Ahoy matey! It's Talk Like a Pirate Day, so up now is Refactor Pirate so that the intermediate code emitter is independent of the Python parse tree (AST), by Curtis Hall with mentor Michal Wallace. First up is the mentor, then the student.

Hi there! Tell us a bit about yourself.

I'm 29, live in Atlanta, and run a little web hosting company called cornerhost.

What qualifies you to be the mentor for this project?

I did some of the earliest work on pirate. Other people (mostly Sam Ruby) have since made a lot of improvements but the overall structure of the code never really changed. So basically I was the guy that created the mess Curt was cleaning up. :)

How did you communicate with the student during the project? What you communicate about?

We met up several times early on via AIM and shared a terminal session through the magic of the GNU screen program. We mostly worked through the old design and the problems it had, as well as how we wanted things to look, and then figured out how to make the transition. Once Curt was on a roll, we mostly just checked in periodically over AIM or email.

What is the state of the project? Where is it available?

Curt has completed most of the refactoring. Last I heard there were still a few failing tests that he was cleaning up. It should be available for download via the web or cvs soon. Check the pirate site for updates.

Did you learn anything that surprised you?

I'm looking to expand my company a bit, and have never really dealt with a multi-person project from the management side. So working with Curt was really interesting from that point of view. I'm hoping he'll stick around to do some work for my company. :)

Where is the project going to go now that the summer is over?

Well, the goal of refactoring pirate was to make the code flexible enough so that other languages can use it. So part of the next step will be comparing notes with the other compiler writers (like the pugs team) and seeing how we can work together. Another big part will be making pirate self hosting. In other words, we need to get pirate running on parrot so that it can load and compile code at runtime.

What, if anything, would you change about the SoC next year?

I think it would have been fun to have a little more communication between the other participants. I only just now found out there was a mailing list list for the whole summer of code project. Doesn't look like too many people posted once things were underway. It might be fun to encourage people to post on their progess next time around, either through the list or with blogs or whatever.

Got a silly fact about yourself or the project?

I was born without an E in my first name... :)

Now back to the student. Hello again! Did you have a good summer?

Yes I did, was pretty busy with the project, but had a little time to relax.

Did the project go as expected?

Yes it did. It went very well. I learned so much more than I had expected.

Did you learn anything that surprised you?

Well, I learned about real world refactoring and coding, and the different utilities and tools you need to make a project like this work.

What's the status of the project? Where is it available?

It's in the final stages of cleanup right now. Newer revisions will be updated at pirate.tangentcode.com.

Where is the project going to go now that the summer is over?

It's going to get cleaned up and hopefully used in my next project, to port Icon to the Parrot VM.

What kind of help did you get from your mentor?

Guidance and roadmaps to show me where to begin and how to keep track of what I'm doing. My mentor helped with answering technical questions that I didn't know.

If you were going to do this again next year, what would you do differently?

Set short term goals and stick to them instead of offshooting to tangents and parts of the same project.