Garbage Collection

Opening Keynote: Feeding the Sharks

Opening Keynote: Feeding the Sharks

by Yukihiro "Matz" Matsumoto

In this engaging keynote speech at RubyConf 2014, Yukihiro "Matz" Matsumoto discusses the importance of keeping the developer community excited and engaged, likening it to feeding sharks that need constant stimulation to thrive. He reflects on how Ruby has evolved over the years and the challenges that the community faces to stay innovative in a landscape filled with competition from other programming languages. Matz highlights several key points:

  • Community Engagement: The necessity to maintain enthusiasm among developers to prevent them from drifting towards more exciting alternatives like JavaScript and Node.js.
  • Ruby's Evolution: The journey of Ruby's development is tracked through various RubyConf presentations, covering pivotal changes such as the introduction of a virtual machine and support for multilingual text processing.
  • Importance of New Ideas: Matz emphasizes nurturing creativity through community discussions and brainstorming to keep the language relevant and functional.
  • Future Directions: The keynote turns towards the future of Ruby, particularly Ruby 3.0, addressing important topics such as concurrency, static typing, and the challenges posed by the Global Interpreter Lock that limits true parallelism.
  • Balancing Flexibility and Performance: There is an ongoing dialogue regarding the potential introduction of static typing into Ruby without compromising its dynamic and duck typing nature.

Using anecdotes from his past presentations, Matz illustrates how community-driven ideas have significantly shaped Ruby’s features over the years. He concludes by encouraging developers to collaborate and innovate together, aiming to create a vibrant future for Ruby with exciting developments in Ruby 3.0. With a call to action for continued discussion and shared creativity, he emphasizes the importance of making Ruby a more enjoyable and efficient language for all developers.

00:00:18.480 Today, I have the pleasure of presenting the first keynote on my own. Every year, I feel somewhat strange; I am a programmer, not a presenter. However, over the last 20 years, things have changed significantly.
00:00:25.920 This year, I want to talk about feeding sharks, which represents the community's need for constant engagement. Our developer community is much like a shark; if we lose interest, we will drift away to something more exciting.
00:00:39.960 Ruby was quite interesting back in the day, but now it can feel boring if we don't innovate. This compels us to explore other programming languages, frameworks, and technologies like JavaScript or Node.js.
00:01:01.719 To attract and retain the community, it's crucial to demonstrate how developers can earn a living with Rails, enlighten them on the philosophy behind the language design, or showcase the potential future of technology.
00:01:10.440 In the past, I have given many presentations at Ruby conferences about the future direction of Ruby. For instance, at RubyConf 2001 held in Tampa, I presented to about 35 attendees. I discussed the introduction of a virtual machine to improve Ruby's performance.
00:01:22.360 At that time, the Ruby interpreter was quite naive, relying heavily on an abstract syntax tree. I wanted to show that introducing a virtual machine would significantly boost performance, which indeed came true in 2007 due to the hard work of Koichi Sasada.
00:01:38.000 The following year at RubyConf 2002 in Seattle, I outlined a vision for multilingualization and the native thread and generational garbage collection. Back in 2001, Unicode was not widely adopted, and many programming languages, like Java, adopted Unicode to represent a variety of characters.
00:01:54.959 At that time, Unicode only supported 16 bits, which meant only 60,000 characters, making it insufficient for the diverse character sets required globally. In Japan, for example, we had to define over 6,000 distinct characters, including those from Chinese.
00:02:10.599 Thus, many programming languages, including Ruby, began to incorporate support for various encodings to handle these character complexities. This evolution, including multilingualization and garbage collection, became a reality over the years.
00:02:28.480 By RubyConf 2003 in Austin, Texas, I shared many wild ideas, such as local variable scopes, multiple assignments, and keyword arguments. Some of these concepts became a part of Ruby's design, enhancing language functionality.
00:02:44.680 In 2006, I presented on the bike-shed argument, discussing the importance of nourishing new ideas through brainstorming. It’s essential for us to encourage creativity and innovative thinking.
00:03:01.240 In RubyConf 2007 in Charlotte, North Carolina, I focused on Ruby 1.9, which represented a significant leap from Ruby 1.8. My presentation covered language improvements and performance gains.
00:03:15.520 In the following years at RubyConf 2008 and 2009, I continued to explain various philosophies and concepts behind Ruby. By 2010, I presented new ideas about traits and further refinements to the language.
00:03:32.760 Throughout these conferences, I had the privilege of witnessing the evolution of Ruby alongside eager members of the programming community. Discussions about new features kept momentum going.
00:03:45.960 Some ideas, like the stabby lambda, garnered significant interest and eventually became integral to Ruby, illustrating how community input can shape development.
00:03:58.880 As the Ruby community continued to grow, we highlighted the importance of reflecting on ideas introduced over the years. Even if some ideas were eventually set aside, it is paramount that we keep discussing our aspirations for the future.
00:04:14.800 Today, I want to navigate the conversation towards Ruby 3.0, its potential features, and significant areas like concurrency and static typing. It's essential for us to explore these topics further.
00:04:30.400 One of the pressing concerns in Ruby development is the Global Interpreter Lock, which hampers true concurrency. While many discussions are ongoing, we strive for better performance through advanced technologies.
00:04:49.440 Simultaneously, JavaScript and other languages are emerging with different models of typing and performance. We need to understand how Ruby can improve while still embracing its dynamic nature.
00:05:06.640 The conversation around static typing and optional static typing continues, and I believe there are ways to introduce such methods without significantly changing Ruby's core principles.
00:05:21.760 Static typing can enhance performance, documentation, and compile-time checks, but it’s crucial to maintain Ruby’s flexibility and duck typing nature.
00:05:35.760 While the introduction of soft typing could bridge gaps between static and dynamic typing, we should approach the evolution of Ruby carefully, respecting what sets it apart.
00:05:57.920 We have made considerable strides in implementing various enhancements across the last decade. The core idea is that static typing can coexist with the principles of duck typing in Ruby.
00:06:12.040 As we reflect on these enhancements, it is essential for us to think about what needs to be improved further and how we can help each other grow as developers.
00:06:24.880 I encourage everyone to engage in this discussion about the future of Ruby. Let’s continue to innovate, share ideas, and build a community that thrives on collaboration and creativity.
00:06:40.800 Finally, let’s prepare ourselves for a bright future with Ruby 3.0. We are committed to presenting exciting new features and improving efficiency in programming to enhance the overall developer experience.
00:06:56.640 Thank you for being such an important part of this journey, and I look forward to exploring these ideas together. Let’s make Ruby an even more enjoyable language for everyone!