Talks

Opening Keynote: Ruby Progress Report

Opening Keynote: Ruby Progress Report

by Yukihiro "Matz" Matsumoto

The opening keynote of RubyConf 2019 featured Yukihiro "Matz" Matsumoto, the creator of Ruby. Matz addressed the Ruby community regarding the language's current status and future directions. He emphasized Ruby's popularity, ranking it 11th in the TIOBE index, but warned about the necessity of vigilance against decline.

Key points discussed include:
- Pleasure of Programming: Matz stated Ruby's primary strength lies in the joy it brings to programmers, contrasting the predominant focus on efficiency in the 1990s. He highlighted the joy-driven productivity that Ruby fosters.
- Community Importance: The success of Ruby is heavily tied to its vibrant community. Matz stressed the need to nurture this community by attracting newcomers through technology, job opportunities, and an inclusive atmosphere.
- Ruby 2.7 and Ruby 3.0: He announced the upcoming release of Ruby 2.7 and the planned release of Ruby 3.0. Key features include pattern matching, simplified keyword arguments, improved garbage collection, and advancements in the interactive Ruby shell (IRB).
- Future Development: Looking ahead, Matz discussed enhancements in concurrency models, static analysis for type checking, and a commitment to maintaining Ruby’s character while evolving its capabilities.
- Call to Action: Matz encouraged the community to remain engaged, continuously improve Ruby, and work together to ensure its continued relevance.

Matz concluded by expressing gratitude for the community's passion and commitment to Ruby, underscoring the collective responsibility to keep refining the language for a joyful programming experience.

