Talks

Fireside Chat: Q&A with Matz

Fireside Chat: Q&A with Matz

by Evan Phoenix and Yukihiro "Matz" Matsumoto

The video features a fireside chat Q&A session with Yukihiro "Matz" Matsumoto, the creator of Ruby, moderated by Evan Phoenix at RubyConf 2017. The discussion primarily revolves around Matz's experiences with Ruby, insights on the current state of Ruby, its future directions, and community dynamics.

Key Points Discussed:
- Community Dynamics: Matz expresses enthusiasm about meeting both newcomers and familiar faces at the conference. He emphasizes the importance of the Ruby community and its inclusivity.
- Type Checking in Ruby: Matz discusses the experimental nature of type-checking tools in Ruby. He mentions ongoing efforts by community members to introduce statically typed features, such as those in TypeScript.
- Core Team Structure: Matz explains that the core team of Ruby includes around 20 active contributors and nearly 100 committees responsible for various aspects of Ruby development. Monthly work meetings in Tokyo foster collaboration.
- Concurrency Challenges: Matz highlights the need for modern concurrency models in Ruby, referencing the work on fibers and their potential to enhance Ruby’s concurrency capabilities.
- Ruby’s Evolution: Matz reflects on his pride in Ruby’s concepts, such as blocks, while also expressing regret regarding the language's threading model.
- Inspiration from Other Languages: Matz points to languages like Elixir and TypeScript as sources of inspiration for future Ruby features.
- Features and Release Plans: Insights are shared on future Ruby versions, with discussions on static type checking, the potential introduction of macros, and improving performance and memory management.
- Onboarding New Contributors: Matz describes the informal process for new contributors to become core team members, emphasizing collaboration and engagement.
- Adapting to Modern Development Tools: Acknowledgment of Subversion as the current version control system, with mention of Git usage among developers for local workflows.
- Community Attitude: Matz encourages a nicer community culture among Rubyists as a key takeaway from the session, reflecting on the shared bond that Ruby provides.

In summary, the session provided valuable insights into the Ruby programming language, its community, and Matz's vision for its future, urging members to engage positively and collaboratively.

