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.