Interview with Evan Phoenix on Rubinius, Puma App Server, and Ruby VM design at RailsConf 2014
Transcript
Hi, it’s Mike with UGtastic. I’m standing here with Evan Phoenix, who is a director with the Ruby Central and he’s an organizer with the RubyConf and the RailsConf that we’re at today. You might also know a little bit of his work inside of the Ruby community. He’s one of the few people that can say they’ve actually created a Ruby. He created the Rubinius virtual machine and the Puma web server and probably countless other things I can’t even think of, but those are pretty big things. But let’s start with the conference that we’re at today. Well, first, thank you for taking the time to speak. Sure, my pleasure. So, RailsConf, how did you get involved in organizing? Sure, yeah. So, I’m a director of Ruby Central now and I got involved basically being asked to do it by the previous directors, who were Chad Fowler, Rich Kelmer, and David Black. So, they asked me if I’d be interested in being a director. They had done it since the beginning. So, since, I want to say 2004. And they had decided like, well, you know, it’d be nice to have some new people come in. And so, yeah. So, I said, oh, it’d be great. I was actually working on helping them out with RubyJung stuff at the time. And so, they said, okay, well, you obviously care about this stuff. Do you want to be more involved? And I said, sure. So, yeah. So, that kind of brought me in, made me a director. And then, quickly, I realized that, oh, okay, we run these conferences now, too. So, yeah. So, that’s kind of how I got involved. I was sort of recruited in, if you will. Yeah. So, I mean, you obviously, to have that level of trust, you were already very active in the community at that point. Pretty active, yeah. Yeah. Were you mostly working at conferences? It was mostly an open source. Okay. You know, I had certainly been to a lot of conferences. I’d been to plenty of RubyConf’s and RailsConf ‘s and regional conferences and international ones at that point. Not helping out a ton, mostly because I ended up speaking at a lot of the conferences. So, I didn’t really want, I wouldn’t have that be my focus. Not, you know, what I do now, which is running around and making sure that the conference is actually going well. Do you have coffee? Yeah, do you have coffee? Exactly. Is there enough coffee? I know the internet’s down. Right. That’s exactly right. Oh , let me look at it again. Yeah, okay. So, yeah. So, I hadn’t really been involved in the actual volunteering and that kind of stuff, but I certainly helped out. So, you know, the Ruby conferences are, you know, very much a community affair. So, you know, I’d been at, you know, those guys are my friends and they’d been working on Ruby conferences. And so, occasionally, I would like, oh, what do you need help doing? And I would help out, just do whatever. So, I was fairly, I was aware of the logistics. You know, it wasn’t a totally closed idea to me. I knew, okay, there ‘s this and there’s that and that kind of stuff. When you moved from being kind of in the code or just kind of helping maybe set up and things like that, how, and then being thrust into an organization. Right. Well, I mean, how much of a shock was that to your system? It wasn’t too bad. I mean, I think that, you know, it would kind of, we did a little bit at a time. I think that the first big one, the first thing that we were like, okay, wow, was the 2011 RailsConf. It was the first one that O’Reilly was no longer a partner with Ruby Central on it. And we kind of like, you know, I wasn’t really aware of the, I didn’t, that was my first time doing that conference. And so, there was a lot of things that we were like, oh, my God, I’m going to do this. I’m going to do this. I’m going to do this. We have no signage. And it’s two weeks before the conference. So, we were like, quick, do a bunch of signs. And we need a t-shirt real fast. Do a bunch of t- shirts, you know. So, that was a little, there’s these times where it gets very hectic. And we’ve actually gotten a lot better with managing that kind of stuff now. But it wasn’t a huge shock . You know, it’s managing expectations is sort of what making a conference is all about. And honestly, having an open source project is a lot about managing other. Your users’ expectations and that kind of thing. So, it’s not totally dissimilar. Yeah. Has it changed your perspective of running and organizing? Has it really changed? If you go to other conferences, do you look at them a little differently? Oh, yeah. One thing that we, the organizers that we were talking about is whether or not we feel like the conference has gone well, right? That’s a thing that we’re constantly asking ourselves and asking each other, you know, are things going okay? That kind of stuff. And it’s funny, we can’t, our opinions. It’s actually really bad on whether or not it’s going well. Because we only see the warts. We only see the stuff that doesn’t work. Because that’s the stuff that gets brought to our attention. The stuff that does work really well, people are like, oh, that was great. They don’t, we don’t really hear about that kind of stuff. So, we actually have to like go ask people’s opinions. How’s the conference going? I think that, so now when I go to other conferences and I see what’s going on, I’m much more attuned to like, okay, they’re having a problem. I can tell the way that they’re acting. Oh, there’s a problem over here. And I don’t know how to deal with it. But I can tell. Yeah. You feel a little bit of sympathy. Exactly. That’s exactly right. Yeah. And the other thing is, like in a FOSS project, where you ‘re working and you’ve got the people complaining. And those probably are the ones that are most in your face. I mean, you’re working on a project that’s very, very visible. And then every time somebody gets frustrated, they’re like, I’m not. Yeah, yeah, yeah. This thing doesn’t work at all. Yeah, yeah, yeah. So, you might feel a little bit more, you know, working in open source. You’ve maybe developed a little thicker skin. Oh, sure. I’m sure. Absolutely. Yeah. So, you’re able to look at it a little bit more in context. Yeah. It doesn’t really get, you know, when people say like , oh, this doesn’t work or whatever. It doesn’t get to me. I mean, like, I’m interested. I want to know, like, because I want them to be happy. And I want to know why it doesn’t work. Like, what’s the exact circumstances. But over time, I’ve allowed myself to not. For my emotional state to not be a reflection of those other people’s emotional state. So, when they’re mad, it doesn’t make me mad. I just go like, okay, I understand that that’s the problem. You know, we’ve got to help them fix it, but I don’t get all riled up about it. Well, and like, even I chatted with DHH and Aaron Patterson about knowing that you have a project that people might be sticking their career, you know, not careers on. No, absolutely. Day-to-day job. Yeah. You know, how does that, because we’ve kind of segued here. That’s fine. The, you know, knowing that you’ve created something that many people are, you know, paying their bills with and doing great work. And then, does that ever weigh on you? Or does it, or is that? It doesn’t, I don’t think, it doesn’t really weigh on me. I think that more, it’s exciting for me more than anything else that, you know, like we have , because I think that, I think that if, if people didn’t set, weren’t so adamant in telling us that they felt like, the conferences were going well, I think it would weigh on me a lot more. But I think that the fact that people feel, people come up and tell us that the conferences are going well, that there’s all these great talks and that kind of thing. And I had somebody, somebody tell Marty, who’s one of the directors say like, you need to pick not such great tracks and put them all together at the same time. Because I can’t figure out which talks to go to. Yeah. That’s like the good problem. Right. When we hear that, you know, that, that kind of means, you know, there’s always going to be problems. But when we hear that from a lot of people, the way of knowing that, like, you know, we have a duty, if you will, is, it’s , it’s an energizing, it’s a vigoring more than it’s a burden. Because we know that, like, you know, we can help, we can help make the community better and keep it at a certain size and keep it going. And that will make, that will allow other companies to do more rails projects. And the people at our conferences will get those jobs. And, you know, so I think it’s, it’s more like we’re happy that it’s, that it’s going as well as it is. It’s, it’s more like we’re happy that it’s, it’s more like we’re happy that it’s going as well as it is. It’s, it’s more like we’re happy that it’s, it’s more like we’re happy that it’s going as well as it is. We’re all very, we’re all friends. We all talk about what’s going on because we all have different things to bring to the table. We’re not building exactly the same thing. And so that allows us to, that allows us to sort of be friends, talk about solutions. How are you solving this other thing? And the other thing is that it’s good that we’re friends because it would be kind of lonely otherwise, right? There’s not a lot of people doing that work. You really want to have somebody else to talk to. That’s exactly right. Right. And so if, if we were, you know, if we, if we weren ‘t friends, if everything was like a constant butting of heads, then it would be, yeah, it would be this very isolating thing. But because they’re all sort of, uh, yeah, like I said, we ‘re all friends. So that makes it better. So when people, is it, is it ever like, uh, you just want people to stop doing these comparisons or, or do you think that there is another valid, like, so that way people can weigh their situation? Yeah, I think if the people stop doing the comparisons. Yeah, I think if the people stop doing the comparisons, then there’s probably not a option. That probably means there’s only one thing, right? Um, and so that you want the comparisons because it means that people are looking at them and they’re saying like, oh , okay, well, should I choose this one or should I choose this one? And what does this give me that that doesn’t give me? What are the trade-offs? And I think that you’re always going to have the comparison . You want the comparison. I mean, you know, there’s a million different cars out there and that’s all people do is compare cars. Which car should I get? That kind of thing. Right, right. And you want that. All the car companies want comparison. Comparisons because it means that they’re looking at their other, you know, it means that there’s sort of a healthy ecosystem of choice for these things. And that you can figure out how to compete on features. Absolutely. Yeah, and you want to compete on the things that matter for the users. You don’t want to compete on, like, oh, or sabotage this other project. You want to, you know, your users say, okay, well, we really love something like this. And you say, like, okay, well, I’ll go add that for you or whatever it might be. That’s where you want to compete. You want to say, like, okay, we’re giving people what they want. And that’s, you know, who can give that the best or the version of it that, you know, some set of users want the most or whatever. So, you know, and again, because I, the conferences are fascinating, but the reason I’m so excited to talk about Rubinius is that we’re here about Ruby. And that’s, and it is Ruby. So, I also just want to also understand about how you. Your path to creating a VM. Sure. Not just the Ruby-specific one, but was that your first implementation of something like this? Well, okay. So, Rubinius is actually on its. It’s currently two sort of virtual machines because it’s got a JIT in addition to the normal virtual machine. But it’s really the third code base for the same project. Okay. So, the first two. The first one. Okay. Well, I’ll go back to the beginning. So, I got involved with doing it because I was always liked , like, languages and virtual machines. I thought that was a very interesting part in computing because it’s like this building block. If you can make it really good, if you can make it really sound and interesting, then you can build anything on top of it, right? And so, I started off, I was just kind of interested in it. And a friend of mine, Ryan Davis, said, suggested that I get the. Small Talk Blue Book, which is this sort of canonical book that the second half of it is just a reference for how to build a Small Talk virtual machine. And it was a reference for a machine that they never built. Someone actually has translated it. Squeak was actually a translation of that thing originally. But it was just. It was more like a general spec. It was for documentation. It was like, okay, well, this is how you do this. And all the documentation. That’s so funny to be like, it’s a documentation of something that you’re saying. And it doesn’t exist. Yeah, they never used the code that’s in there. In fact, there’s all these typos. Oh, really? In the code itself. Which is fine. But it’s all written in Small Talk as well. So, they didn’t have Small Talk to write, to run this thing because they wrote it in Small Talk. So, of course, it was just for documentation. So, I got that. And I was like, okay, it’s so easy. Like, I can read the thing. And I feel like, okay, this is what the bytecode looks like . This is how you dispatch the bytecode. This is how, when you call a method, what would you do? So, I really just translated. I just put the blue book into my own virtual machine. I wrote all in Ruby. So, it’s the first version of Rubinius. And it’s actually the first 50 commits or something in the Git repository. You can go back and look at it. It’s an augmentation of the Small Talk, yeah. Well, it’s for Ruby. But it was for Ruby. It’s basically the techniques, the exact ideas that were in the Small Talk, but for Ruby. But it didn’t run very much. I mean, it was like, it had its own. It did have a very simple garbage collector. It had a bytecode virtual machine. It was super, super slow. Obviously, I was writing it in Ruby and just running it on 1.8.2, I think, was the Ruby at the time. So, I did that. And then I was just very interested in it. And then I got accepted to talk about it at RubyConf Denver 2006. No. Yeah, 2006 or 2007. I can’t remember. Anyway, so, and I realized that I couldn’t present this thing that was just all Ruby and super, super slow. People were going to be like, Oh, this is very cool. How can I use it? And I’d be like, You can’t use it at all. I suggest you never use this thing. That would be really kind of a bummer. So, I translated it into C. Just like hand translated it. Read the Ruby, wrote the C. Read the Ruby, wrote the C. And so, that was the first version of Rubinius that was, that you could sort of use. It was still pretty slow. And we kind of built up techniques and we did all kinds of stuff on top of it until about 2000 and… 2008, 2009, and we translated into C++ and we changed a bunch of things when we did that. So, that’s kind of… So, it’s been, it was Ruby and Ruby and then Ruby and C and then Ruby and C++. Right. Okay. So, it’s… So, what’s next? A closure? I don’t know. I don’t know. Yeah, I have no idea. Yes. ADA. Yeah, I don’t know. Oh, an APL version. That’d be fun. It’s one long line. Yeah. Okay. So, you’re… So, you know, very passionate about creating these concurrent, I mean, a multi-threaded VM. Yeah. And people always are looking at Ruby and say, well, it’s got the GL, the Global Interpreter Lock. Yeah. And, you know, that you have to have the four processes. But look at JRuby and Rubinius. So, now you’re, you know, you’re actually in a way going head to head with Java. Yeah, absolutely. 100%. Yeah. Absolutely. Which is, you know, that’s… Scary. Yeah. Yeah. If you start crying, that’s okay. I appreciate that. You know, because, I mean, it’s a huge mega corporation. Yeah. But, so, you know, it’s pretty obvious that you’re passionate about creating performance tools that we can use to run Codon. In 2014, if I’m looking at Rubinius, can I look and say, yeah, I should maybe look at this and try to see what I can do with it. Maybe look at my production systems. Absolutely. I mean, I think that there are still places that it’s slower than even MRI. There’s a lot of Rails code that does things that kind of confuse the JIT compiler. Yeah. But we have users that use Rubinius for very specific workloads because they control enough of it that they can basically make it… Their Ruby code can run extremely fast inside Rubinius. We have, like, high-frequency traders or people who run workers with just, like, the background workers, a lot of times people run background workers with Rubinius that aren’t running inside Rails, and they’re doing something that’s like, okay , well, I’m going to go off and do this big calculation, whatever I want to do. I do that in Rubinius, and it’s super fast. And, again, they sort of, like, kind of get the best of both worlds in that way. And that’s because it’s funny you mention that because we can actually, it might come as a surprise, but we can actually run other stuff on Ruby, not just Rails. Right. Right. Exactly. That’s exactly right. Yeah. But, yeah, no, you did say something, though, that I want to hook onto. I asked this question to DHH earlier about, you know, because he is openly critical of certain companies that, you know, just so happen to use Rails and make a lot of money with it. And then you mentioned the high-frequency traders, which are controversial. Sure, sure. You know, I don’t know what your feelings are regarding high-frequency trading, but knowing that your tools are getting used to basically buy people’s islands, but they’re not necessarily… They’re not necessarily giving anything back. Okay. You know, what are your thoughts regarding… Yeah. I mean, I think that, you know, going in when I was, when I started writing a VM, I thought about this, actually. I was like, okay, I’m going to write, if I really want to do this, and this is true for almost any job. This is not just true for a Ruby implementation. But some of you give away, and you don’t… Yeah, absolutely. At least for a job, I’ve got a paycheck. Yeah, yes. It, I think that you, you go in and you’re like, I’m going to do this. I’m going to do this. And you go into it saying that, like, you know, the, if my license is such a way that I want, I want people to use this independent of whether or not I agree with the way that they’re using it, you have to kind of, like, sort of, you know… Divorce your… Yeah, kind of check that at the door. Right. You have to say, like, look, there’s always going to be those people who are going to do something with it that you don’t, that you would not do with it, right? That doesn’t mean that your thing is not good and that you shouldn’t not do that because, oh, someone might use it in a bad way. It’s not a… It’s not a nuclear weapon. It’s not nuclear, you know, that kind of thing. It’s just some software. If you don’t do it, somebody else will do it. It’s not like there’s this vacuum of software out there. So, I think that I’ve kind of come to the conclusion that it doesn’t, I can’t, I have no control over that, right? I have no control over what, how people are going to use it , what they’re going to use it for, whether or not I agree with what they use it for. And so, I can’t really allow myself to worry about that. That’s just, like, that’s the world that’s going to happen. So, that’s how it goes. And just a funny anecdote is that I had a friend, I have a friend who was listening to a Senate judiciary hearing against some company, for a company he worked with, and they were having to explain their algorithm, and he’s sitting there watching, and he’s with his daughter, and he says, daddy wrote that. Wow, that’s amazing. Yeah. And he’s listening to these people talk about this anti-mon opoly, you know, I’m not going to say who or what. Yeah, yeah, yeah, that’s amazing. Yeah, yeah, that’s super interesting. And, but, you know, hearing about, you know, like I said, D HH complaining or commenting on certain companies, and you mentioned the high-frequency trading, it’s like, this stuff can get used in ways that maybe aren’t anticipated, but you kind of just have to let it go. I mean, I think for me, I think the way that I, the way that I come to terms with it is just to think that if, if I’m making, if I’m making money, I’m making money, I’m making my users happy, whatever they do with it, I sort of, that’s fine with it, right? Again, I can’t control that. I just, but I still want to, I still am beholden, I hold myself beholden to the users who work this thing. You know, so I’m going to use it too. I’m a user as well, but those people’s opinions matter as well. So I want to, if they’re happy with what’s going on, then that, then I’m fine with it. And I have to just sort of end there. I can’t get into the deeper, but what are they actually doing with it? I can’t, I can’t do that, so. Right. And, you know, just coming back to the conference, you know , 2014 is wrapping up, I mean, or not 2014 in general, but the RailsConf 2014 is wrapping up today. Are there already plans for what’s next or, since you’re in Chicago, you go all over? Yeah, so we’ve got RubyConf in November coming up, that’s in San Diego. Okay. And then we have RailsConf 2015, which we’re going to announce the location for at the keynote this afternoon. Great. And then, yeah, we’re good. So it’s live in wallets. Yeah. Oh, yeah. Yeah. We’re, we’re going. We’re going. Everything’s good. You know, I think that people have asked us, you know, like , oh, could the conference be bigger? Is the conference growing okay? And, you know, we sell out the, we sell out both conferences every year. You know, RailsConf only sells out a couple weeks before the conference actually starts. But that actually tells us that we’re probably exactly the right size. Okay. Because if we weren’t selling, if we weren’t selling out, we’d know that we’re probably buying, you know, we’re a little too big. If we sold out too early, maybe we’re a little too small. But we’re kind of where we are. We’re kind of in this sweet spot, I think. And, you know, we’re a lot of people that are, you know, we ‘re a lot of people that are a lot of new people at this year’s RailsConf, which is super, super important. We know that the community is healthy. We know that there’s new people coming in. You know, at some point, I’ve told this to other people, at some point there will be a decline. I don’t know when that’s going to occur. I don’t know what it looks like. But I know that having new people come in, be it in the community, be it at the conferences, will delay that decline, you know, all the time. So it might come someday, but it’s, well, eventually there ‘s going to be the heat death of the universe. But not this year. But not this year. Right. All right. Well, thank you very much. Absolutely. My pleasure. Appreciate it. Sure. User groups with lots to say, interviews and more. No way. Sharing great ideas in the tech community. Fascinating conversations, a plethora of information. Find out for yourself today at ugtastic.com. you