Monday, December 18, 2006

Rubinius Serial Interview, Part I

I wanted to try something a little bit different with this interview. Several years ago, my son and I watched a DVD collection of old movie serials and I really enjoyed the format. Recently, I started thinking, "Why couldn't I serialize an interview? If I kept myself to three or four questions at a time, and posted episodes once or twice a week, it could be pretty fun." So I started looking around for some victims, err, accomplices. Evan Phoenix and Wilson Bilkovich were kind enough to oblige me. While they'll be key to this Rubinius interview, don't be surprised if there's an occasional guest interviewee (and maybe even an interiewer).

I don't know how long this series will last, it'll depend on how well they go over (and how patient Evan and Wilson are). Hopefully this experiment will turn out well, and we'll all have some fun with it.

Without further ado — Welcome to Part I of the Rubinius Serial Interview.

You guys are keeping an pretty open commit bit policy. How is that going?

Wilson: Extremely well. The rule (borrowed from Pugs, I think?) is that you get commit rights as soon as your first patch is accepted. So far, rubinius seems to be attracting smart people who like writing Ruby code test-first. My favorite kind of people. We're in the process of switching from test/unit to RSpec, since I now have several RSpec co-religionists in #rubinius. The inmates are running the asylum.

"@thing = 1".to_sexp.should == '[:iasgn, :@thing, [:lit, 1]]'

Along with that, Victor Hugo Borja sent in a huge patch the other day that added basically the whole of Enumerable, along with other fun goodies.

Evan: I'm not certain if Pugs has exactly the same rule, but it's certainly the same spirit anyway. One thing that has me quite excited is when I go to update my code from subversion and there are quite a few new revisions that I had nothing to do with! From the originator's standpoint, it's really so gratifying to see people commit back as much as they've started to.

Another great thing that's begun to come out of the LCB (liberal commit bit) policy is people are starting to form their own small committees and focus their work. A great example is the RSpec work that's starting to come in. I've never touched RSpec and I'm encouraging people that have worked on it to push hard on getting a testing infrastructure that they want in the product. As people step up and show interest in areas no one is in yet, they instantly become the leaders and owners of that parts.

As Wilson said, we've also started to get the patch flood! It's really awesome to see people mail in patches for code as their first email to the group.

What goals do you have for the next 3 months of rubinius developments?

Evan: My goals are to work hard to stabilize the core VM so that the guys that are implementing the standard lib in ruby have a solid platform to work off. To that end, I have two immediate goals currently on my plate: Get the rubinius compiler running natively under rubinius so that we're officially self-hosted and get RNI (Ruby Native Interface) in. The compiler is a big step because at that point, we'll be completely independent of the > current 1.8 series ruby, which is a major milestone it itself.

RNI is the working name for the subsystem in the VM that allows use to call out to C functions in a generic way, like 1.8 has. The big deal with RNI is going to be that it has the same C API as 1.8, so current C extensions will require very little to no work to compile and run under rubinius.

Wilson: Evan's goals dwarf mine, but I'm hoping to knock all the rust off of my C skills. We now have a good number of talented Ruby programmers who are banging away on the core Ruby library. In the near term, however, it is C that will get us on the fast track to 1.0. I'll let Evan talk about Cuby, but even that won't be a complete replacement for C. I'm not sure if this is in the three-month category or not, but I want to get rubinius building on Windows and PocketPC ASAP. I don't personally care about those platforms, but the second-class-citizen status of mainline Ruby on those systems drives me nuts.

What's your proudest rubinius moment so far?

Wilson: Adding support for the class << self singleton class syntax. (We're calling it 'metaclass' in rubinius.) One line of C code, and 10 or fewer lines of Ruby. That's when I knew that rubinius was both feasible and implementable.

Evan: I'd say it was what I discussed above, when I went to update and pulled down something like 15 revisions that were all new and from other people. It was a proud moment for the project too.

Because rubinius was inspired by the old Smalltalk Blue book, I'm taking that book as this episode's sponsor.


Anonymous said...

I just wanted to say that I like the new interview experiment. Quite unique. Looking forward to seeing where it goes.

And Rubinius is a terrific subject, of course.

Anonymous said...

I'm really hopeful about Rubinius and I want to pitch in. However, I think they really need to take at least a few days (a week?) and focus on documentation to bring newbie developers up-to-speed quickly. That would really help bring in new developers and make them productive much sooner.

Please start out with some sort of architectural diagram.

Anonymous said...

If you've looked at the Rubinius README file, please do suggest some things that I could add to it.

Definitely like the idea of a diagram. I'll work on something.