Yukihiro “Matz” Matsumoto created Ruby in 1993 and released it to the public in 1995. Since then, Ruby and the framework Ruby on Rails have taken off, earning a seat at the programming table along side other popular languages like Java and PHP. Matz was recently hired by Heroku, the Ruby platform-as-a-service owned by Salesforce.com, as the chief architect of Ruby. I sat down with him at the Dreamforce event to talk about his role at Heroku, the future of Ruby and his advice for open source developers.
What are you doing for Heroku? What sorts of problems are you working on?
Heroku doesn’t ask me to do anything for them. You can consider them my sponsor. I’m dedicated to the design and implementation of Ruby full time. I’m working on Ruby 1.9, which is the current version. We’re also starting on 2.0. And we’re working on the small dialect of Ruby for embedded devices.
What is your vision for that? The embedded systems?
The goal of Ruby is to make programmers happy. I started out to make a programming language that would make me happy, and as a side effect it’s made many, many programmers happy. Especially Web developers. But Ruby hasn’t reached developers who work on embedded devices, mobile devices, controllers, things like that. I hope to make them happy too.
You’ve mentioned that Heroku’s deployment model is very good. Has Heroku or Platform-as-a-Service in general influenced the way you approach Ruby?
I don’t think so. Ruby and Ruby on Rails have made programming easier and faster, but deployment remained an issue. Herkou is improving that. We share a design philosophy, but that hasn’t changed Ruby.
You designed Ruby for yourself. Has Ruby’s popularity affected the way you develop the language?
The basic philosophy has not changed, but with so many people using Ruby nowit’s hard to make big changes. Changes have to be made more slowly compared to 10 years ago.
Do you have plans to bring concurrency to the language? You’ve talked about the actor model in the past.
Real concurrency is very difficult to implement. We’ve taken a few approaches. One is using the JVM, since so many resources have been dedicated to making concurrency work on the JVM. So we run JRuby on the JVM. Then there’s the forking model process, which implements a type of concurrency.
And third, there’s an experimental process called multiple virtual machines or MVM. Each virtual machine gets a thread. There’s a guy working on this at the University of Tokyo, he just published a paper on it. It could end up being integrated into Ruby in the future, but I don’t know yet.
You’ve mentioned that the community is Ruby’s greatest asset. Do you have any advice for open source teams building communities?
Unlike the technical aspect of building software, community is about human relationships. Some developers don’t like this part, but sometimes the human relationships are important. In fact, they’re often the MOST important part of a project.
Sometimes you’ll have a hostile person come into the community. When I have a difficult conversation with someone, I have a rule: I remember there must be a reason for them to be hostile.
You try to see the issue from their perspective? To stay civil?
To stay civil, yes. And to stay calm, to keep from getting angry.
What is your favorite language other than Ruby?
Actually, Lisp is my favorite. It’s the ancestor for every good language. Recently I’ve studied the Lua language from Brazil. It shares a lot with the small dialect of Ruby. I’ve learned a lot from it. The list goes on, I’m a language geek.