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!