Programming Language Design

Keynote: Ruby 3 Challenges (and Q&A with Matz)

Keynote: Ruby 3 Challenges (and Q&A with Matz)

by Yukihiro "Matz" Matsumoto and Evan Phoenix

The video features a keynote by Yukihiro "Matz" Matsumoto at RubyConf 2015, focusing on the theme of Ruby 3 challenges and the evolving nature of the Ruby programming language. Matz opens the session by reflecting on the Ruby community, emphasizing kindness as a core virtue and the importance of inclusivity for all developers. He presents a heartfelt gift from a colleague, Bruce Williams, in the form of a ruby gem, symbolizing community spirit.

Key points discussed in the keynote include:

- Community and Support: Matz highlights the Ruby community's strength, driven by support and kindness, which fosters collaboration and continuous improvement within the language.
- Performance Goals: He addresses the goal for Ruby 3 to achieve significant performance improvements, stating that each Ruby version aims for a 5-10% speed increase annually.
- New Features in Ruby 2.3: Matz covers exciting new methods in Ruby 2.3, including 'Enumerable::gravy', 'Hash#fetch_values', and the 'Safe Navigation Operator', designed to improve usability and manage nil values effectively.
- Future Developments: He discusses the significance of scalability, multi-core processing, and the need for a self-contained binary packaging system for ease of deployment in upcoming versions.
- Opportunities for Contribution: Matz encourages developers to engage with Ruby's community by contributing to its evolution, whether through feedback or developing new features.

Throughout the video, Matz provides insights into programming philosophies, sharing his perspective on how virtues like laziness, impatience, and hubris can motivate innovation while underscoring the importance of compassion within the community.

In conclusion, Matz reaffirms Ruby’s ongoing commitment to improvement, innovation, and collaboration, inviting all developers to be part of this journey. He emphasizes that every contribution, regardless of size, plays a role in shaping Ruby's future, and he expresses gratitude for the engaged community present at the conference.

