 Nats normally doesn't take questions during the Q&A. So years ago, or at the keynote, years ago, we're like, hey, people always have lots of questions for mats. And anything that someone asks them in the hallway is probably something that other people would be interested in hearing. And so we always organize this time at the end of RubyConf to ask mat questions. I have questions that I have sort of seated from my own interests that we can get started. But I expect you to run this for the most part. I will help moderate it. So there's a microphone over there, and there's a microphone over there. I would ask you to line up, and I will call on you as you get up there. And with that, we'll go ahead and get started. So how's RubyConf been for you this year? Yeah, this is a great conference. I met so many first timers. So at the same time, I met very old faces, like Chad, Rich, Paul, many, many other guys. And at that part, it's kind of like a reunion. Yeah, it's funny, you know, with as many new people as, but we still have that old, sort of the, that old base still going. How many, I was just, I was curious earlier, how many Ruby Conferences are, I guess Conferences in general, do you go to a year? Oh, yeah, the, outside of Japan, I attended five conferences this year. Okay. Is that a lot? Is that an average? Yeah, an average. Okay. Yeah, mostly for five conferences a year. Were they all Ruby Conferences? Do you go to other kind of Conferences as well? No, no, only Ruby Conferences. Cool. Yeah. No questions yet? You guys are, you got nothing, nothing going on? Oh, look, we're okay. See, I just had to poke and prod. There's always like, once it gets going. Let's see. You, there was a lot of talk about, we're still hearing lots of talk about type checking and all that kinds of stuff in Ruby. Have you thought any more about, you know, is it a real serious thing that you think Ruby will get in the next unknown amount of time, or is it still sort of a wait and see on a lot of those more experimental ideas? But yeah, it's still experimental ideas, but the people like Sotaro who gave the type checking session in this conference is working on some kind of the relatively useful type checking tools. And then the people from, I don't remember the name, I'm sorry, a guy from Jetplane is working on some kind of generating runtime type information from the test execution, so that yeah, the generating the prototype or return type information from the actual runtime type information, so that combining those technologies, so we can have the, you know, something closer to the type script, the TSI file, so that would be gradually introduced as to that. Yeah, partially, just typically type. Yeah, so thinking about it is sort of like these tools that we have on the side that we use to validate our code base, like oh, it is doing what it's supposed to do, but maybe we don't bother to do all that type checking once we get into production, right? That slows things down, it's not necessary. Cool. Okay, we're gonna start over here. Yep. Yes, about how much time do you spend coding versus project management and conferences and things like that, and do you feel like it's a good combo or do you kind of miss being a little less responsible for all the things that go along with Ruby? The ratio is, I try to be a half programmer, half designer, but the actual ratio is, I don't know, 20% programmer, 20% designer, and 60% something else. Like reading, writing mails or taking blogs, reading, writing twitters or something like that. So the 60% wasting time. So, yeah, I should have been more productive. Well, you know, I know the feeling. I think another, a good follow-up question is also, again, because we have lots of new people, is maybe give an idea of what the core team looks like right now. I know that for a lot of the new people who see lots of people doing lots of different things, I know that back in like one, eight days, that wasn't true, right? So, who's on the core team now that is doing, you feel like it's doing a lot of the work these days? We don't have the rigid membership of the core team, unlike other patterns of software, but we gave some contributors commit previous, like we call them committers, so that we have nearly 100 committers for we, the core we, so that these are core team, but most of them have some kind of the role in the community, like the maintaining, the documentation, improving the reference documentation, or maybe in charge of some libraries or something. We have the very active, the committers who is working on the core, like a language self or the implementation of the virtual machine. We have less than 20 committers, so that each month, once a month, we have some kind of Ruby developers meeting in Tokyo, and then we have, I don't know, 10 or something people. Okay, cool. We'll go over here. Hi, Matt, it appears that you've become a podium and you're looking well, but on the design side, what other language designers do you find interesting right now and what's interesting about the work that they're doing? The other language, Elixir and some other languages, like a TypeScript is pretty interesting. The TypeScript for having the static type checking to the dynamic language JavaScript, the Elixir is for the distributed and the concurrent programming, which is, I'm weak at. Should I ask a question about concurrency and actors again? Yeah. I can, I don't have to. Yeah, I didn't tell this year, but we have the three major, you know, challenge to the Ruby 3. One is performance, I talked about that, so the MJIT is solving that, is kind of solution to that performance challenge. The second one is concurrency. Then, so this, you know, 25 years ago when I started Ruby, the only, we had only one CPU per computer, so that the concurrency is the, you know, some kind of context-switching thing. It's not for performance. So that, you know, the threading is okay just because, you know, it's time-sliced. But these days, so the threading is around in parallel so that we have more performance. At the same time, we have more problem just because, you know, we have more rest conditions because it's not time-sliced. So that in those days, we need more serious consideration of the threads-aware programming or concurrency programming. Then, in my opinion, the thread is not really ideal model of concurrency programming just because, you know, we, my thread shares everything so that we can see anything from the threads so that everything is shared. And in Ruby, so many things is, you know, mutable. So you can change the shared state very, very easily. That could cause deadlocks, rest conditions and then so many problems. So that, so we need more, you know, the modern models for concurrency. So that the Koichi, the VM guy, is working on the something named guild, which is the isolated execution body on top of, over the threads. So that you can fork off the new guild so that those guilds are separated, object-wise, so that only you can communicate to the other guild by only through the channel. And then the channel, and then you can send object toward the different guild, but only immutable object can be passed to the other guild. So it's- How's Koichi going with that? Yeah, Koichi is working on that, but I'm not sure the up-to-date state. Okay. And then maybe you can consider, it's kind of like a web thread, web workers of the JavaScript. Right. Okay, cool. Let's go back over here, yeah. So I was wondering, if you had just total access to break everyone's code, what is the one thing in Ruby you really wish that you could change? And then on the opposite side, what's the one thing in Ruby that you're most happy about and most proud of? I answered the last one first. And then I'm proud of inventing the block, which is, I'm very, very proud of. And then, yeah, I regret many things. But one of the biggest one is adding thread. Yeah, I thought concurrency model is pretty interesting and harmless at the moment, but it wasn't the concurrency model. And then at the beginning, I stole so many ideas from the existing language like Pro. And then, yeah, I did that probably too much. For example, we have the tons of dollars, something weird variables. So that, I think that they were too much things. What did, what version did threads get added in? Yeah, very beginning. Like 1.2 head threads. 1.2 has threads. Yeah, of course. I think the first open source version was 0.95 and it has threads already. Okay, yes. Hello. So what is your motivation on which features the ship for the next Ruby version? Like, what makes you decide that, oh, this is what I want to add into the next feature or next version of Ruby? The motivation for the next version. Is it still just that Christmas is coming? Yeah. We heard about event-driven development earlier, yeah. Yeah, yeah, of course the timeframe is one of the motivation. I kind of think that Ruby is one of my child, children. So that, as a parent, it's very natural to nurse their kids. So, you know, I nursed them for the last 25 years. Why can't I stop that? Yeah, that's a good question. I mean, have you, there's been a lot of talk about death. I don't know if anyone caught that. Have you given any thought to, it's been 25 years. Do you want to do this for forever? Yes. Okay. That's easy enough. Yes. So you said one of the languages that you were looking at is elixir for inspiration. What version of Ruby are we going to introduce macros? Ah. Erin has asked this question at every RubyConf for five years or so. Yeah, I have two fold answers. The first answer is never. As usual. The second answer is that, you know, we have the library like Ripper and so that we can generate the abstract syntax tree from Ruby or some other language. So that we put the, you know, the co-generating library from the AST so that we can separate the, you know, the AST and the parser and the co-generator so that you can create the AST from your favorite language or something. Then the co-generate to use Ruby as the back end so that in that sense you can use your version of Ruby or maybe you can add the macro to the language. That is my big idea, but I don't know. Maybe you can do that. People have talked a lot in the last couple of years about static types and all that sort of stuff. What do you think about interfaces? Like being able to say this method must take an object which can respond to these methods and more like an interface like they have in Swift. Actually, even when we are going to add some kind of the static type checking, the static type checking will behave like a structure of types, not the nominal types. In that sense, our static type check will be the interface of other languages like Go and Swift. So that we are not going to have the nominal check, like this method takes string, that means that this method takes string-like object. Hi, Mats. It's very hardening to me that we see many Japanese Rubyists here at RubyConf, so thank you for all of you who came here this long way. A lot of times I see Japanese Rubyists separate from the other Rubyists, and I feel like I wish there were some way that we could get together and interact more. And I know Learn Japanese is probably the first thing that would come to mind, and there's something to that. But is there anything that you'd like to tell us that would help us better understand the Japanese Ruby community? And we better relate with them. Let me ask you a different question first. Do you want to be the ambassador for the Japanese Ruby community, or would you rather someone else take up that? Yeah, I'm not a very good person to be asked. Maybe Nobu, he loves to talk, that guy. I don't think so. Yeah, nobody knows Nobu. Yeah, yeah. Anyway, for example, Akira had been a good ambassador for the last few years, so maybe we can do more. Like, you know, having the RubyKaigi session, the track in this conference is quite nice, and I saw some kind of the West, I mean, their communication right after the presentations, so that would be pretty impressive for me, so then. And then, I don't know, the mindset or spirit of Ruby programmers, the Ruby community members are quite the same all over the world, like even in Japan, then the point is we have, yeah, we tend to be weak at speaking English in Japanese people, so that it's kind of the, we have language barrier between us. But, yeah. So then, you know. But we all speak Ruby, right? Yeah, yeah, I remember a few years ago, the Shugo was given a presentation, then after his talk, the QA was in, in Ruby, so that the person stand up and say the question in English, and he didn't understand, so that the one came into the, type into the Ruby code, then he said, oh. Yeah, we have Ruby in common, yeah. Do you still consider yourself a C programmer who writes, who happens to write Ruby? Not happens to Ruby, but I'm a C programmer, yeah, definitely. But I love to create and improve Ruby, and then, actually I'm not a me a C programmer just because most of my C code is rely on the Ruby runtime, garbage collectors, the object system, so that, I don't know, I'm a Ruby a C programmer. Well, actually that's a, at least I was not privy to them, many talks about M-Ruby this year. Do you wanna give a little update about what's going on with M-Ruby as well? Well, M-Ruby, yeah. Last year, the Shopify decided to use M-Ruby in their site to execute M-Ruby in their sandbox, so that M-Ruby is going to run untrusted code, so that they made some kind of bounty program for M-Ruby, and then they, the hackers for the bounty, so they submitted so many bug reports to the M-Ruby. Until last summer, I fixed literally hundreds of bugs of M-Ruby, so that for their effort, and my effort, and then M-Ruby became so stable, so that, yeah, it's. Do you see it more as a stable, just sort of project that does what it needs to do? Do you have any things that you wanna add to it, or do you consider it a really good place? Yeah, but we are planning the changing, the virtual machine are structured, and then the binary format to reduce the memory consumption because on some embedded systems has so little memory, like 100K or something, so that it's, the M-Ruby is still too big for those small computers, so that we are going to try to reduce the memory so that we can use Ruby for the more broader domains. That's cool. Let's go back over here. Thank you. Hi, Matt. I'm wondering how does the core team onboard new members, and what it takes to become a core team member? How do you get committed? How do you become committed is quite, if you submit the bug report with fix, or maybe you fix the existing bugs for, say, three, four times, so that I will give you a commit privilege, or maybe you can ask me, okay, I think I proved that I'm an excellent contributor or something so that I will give you a commit privilege, so you can be a committer that easy. After that, we don't have strict membership so that the relationship with the other committers or maybe myself would make you the very core committer. I'll ask a quick follow-up question there. It comes up on a continual basis. Is there any more thoughts of if the main trunk of Ruby is gonna stick with the version, or does there much talk about moving to get, or I personally am not crazy invested in this decision. Because I mostly just want the contributors to have the tools that work for them, but I know that people ask that occasionally. Yeah, I didn't mean to phrase that. So our central version is still subversion, which is kind of ancient things. Well, at least it's not CVS. We got past that one, right? Yeah, yeah, yeah. Not ancient, but the old one. Anyway, most of, the biggest reason is we have tons of escorts built on top of the subversion hooks, so that we rely on those small scraps. We have to rewrite many things to move on to the get. So yeah, of course we prepare the get, so that I think most of our co-committers use get in their hand, their side, so that they use the get SVN to download everything. So then, you know, they version manage in their side, then push the patches into the subversion, partially using this get SVN in reverse side. So that in that way, so we don't lose little things. So that we have less pressure about using get, yeah. And besides that, we have the mirror of the Ruby repository in GitHub, so that if you want to check out the Git repository so that you can access to the GitHub, Ruby slash Ruby, so that there's no problem. And then you can even submit to the pro request so that we can put mass pro request from the GitHub. Okay, okay, yep. Not that, excuse me, not that we don't use the GitHub issue tracker for the integration of the, to the our melodies. Right, yep, yes. Hi, no, no, it's okay. I was wondering earlier this week, you were talking about Rina Swan, Ruby is nice. And so we are nice. Yeah, yeah. And I was wondering if you have any advice or any requests to us as individuals of how we can either change or continue to do any particular things to reflect that niceness of Ruby. I don't know. But you know, I'm a mere human, so that I'm not really a nice person every day, but I pretend. We all do. Yeah, we all do. So, yeah, I asked you as a, you as a community member of the broader Ruby community, so pretend, little bit further. Fake it till you make it as it were. Okay. And then you will become that. Nice. When we moved from 1.8 to 2.0, we had a long release candidate series with 1.9, and we had a long phase where gems would run under one Ruby and not the other. We had, like in your keynote you mentioned there was breaking change and there was problems in paying with that. When you, when we get close to releasing Ruby 3, will there be a similar like 2.9 release candidate or have you, would you change anything with the way you released the one to two change? Well, might be. So that I didn't have any concrete idea yet, but the recent input from others so that make me the idea of having 2.9 right before the 3.0, that might be a nice idea. I think you've said in the past that you felt you felt that the transition within a 1.8 to 1.9 was, it was rocky at times and stuff like that, but in that you felt like you wanted, as you went forward, you always wanted it to be a gradual change. And I think we've definitely seen that within the 2.0 series. You know, just if you just take method arguments, it's just an easy example. We've seen, you know, in the new version, I can't remember which versions add which anymore, which is fine, that's sort of the point in a way, right? You know, adding optionals and adding keywords and kind of moving forward, instead of it being like, okay, like all of the stuff just appears at some future version and there's tons of changes. It's been this sort of gradual movement forward. I think that's been very successful. I presume that's what you want to kind of continue to do. So that, you know, the 1.3 and 2.0 has the feature-wise was a big step, but it's still kept compatibility. So between the 1.3 and 2.0, so that that kind of things will be pretty nice, so that we're going to do similar things. So the adding Ruby 3 will come with the new features, but it was, it should be mere addition that it should break, it shouldn't have the huge breaking change, especially with our reasons. Yeah, of course, we are going to add some kind of the breaking change in some, somewhere, several small breaking changes, but we can't help it, but we are trying to make the damage as small as possible. Do you know what those breaking changes are, or you're just saying like, I will do something that you guys won't like? Yeah. Right now I'm thinking of the keyword arguments, and then the frozen string, we tell. Oh, okay. Do you want to change keyword arguments to not always make a hash, or what was your- Not the other way, so that keyword arguments will not create the hash. Yeah, that's what I mean. Yeah, so they would work a little bit more like, say, Python's keyword arguments work, that they do a binding without it, okay. Of course, the Python, every argument of the Python could be work as a keyword arguments, and Ruby is the keyword arguments that the mandatory argument is different. Right, with the colon? Yeah. Okay. But otherwise, in other way, but it will be the real keyword arguments in the future. I think I had just have, there's no other questions here, I have just one last question that came to mind, which is, when you're back home, and you're not going to conferences, you're getting some work done, presumably. You're home with your family. I guess it's two questions. Do you go to meetups in Matsue? Do you go to Ruby meetups? And two, I had the privilege of going to Matsue at one point and knowing that they love the fact that Matsue is sort of the Ruby city in a way. Do people see you on the street, like just random people and be like, hey, it's Vance. Two questions. Okay, first question. I seldom attend to the Ruby meetup in Matsue. Okay. I'm not really a social guy. I'm glad that we're up here in front of all these people then. Yeah. Yeah. The point is, I really love to talk with other guys for to get inspiration. Sure. Yeah, but at the same time, I'm not social. So that's some kind of contradiction. Okay, the second question. Okay, I have been recognizing the street for very rare. Okay. Yeah, only four times in my life. Okay. The twice in Matsue. Okay. And in the one in the bookstore. Okay. The one in the. The computer section of the bookstore. Come on, that's a gimme. Yeah. Are you Matt? Yeah. So then he said, how can I learn programming? Oh. Did you just give him a hand in the Ruby book? Here you go. Just walk off. Yeah. Just because I'm a self-taught programmer so that I didn't learn from others. So that I didn't learn from the classes. I don't know. I don't learn from the any tutorials or classes or something. So that, okay, just go before the computer. Just type in. So I'm not, I'm very, I'm a bad teacher. Okay. Anyway, the ones, then the other occasion is the the guy recognized me in front of the city hall. Okay. Oh, are you Matt? Yeah. Then the other one is in which city I remember. In Fukuoka. Okay. Yeah. Then in the bookstore again. In front of the computer corner. The first one, the last one is in New York. Oh. Yeah, I visited New York for the business trip. So then I walk in the street with the, walk in the street with other guys. Then the guy stopping the, you know, the signal. There's the, the call told me, are you Matt? We are just coming back from the Ruby Meetup in New York. Oh. It was surprising, you know. Interesting life. Well, if there's no more questions, going once, going twice. Thank you for being here as always. Thank you for answering our questions, both real and silly. I'm talking to you, Aaron. So thank you. Yeah, thank you. Woo!