Talks

Keynote: Ruby after 25 years

Keynote: Ruby after 25 years

by Yukihiro "Matz" Matsumoto

Introduction

In this keynote speech delivered at the EuRuKo 2018 conference, Yukihiro Matsumoto, the creator of the Ruby programming language, celebrates Ruby's 25th anniversary and reflects on its journey, challenges, and future direction.

Key Points Discussed

  • Diversity of the Ruby Community: Matsumoto expresses appreciation for the diverse backgrounds of Ruby developers at the conference and highlights the communal love for Ruby, despite language barriers.

  • Origins of Ruby: Created in 1993, Matsumoto aimed to design a language that was fun to use, integrating his experiences with Perl and Lisp while seeking to improve scripting capabilities.

  • Growth of Ruby: The initial adoption was slow, with only one user initially. As Ruby became available online, its community quickly expanded, reaching over ten thousand users by 2000 and growing to a global user base of over a million.

  • Ruby Conf: The first RubyConf was held in 2001 with modest attendance, while recent events draw hundreds, reflecting Ruby's growing popularity.

  • Challenges of Language Development: Matsumoto discusses common challenges faced by programming languages, citing Ruby 1.9's incompatibility with 1.8, paralleling issues seen in other languages like Python and PHP.

  • Importance of Backward Compatibility: He emphasizes the value of compatibility for user retention, noting that developers might switch to more stable alternatives if Ruby does not maintain compatibility with previous versions.

  • Community Engagement: Engaging the Ruby community is critical for progression. The risk of users migrating to competing languages necessitates continual development while acknowledging and addressing user needs.

  • Balancing Progress and Stability: Matsumoto reiterates the challenge of innovating Ruby while ensuring that existing users are not adversely affected, emphasizing the importance of gradual improvements.

  • Ruby's Performance: While Ruby may not be the fastest language, its user-friendly design and comfort level make it appealing for most applications.

  • Future Focus: Matsumoto calls for ongoing improvements in Ruby's portability, performance, and productivity while prioritizing user compatibility to foster community growth and retention.

Conclusion

Matsumoto concludes with a call for kindness and support within the Ruby community, indicating that respecting existing compatibility while implementing gradual changes will be vital for Ruby's sustained progress and vibrancy as a programming language.


00:00:11.629 Well, good morning, everyone.
00:00:25.699 I’m Yukihiro Matsumoto, the creator of the Ruby language. I'm very happy to be here because EuRuKo is one of the most diverse Ruby conferences. People come from many countries, and we all have different native languages like I do in Japanese. Most of you do not speak Japanese, and yet here we are, coming together with different backgrounds, histories, and preferences; but we share a love for Ruby.
00:00:48.200 Today, we celebrate the 25th anniversary of Ruby. I started developing Ruby on February 24, 1993. On that day, I named it Ruby. The name is quite important; software is some kind of virtual entity, and I wanted the name to reflect that concept. That’s a bit of background. I first conceived of Ruby for fun because I had a great interest in programming languages since I was a kid. I actually started programming when I was fifteen.
00:01:25.709 Most of my friends had a desire to create software like games or applications, but rather than wanting to create software, I wanted to design my own programming language. However, back in the 1980s, we had a problem: there was no internet. We could only learn from books and magazines.
00:01:38.129 Knowledge was very limited for high school students, so I couldn't create my language. Instead, I attempted to write ideas for my programming language on paper. Ten years later, I studied computer science at university. After graduation, I worked as a software developer, where I honed my skills. In 1993, I decided to create my own programming language, hoping to create a language like Perl but better.
00:02:14.129 The reason I created Ruby wasn’t specific; I just wanted to create a language. I had significant experience with C programming, so I wanted to build something unique. It’s nearly impossible to create a language that surpasses C due to its dependencies on operating systems and target architectures. Instead, I focused on to scripting, utilizing languages like shell and Perl.
00:03:01.889 I aimed to develop a better scripting language that I could use for my tasks. I wanted to dogfood my product, combining concepts from Perl and Lisp to create Ruby. At the time of the Ruby's initial release, there was just one user: me. However, by December 21, 1995, I made Ruby available on the Internet.
00:03:38.129 A few weeks later, I created a mailing list to discuss the language, and many people joined. Within two weeks, we had over two hundred members. By the year 2000, the number of Ruby users had surpassed ten thousand.
00:04:13.770 In 2001, we held the first RubyConf in Tampa, Florida, with over thirty attendees. Fast forward to last year as we had RubyConf in New Orleans, USA, hosting around 700 attendees, and this year I'm unsure how many we have, but I hope it’s even more.
00:04:54.530 I wish I could speak several languages, including German. I’m not sure how many attendees we have, but it’s at least a few hundred. The total number of Ruby users worldwide is probably over a million.
00:05:06.100 We went from just one user to over a million users! Ruby has become popular and is now used everywhere—from small projects to large enterprises. The numerous publications about Ruby have made it stable. As a language designer, I’ve made mistakes, just like many others in this field. I want to fix those mistakes, and over the years, I’ve made significant changes.
00:05:56.670 For example, over ten years ago, I introduced Ruby 1.9, which was not compatible with Ruby 1.8. Other languages, like Python, have experienced similar issues; Python 3 is significantly different from Python 2, leading to struggles with adoption. The same happened with PHP, which faced challenges with PHP 6, leading them to reset to PHP 7. Major programming languages sometimes see shifts that don’t gain traction.
00:06:47.800 The community surrounding Ruby must continue to grow, as any minor change can cause major backlash. Imagine if your application crashes due to a new Ruby version. Users want compatibility to keep their applications running, and despite improvements, maintaining backwards compatibility is crucial to prevent alienating the user base.
00:08:09.589 We cannot operate under an expectation of loyalty as it's an open-source community. Users choose Ruby for various reasons, but they can easily transition to a better alternative if they find one. Therefore, as creators, we must keep the community engaged. If we don’t, users may shift to other languages, and we risk losing our community.
00:08:48.070 We must keep moving forward with Ruby. Progression is essential otherwise; the language and its community will not survive. It’s a contradiction to keep compatibility without hindering progress. As a community, we can't stop swimming; we must continuously progress to stay relevant.
00:09:47.900 Once again, we face challenges like those seen with other programming languages during transitions, such as Python 2 to Python 3, where many users remained on the older version despite the improvements. Creating and maintaining a programming language is intricate; we must not let our users down with sudden changes or incompatibilities that might vastly affect their applications.
00:10:54.360 As we strive for stability and enhancements, Ruby must balance between adding new features and catering to existing users. Our goal in development is to ensure that users don’t feel punished for those changes. Sometimes, fixing errors can inadvertently affect users negatively, which is not ideal. It’s vital for us to maintain compatibility and nurture the community.
00:11:56.630 In terms of performance, Ruby isn't the fastest or the most powerful language, but it's good enough for most cases. We often use Ruby because it's comfortable—thanks to its user-centric design. Being nice brings power, so I encourage everyone to be supportive and consider the experience of potential users.
00:12:58.210 Looking forward, we need to focus on portability and improvements in performance and productivity for the Ruby language. However, compatibility remains paramount—not because we fear change but because it fosters progress.
00:14:02.460 Our community isn’t just about the language; Ruby is also about the libraries, gems, and applications constructed upon it. By working together, we can make Ruby even better. In summary, let’s strive to be nice to each other, as it can create a stronger and more supportive community.
00:32:49.430 I see you're doing a great job, but I have some bad news: the break is short, just 10 minutes instead of 15, so please be quick.
00:33:11.520 You can drink from the tap here in Vienna; it's perfectly safe. Please use reusable cups to help save the world. See you later!