00:00:14.269 I’m going to introduce a man who needs no introduction, which seems odd, but I’d also like to do a couple of things. In the previous years, we’ve actually done kind of sit-down fireside chats with Matz and I for a Q&A because Matz is doing his keynote at the end this year. We’re going to do the more traditional Q&A. We’ll have some handheld mics, and we’ll have some line-ups on the side for people who want to ask questions. I’ve got some questions already seated in my mind if no one gets up to ask questions, but I would really love for you all to stand up and actually ask questions. So, towards the end, as Matz is finishing up, we’ll have some volunteers out with the mics, and you’ll find them in the aisles as per usual. The other thing I would like to do is give Matz a little present.
00:01:09.290 A long time collaborator of Ruby, who is unfortunately not here this time, is Bruce Williams. He actually did all of the design for a long time for RubyConf, and he recently started an interesting hobby: gem cutting. It’s a peculiar pastime—hunched over a diamond bit for 14 hours, staring at a tiny rock—but he loves it. He wanted to make Matz a ruby, and so he did. He sent it with us, and he asked me if I would present it to Matz on behalf of the Ruby community.
00:02:07.280 Originally, the plan was to have a nice display box for the ruby, but we didn’t have time to get that together. We’re still working on it and will get that to Matz. I might actually be in Japan in about three weeks, so I might bring it to him then. It is an actual ruby, and Matz, if you’d like, you can show it off to people later on. Don’t lose it! Bruce spent 14 hours hunched over his machine cutting it, and he mentioned that it was a very hard stone to cut. So I wanted to present it to you, Matz.
00:02:58.700 It’s always wonderful having you here at RubyConf. It feels like we’ve been doing this forever, and we want to continue doing them. So we thought this was a very nice present for you.
00:03:18.010 Thank you for the present. Hello! I see we have first-timers in the audience—raise your hand if it’s your first time at the conference. Wow, many first-timers! Nice to meet you. My name is Yukihiro Matsumoto, or Matz for short. In Japanese, my name is written with these characters, and while I know it can be difficult, just call me Matz.
00:03:40.670 I’m a father of four children and a dog. While some people often treat me like a demigod or something like that, I assure you I’m not. I am, however, the creator of the Ruby programming language.
00:04:50.440 You know, in programming, it's often said that anger can be problematic or troublesome. A friend of mine, the creator of another programming language, once stated three virtues of a programmer: laziness, impatience, and hubris. Laziness pushes you to write labor-saving programs that others will find useful and to document your work so you don't have to answer many questions about it.
00:05:17.740 Impatience comes from the anger you feel when the computer is being slow, motivating you to write programs that don’t just react to your needs but actually anticipate them. Hubris, on the other hand, drives you to write and maintain programs that others don’t want to criticize. So, laziness, impatience, and hubris are all connected to this anger, and controlled anger, in moderated amounts, can be a source of motivation.
00:05:50.380 Sometimes, even though anger can lead to conflict, kindness is contagious. Ruby’s great virtue is designed to inspire niceness in the coding community. We often use the term 'Matz is nice' in the Ruby community. We believe that being nice to one another is the greatest virtue in our community.
00:06:10.980 I believe that the Ruby community is strong because of the kindness members show to each other. I must acknowledge that this conference resonates with this atmosphere of niceness and support. It's significant to emphasize that we are all part of a community together, regardless of our geographical locations or backgrounds. Regardless of where we all come from, we belong in the same community.
00:06:27.260 Now, as the lead designer of Ruby, I’ve been working with a dedicated team to ensure that each version of Ruby improves about five to ten percent in speed each year. The last major release was Ruby 2.3, which we released just last Christmas. In this upcoming holiday season, we’re excited about the new features and developments that will come with Ruby 2.3.
00:06:57.700 This progress is a collaborative effort driven by community feedback and input.
00:07:01.000 Ruby also emphasizes the importance of clarity in its syntax and functionality. We aim for efficiency while reducing complexity.
00:07:14.000 Let’s talk about some of the highlights of Ruby 2.3. Some new methods include 'Enumerable::gravy,' which stands for 'great minus V', which may confuse non-Unix users. Also, we’ve added 'Hash#fetch_values', allowing for strict retrieval of multiple values from hashes, making it easier to manage data effectively. Another exciting addition is the 'Hash to Proc' feature that transforms hashes into usable methods that can map values.
00:08:21.789 In the coming days, we are also introducing the 'Did you mean' feature. If you've ever typed a typo or misspelled a method, Ruby will suggest what you might have meant. It's akin to how Google suggests corrections, and it encourages a smoother programming experience.
00:08:41.610 We’ve also included the 'Safe Navigation Operator,' which will help manage nil values in a more intuitive way. We look forward to balancing these new contributions with our commitment to maintaining performance and stability within the Ruby framework.
00:09:03.200 Another focus for Ruby's future is to improve the speed and efficiency of our code execution. We need to address scalability as multi-core processing becomes more prevalent. The Ruby core community is dedicated to working toward out-of-the-box usability across various platforms, making Ruby more accessible to developers.
00:09:35.019 Ruby’s growth and evolution reflect the community's dedication and collective achievements. I’d like to thank everyone who contributes to our development process and continues pushing us to become an even better language.
00:09:54.460 As a community, we aim to ensure that development remains engaging and informative for all participants. We are actively seeking to engage new developers and collaborators who can assist in our mission to constantly improve Ruby.
00:10:36.900 So, let’s invite everyone interested in participating to reach out, become involved, and share your knowledge and expertise. Thank you for being a part of this incredible journey.
00:11:40.950 Now, we have about ten minutes left for questions. I genuinely hope we can have an engaging discussion. Please don't get up and leave just yet; we still have time.
00:11:56.880 To kick things off, Matz, if Ruby 3.3 by 3 meets its goals and results in three times the performance, will you consider removing features from the language that users find objectionable?
00:12:27.640 I don’t think any major compatibility issues will arise, but some adjustments will be necessary.
00:12:30.645 Thank you for your question. Now, for those of you who've been developing on GitHub, many large applications like Rails operate from repositories hosted there. However, involving Ruby core does entail some understanding of Subversion and our own unique workflow, which is a bit more complex than just GitHub.
00:12:49.120 For anyone interested in contributing to Ruby's development, I encourage collaboration across platforms. The hope is that more users will help bridge our workflows as well.
00:12:58.800 If you’re interested in contributions or getting involved, please reach out. Collaboration is our greatest strength.
00:13:25.770 Another question raised was regarding the inclusion of immutable persistent data structures in Ruby 3. This is open for consideration, as contributions meeting our criteria will be welcomed. If such structures could sufficiently benefit Ruby, I’m certainly willing to adopt them.
00:14:16.650 It's often essential that we explore what has transpired in the Ruby community within the past years. New gems, libraries, or syntax adjustments that enhance the language positively are worth considering integrating into core Ruby.
00:14:41.790 My biggest ambition remains for Ruby to provide a single binary packaging system. Something akin to a self-contained CLI that allows ease of deployment—an all-in-one Ruby binary—seems attainable.
00:15:05.280 There are significant challenges in achieving a clean integration within Ruby from broader perspectives, such as ensuring backward compatibility while innovating.
00:15:29.490 I recently encountered a project that incorporated minimal software transactional memory behavior into Ruby. I encourage anyone interested to delve into that realm as we brainstorm ways to reshape Ruby.
00:15:56.160 In conclusion, I'd like to acknowledge all contributions, big or small, as each piece aids in the evolutionary progression of Ruby.
00:16:15.950 I’m glad to see so many enthusiastic participants who are willing to assist us in technological advancements as Ruby continues to evolve.
00:16:38.401 Thank you for your time, and I look forward to the creative discussions we’ll continue having. Let's work together to make Ruby even more splendid.