00:00:14.100 Good morning, everyone! Thank you for being here.
00:00:19.510 I always feel nervous before you every year. This is Ruby, after all, the canonical Ruby conference, and this is the 19th conference.
00:00:28.119 Thank you for coming. I am very glad to see so many first-timers. Welcome!
00:00:37.180 I’m here to talk about Ruby. This is a Ruby conference, and as you know, Ruby is quite a popular programming language. It ranks 11th in the TIOBE index out of 150 programming languages, and 8th in the Red Monocle index. It remains quite popular.
00:00:54.280 However, nothing lasts forever, and we must be vigilant about potential extinction. So what makes Ruby great? I believe the best aspect is the pleasure of programming. In the 1990s, programming language designers focused heavily on efficiency, as computers were relatively slow back then. However, as a hobby programmer, I started creating Ruby in 1993, emphasizing a focus on humanity.
00:01:20.709 Most programming languages at the time prioritized machine performance over human enjoyment. I was a professional programmer with a hobby of designing programming languages, which led me to create Ruby just for fun. I didn’t expect such a large audience for it.
00:01:40.049 Since Ruby was a personal project without customer requirements or specifications, I was free to focus on what I enjoyed. I enjoyed implementing Ruby and designing the language, and in that way, I think I catered to enthusiastic programmers.
00:01:54.930 Creating Ruby as free software allowed others to use it freely without cost. People began using it for scripting, gaming, building desktop applications, and increasingly for web applications. During its early years, Ruby's framework, Ruby on Rails, gained significant popularity.
00:02:15.349 Ruby stands out as a pure object-oriented language that is modular, powerful, and often more readable than Perl. The productivity seen in Ruby programming can largely be attributed to the joy it brings to its users.
00:02:44.520 That joy leads to motivation, which drives productivity. While Ruby has many convenient features that aid productivity, the essence of Ruby’s success lies in how it fosters this motivation through enjoyment.
00:03:04.589 Moreover, we have a wealth of resources at our fingertips thanks to the Ruby community, where countless libraries, frameworks, and gems have been created. The Ruby community is truly the key to its success and popularity.
00:03:28.250 Ruby does exist alongside other programming languages like Erlang, which is also well-designed. However, the community surrounding Ruby is even more crucial because without community support, a great programming language can flounder.
00:03:48.250 It’s essential to attract new members to our community; welcoming newcomers is a significant indicator of Ruby's health and success. To nurture this, we need to ensure we have good technology, job opportunities, and a welcoming atmosphere.
00:04:17.660 The open-source community is like a shark; we must keep pushing forward because we can’t expect people to stay loyal for free. Most of you are here at this conference because you felt that Ruby was worthwhile and wanted to learn more.
00:04:49.560 However, you could easily explore alternatives such as Python, PHP, or JavaScript at any time. Therefore, it’s crucial for us to continuously attract and retain our audience with good technology, community engagement, and opportunities.
00:05:09.380 We pride ourselves on being an open community. While Ruby is often recognized as an open-source language, I personally align with the free software ideology, though I appreciate the welcoming nature implied by the term 'open'.
00:05:31.140 As a community, we collaboratively shape the future of Ruby, and it’s not solely my effort that dictates that future. Speaking of future versions, I'd like to talk about Ruby 2.7 and the upcoming Ruby 3.0.
00:06:13.750 As a Christmas gift, we plan to release Ruby 2.7 next month, and our commitment is to ensure that Ruby 3.0 launches next year.
00:06:27.300 Although some members of the development team, myself included, have concerns about meeting release deadlines, we are determined to make this happen unless extreme circumstances arise.
00:06:57.070 In the eventuality that we can't meet the release date, we might have to forgo certain announced features, but rest assured, Ruby 3.0 will indeed arrive next year.
00:07:10.620 Next month, Ruby 2.7 will introduce some nifty features. Ruby 3.0 will not be a revolutionary leap, but it promises enhancements.
00:07:45.990 One new feature is pattern matching, similar to what many functional programming languages offer. It can be particularly useful for destructuring data structures like JSON.
00:08:10.990 Currently, in Ruby, retrieving the children of a person requires verbose calls, but pattern matching will allow you to express this in a more concise manner.
00:08:30.650 Although I must admit the initial implementation of pattern matching in Ruby 2.7 may be slow, it is still an experimental feature that I encourage you to try out.
00:08:52.370 We also plan to refine keyword arguments. I acknowledge that previous designs had their challenges, particularly around optional arguments and hash arguments.
00:09:11.370 This means we’ll be making changes to simplify the behavior of keyword arguments to enhance clarity and ease of use.
00:09:31.820 New features in Ruby 2.7 will include improvements to number parameters and arguments forwarding, while ensuring compatibility with previous Ruby versions.
00:09:49.270 Additionally, we'll introduce enhancements to the garbage collection process to manage memory better, leading to reduced consumption.
00:10:12.910 These improvements will be manual, allowing developers to compact memory when necessary. This aligns with the ongoing focus on performance.
00:10:38.950 We’re also enhancing IRB (Interactive Ruby), introducing features to allow for multiline editing and improved usability when working with references.
00:11:06.600 Furthermore, the Ruby community will benefit from a faster fiber handling and improvements to the JIT (Just-In-Time) compiler.
00:11:28.300 Improvements overall will allow for aspiring high-performance applications while continuing to add useful methods to the Ruby language.
00:11:51.250 Now, while Ruby won't have a piping operator like F# or Elixir, we remain committed to refining Ruby's behavior while considering community expectations.
00:12:10.130 Additionally, we are investigating the introduction of a method reference operator while ensuring that we retain the character of Ruby as a programming language.
00:12:29.410 The future endeavors will play a significant role in how we shape concurrency and performance in Ruby, enabling us to keep pace with evolving technology.
00:12:46.860 We will explore concurrency models to enable better performance across single-core and multi-core systems, improving Ruby's adaptability to various use cases.
00:13:07.420 As we plan forward, we aim to introduce features that promote robust error handling and make it easier for developers to write clean, maintainable code.
00:13:26.090 Static analysis is also a vital focus, allowing for type checking without needing annotations, leading us closer to a more efficient development process.
00:13:43.210 Ultimately, the aim is to enhance the current Ruby experience while keeping the language simple, joyful, and productive.
00:13:58.420 As a community, we must continuously improve Ruby; if we stagnate, we risk losing our relevance. Together, we can continue to make Ruby a better language.
00:14:16.460 I encourage everyone to stay engaged, to keep being Rubyists, and to work together towards a happier future for Ruby.
00:14:34.760 Thank you for your participation and let’s continue to evolve Ruby together.