00:00:11.710 Matz normally doesn't take questions during the Q&A. Years ago, at the keynote, we usually covered the idea that people often have lots of questions.
00:00:18.260 Anything someone asked him in the hallway is probably something that other people would be interested in hearing as well. That’s why we've always organized this time at the end of RubyConf to ask Matz questions.
00:00:30.890 I have questions from my own interests that we can use to get started, but I expect you to run this for the most part. I'll help moderate.
00:00:37.640 There are microphones over there and over here. I would ask you to line up, and I will call on you as you get up.
00:00:44.750 With that, let's go ahead and get started. So, how's Ruby been for you this year?
00:00:50.300 Yeah, I met so many first-timers this year. At the same time, I met very familiar faces like Chad. It's odd; it's like a yo-yo.
00:01:07.310 We have as many new people, but we still have that old base. I was curious earlier, how many Ruby conferences, or I guess conferences in general, do you attend a year?
00:01:15.409 Outside of Japan, I attended five conferences this year.
00:01:30.350 Is that a lot? Is that an average for you?
00:01:36.859 Mostly it averages to about five conferences a year. Do you go to other kinds of conferences as well?
00:01:42.829 No, only Ruby conferences.
00:01:59.270 No questions yet? You guys have nothing? Oh, look, we were waiting— I just had to poke and prod it.
00:02:07.459 It's always like that; once it gets going, there will be lots of talk about.
00:02:14.150 We are still hearing a lot about type-checking and all those kinds of ideas in Ruby. Have you thought any more about whether it's a serious thing that you think Ruby will get in the unknown amount of time?
00:02:26.970 Or is it still a sort of wait-and-see situation for many of those experimental ideas?
00:02:33.409 Yeah, it's still an experimental idea.
00:02:38.849 People like Sootoro, who gave the type-checking session in this conference, are working on some kinds of relatively useful type-checking tools.
00:02:46.470 Also, someone from JetBrains is working on generating runtime type information from test execution.
00:02:52.680 The goal is to generate prototype or return type information from actual runtime type information. Therefore, by combining these technologies, we can have something closer to TypeScript's definition files.
00:03:07.590 So they'll be gradually introduced, partially just statically typed.
00:03:14.400 You're thinking about it in terms of using these tools to validate our code base, like checking if our code is doing what it's supposed to do. But maybe we won’t bother to do all that type checking once we get into production because it might slow things down and isn't necessary.
00:03:36.030 Okay, we’ll start over here.
00:03:41.699 Yes, about how much time do you spend coding versus project management, conferences, and things like that? Do you feel like it’s a good combination, or do you miss being less responsible for all the things that go along with Ruby?
00:03:59.069 The ratio I try for is half programmer and half designer, but the actual ratio is more like 20% programming, 20% design, and 60% doing something else.
00:04:12.989 This includes reading, writing emails, Twitter, or something like that. So, yes, I should have been more productive.
00:04:28.849 I know the feeling. I think another good follow-up question is about the core team. Since we have a lot of new people— could you give an idea of what the core team looks like right now?
00:04:42.449 I know a lot of new people see many contributors doing various things, and I know that back in the 1.8 days, that wasn't true.
00:04:53.339 So, who’s on the core team now, and who do you feel is doing a lot of the work these days?
00:05:02.759 We don’t have the same kind of related membership on the core team that other projects do. We granted some contributors commit privileges; we call them committees.
00:05:39.419 So we have nearly a hundred committees for Ruby. Many of them have some role in the community— like maintaining documentation or improving reference documentation.
00:05:45.900 We do have a very active group of contributors working on the core language itself, as well as the implementation of the virtual machine. There are less than 20 active contributors directly involved with that.
00:06:11.370 Once a month, we have a Ruby work meeting in Tokyo, and we usually have about ten or so people attending.
00:06:43.569 Hi Matz, it appears that you’ve become a podium and you’re looking well. So, on the design side, what other language designers do you find interesting right now and what's interesting about the work they're doing?
00:07:05.110 Yes, Elixir and TypeScript are interesting. TypeScript has static typing for dynamic languages, like Java, while Elixir focuses on distributed and concurrent programming.
00:07:12.639 I can ask a question about concurrency and actors. Yes, I can. I didn't talk about that this year, but we have three major challenges for Ruby 3.
00:07:36.009 The first one is performance, which is essential. The second is concurrency. Back when I started Ruby over 25 years ago, we only had one CPU per computer, so concurrency was all about context switching— it wasn’t for performance reasons.
00:08:15.669 These days, multi-threading is common for performance, but this creates more challenges like deadlocks and race conditions because we have multiple cores. We need more modern models for concurrent programming.
00:08:54.899 Koichi Sasada is working on something called fibers, isolated execution bodies over the threads.
00:09:01.920 You can create new fibers, which are separated objects that can only communicate with each other through channels. You can send objects between different fibers, but only immutable objects can be passed between them.
00:09:40.199 So, Quincy is working on that, but I'm not sure about the latest state of its development.
00:10:10.559 If you had total access to break everyone's code, what's one thing in Ruby you wish you could change? And what's the one thing in Ruby that you're most proud of?
00:10:25.380 As for pride, I am proud of the invention of blocks, which is a vital concept in programming. I regret many things, but one of the biggest regrets is the threading model.
00:10:46.720 Although it seemed interesting at the time, it hasn’t proven to be the ideal concurrency model. In the beginning, I borrowed too many ideas from existing languages like Perl, which resulted in many odd variables.
00:11:31.010 Threads were introduced in version 1.0, and I think it was a significant addition.
00:12:02.970 So, what’s your motivation for deciding which features to ship for the next Ruby version? Is it still just that Christmas is coming?
00:12:56.090 Well, time frame is one motivation. I feel like Ruby is one of my children. As a parent, it’s natural to nurture them, so I’ve been nurturing Ruby for the last 25 years.
00:13:31.669 The ongoing conversation is whether I want to continue this forever. Yes!
00:14:11.810 One of the languages you mentioned for inspiration is Elixir. What version of Ruby are we going to introduce macros? Erin has asked this question every RubyConf for five years.
00:14:45.540 The first answer is never; the second answer is that we have a library, a creeper, which can generate an abstract syntax tree from Ruby or other languages.
00:15:07.350 With the code-generating library from the AST, we can separate the AST from the code generator so that you can create AST from your favorite language.
00:15:22.860 Then, the code generator will use Ruby as the backend. In that sense, you can utilize your version of Ruby or even add macros to your own language. That’s my big idea, but I don’t know if that’s feasible.
00:15:53.580 People have talked a lot about static types in recent years. What do you think about interfaces? Like, being able to say this method must take an object that responds to these methods?
00:16:04.830 We are going to add static type checking that behaves like structural typing, rather than nominal types. Such static type checks will function as interfaces like those in Go and Swift.
00:16:36.429 We won’t have nominal checks like: this method takes a string, indicating it can only accept strings.
00:17:02.970 It’s heartening to see many Japanese Rubyists here.
00:17:09.689 Thank you to everyone who came such a long way. I often see Japanese Rubyists separated from other Rubyists, and I wish we could interact more.
00:17:24.130 Learning Japanese comes to mind as a first step, but what can we do to better understand the Japanese Ruby community?
00:17:47.509 Would you like to be an ambassador for the Japanese Ruby community, or do you think someone else should take that role?
00:18:18.180 I think Nobu would be a better ambassador; he loves to talk.
00:18:35.030 Akira has been a good ambassador for several years. It would be nice to find ways to bring Rubyists together in these conferences.
00:18:58.810 The community spirit among programmers is similar worldwide.
00:19:04.740 However, one point to note is that Japanese people tend to struggle with English, creating a language barrier.
00:19:36.740 But we all speak Ruby!
00:19:51.009 Several years ago, Hidetoshi gave a presentation, and during the Q&A, questions were asked in Ruby. A person stood up to ask a question in English, but Hidetoshi didn’t understand.
00:20:23.440 So they translated the question into Ruby. At least we have Ruby in common!
00:20:53.311 Do you consider yourself a C programmer who writes Ruby?
00:21:09.670 Definitely! But I enjoy creating and improving Ruby.
00:21:27.240 My C code relies on the Ruby runtime and garbage collector.
00:22:05.210 Last year, Shopify decided to implement mRuby in their site, allowing execution of untrusted code.
00:22:21.200 They created an environment where hackers could submit bug reports, and I fixed hundreds of issues—this made mRuby much more stable.
00:22:53.840 We’re planning to change the virtual machine's structure and binary format to reduce memory consumption.
00:23:13.050 Some embedded systems have very little memory, like 100KB, where the memory footprint for Ruby is still too large.
00:23:33.067 Therefore, we want to optimize memory so we can broaden the range of devices that can run Ruby.
00:23:47.630 How does the core team onboard new members? What does it take to be a core team member?
00:24:04.540 To get commit access, you should submit a few bug reports or fix existing issues multiple times. If you can prove you’re an excellent contributor, I will grant you commit privileges.
00:24:24.031 We don’t have strict membership criteria; your relationship with other committee members will help you out.
00:24:50.750 I have a follow-up on the main trunk of Ruby. Will it stick with Subversion, or is there talk of moving to Git?
00:25:14.550 As of now, we still use Subversion, which feels ancient. But we rely on existing hooks.
00:25:39.659 Most core developers use Git on their side. They download everything using git and manage branches in their local environments.
00:26:05.420 They’ve been pushing changes to Subversion while keeping their local repositories updated. It’s a way to avoid pressure about moving to any system.
00:26:35.580 We also have mirrors of the Ruby repository on GitHub, so contributors can check out the Git repository there.
00:27:00.170 However, we won’t use GitHub’s issue tracker for integration into our mailing list.
00:27:18.740 Earlier this week, you discussed Ruby's nice philosophy. Do you have any particular advice or requests for individuals that might help reflect that philosophy?
00:28:09.990 While I’m not perfect or nice every day, I suggest that as members of the Ruby community, you should try to embody that nicer attitude.
00:28:21.210 A little faking it can lead to actually being nicer!
00:28:43.080 When transitioning from Ruby 1.8 to 2.0, we had a long release candidate, and there were breaking changes.
00:29:11.000 As Ruby 3 nears release, will there be a similar leaning towards buggy release candidates, or will you change that methodology?
00:29:36.450 There isn’t a concrete plan yet, but the idea of having a 2.9 as a test phase before Rio 3 might be worth considering, learning from the inputs to fine-tune our approach.
00:30:24.950 We strive to introduce new features while keeping compatibility with previous versions as much as possible, although small breaking changes may still occur.
00:30:45.190 Key arguments are a potential area for changes, as we want to improve usability while reducing the impact on the user experience.
00:31:02.400 When you're home and not at conferences, do you attend Ruby meetups?
00:31:33.000 I seldom attend the meetups as I'm not a very social person, but I do enjoy talking with others for the inspiration it brings.
00:32:07.010 I’ve been recognized on the street a few rare times, usually the last any of them were during conferences or bookstores.
00:32:23.310 Surprisingly, it’s never happened many times; maybe about four instances altogether, with inquiring minds wanting to learn programming.
00:33:06.890 I appreciate those moments, answering people who have an interest in Ruby!
00:33:20.468 Thank you for joining us today. Let’s give a round of applause for his insights!