Programming Languages

Keynote: 30 Years of Ruby

Keynote: 30 Years of Ruby

by Yukihiro "Matz" Matsumoto

In this keynote presentation titled Keynote: 30 Years of Ruby, delivered at RubyConf TH 2023 in Bangkok, Yukihiro 'Matz' Matsumoto reflects on the journey of the Ruby programming language over the past 30 years. The talk covers several key lessons learned during Ruby's development, emphasizing the significance of community, naming, initiative, and motivation in creating a successful programming language.

Key points discussed in the talk include:

  • The Origin of Ruby: Ruby was created in 1993 as a personal project out of boredom during discussions about a new project. Matz emphasizes the importance of choosing a good name for programming projects, which he considers one of the best decisions he made.
  • Motivation and Initiative: Matz discusses how his passion for programming languages led him to create Ruby, even working on it secretly during tough economic times and a lack of opportunities at his job. He highlights that taking initiative can lead to significant developments.
  • Backing Up Work: He shares a personal experience of losing work without backup during a system crash, stressing the importance of maintaining version control and backing up work.
  • Community Contributions: The talk underscores the essential role of the Ruby community in its evolution. Matz credits community members for enhancing Ruby, creating tools, libraries, and fostering an environment of collaboration.
  • Embracing Change: Matz mentions how Ruby has evolved with changing technologies, like the introduction of JIT compilers, to stay relevant. He also stresses how companies adapt and evolve their services, as seen with Twitter's transition from Ruby.
  • Continuous Improvement: The community's commitment to improving Ruby's performance is vital, with goals of significantly enhancing speed and concurrency.
  • Community Engagement: Matz emphasizes the importance of building strong relationships within the Rub community, promoting kindness and constructive feedback, and encourages participation in meetups and conferences.

In conclusion, Matz urges the Ruby community to keep moving forward, maintaining engagement, and contributing to enhance Ruby for future generations. The lessons drawn from the history of Ruby can serve as guidance for developers embarking on their programming projects, highlighting the impact of community and collaboration on the success of technology.

00:00:07.759 Thank you. As Matz may have introduced me, I started Ruby 30 years ago, in 1993.
00:00:16.960 Yes, 30 years.
00:00:22.439 Today, I am going to share with you lessons from 30 years of Ruby's history.
00:00:29.679 I named Ruby on February 24, 1993.
00:00:35.320 At that time, I was discussing a new project with my friend. I was kind of bored and decided to start my pet project.
00:00:43.960 I will explain the details later, but I needed to create my own programming language.
00:00:51.000 We needed some kind of code name, so I discussed it with my friend. The candidates were Ruby, Corona, and Tish.
00:01:03.960 During our discussion, my colleague proposed naming the new language after the gemstone Ruby.
00:01:10.799 Luckily, Tish was dropped; if I had made a mistake, we might be attending the Tish conference, which would not have been appealing.
00:01:16.280 The remaining candidates were Ruby and Coral.
00:01:21.560 I thought about the names, and Ruby sounded more beautiful, more appealing, and shorter.
00:01:29.200 Thus, I picked the name Ruby, and I believe it was the greatest choice of my life.
00:01:34.520 So, lesson one: choose good names for your projects, companies, services, functions, or variables.
00:01:40.240 Naming is important because software lacks a physical entity; it's a virtual construct.
00:01:48.840 Software represents concepts, so we need to name them properly.
00:01:55.399 We should think in our native languages, whether it's English, Japanese, Thai, or any other language.
00:02:00.680 We need to represent important concepts in clear terms or names.
00:02:07.920 When starting a new project, choosing a good name is crucial.
00:02:17.599 The definition of a good name can vary for different entities.
00:02:23.920 For example, Ruby has nothing to do with programming language terms, but its beauty and appeal contributed to the project's success.
00:02:30.400 You might name your project something fantastical, like Kaminari or Umami in Japanese.
00:02:36.599 Proper naming holds great power. The name can determine the fate of the language, the software, and the project.
00:02:42.239 Thus, the lesson here is that naming is extremely important.
00:02:50.000 I have often been asked why I created Ruby. Initially, it started as a hobby. In high school, I dreamed of creating my own programming language.
00:03:06.879 I began programming at age 15, using Basic, not Visual Basic, but the original Basic.
00:03:12.400 My first computer was the size of a pocket computer, and Basic was quite limited.
00:03:20.280 It only had global variables—no local variables. All variables had a length of one, meaning I only had 26 global variables in the entire program.
00:03:27.360 This limitation was frustrating, and at that point, I thought programming was difficult and challenging.
00:03:36.680 However, I soon discovered more powerful programming languages like C, Pascal, Lisp, and Smalltalk.
00:03:45.560 Using these advanced languages made programming a lot easier and more enjoyable.
00:03:53.919 I became interested in programming languages in general and sought new programming languages and features that assist programmers.
00:04:00.039 Then I realized that every programming language has a creator, unlike natural languages that evolve over time.
00:04:06.720 It struck me, why can't I create my own programming language?
00:04:13.160 At that time, in the early 80s, we didn't have the Internet—only books and magazines supplied information.
00:04:24.480 I obtained a textbook for university called 'Compiler,' but it was too advanced for me.
00:04:30.280 After entering university, I majored in computer science and learned about various programming languages, algorithms, and how to implement programming languages.
00:04:39.079 After graduating, I became a professional programmer, and the internal passion to create Ruby kept me working for it for 30 years.
00:04:46.360 So, lesson two: motivation matters. Your drive should come from your motivation.
00:04:55.120 In 1983, I began creating Ruby during Japan's post-bubble economy, which led to a serious economic depression.
00:05:07.399 I was working as a programmer, but my project got canceled due to the economic climate.
00:05:13.960 Fortunately, I wasn't fired but became a maintainer of existing projects.
00:05:21.440 New development was prohibited, and I often dealt with customer complaints.
00:05:27.120 I would guide them to restart their computers when they faced software issues.
00:05:34.079 Due to the boredom of maintaining old projects, I started working secretly on Ruby using company resources.
00:05:41.679 As Grace Hopper famously said, 'It is easier to ask for forgiveness than permission,' so I ventured into creating Ruby without informing my manager.
00:05:50.920 Eventually, the company I worked for went bankrupt, so I can safely share this story.
00:05:58.560 Lesson three: sometimes you need to take initiative without waiting for permission.
00:06:10.919 About 20 years ago, I was working on Ruby and trying to improve performance by inlining C functions in the abstract syntax tree.
00:06:24.640 Almost one week into the project, my work was lost due to a system crash.
00:06:36.240 Unfortunately, at that time, we didn't have version control systems.
00:06:44.799 This experience taught me the importance of version control and backup.
00:06:54.360 I kept diaries and logs of my daily work on my PC, but when a hard drive crashed, I lost all of that.
00:07:01.800 Thus, lesson four: always keep backups.
00:07:08.080 Now, let's talk about Twitter, which was originally developed with Ruby.
00:07:13.920 Many famous services, like Twitter, moved away from Ruby.
00:07:19.440 Some developers claimed that Ruby was dead because of this.
00:07:25.920 However, I believe each service underwent significant changes and adaptations.
00:07:34.440 Twitter started as a short blogging service, with significant features added later.
00:07:40.760 In the beginning, it was easy to fail and pivot with new ideas.
00:07:47.920 Lesson five is to embrace trial and error.
00:07:54.920 A robust community is essential for the success of Ruby.
00:08:02.080 Ruby is open-source and depends greatly on community efforts.
00:08:09.440 If there were no community members, we wouldn't have Ruby today.
00:08:15.440 Initially, I wrote Ruby, but over time, community contributions evolved and improved it.
00:08:21.120 Ruby on Rails became a major part of Ruby's identity.
00:08:27.200 The community has created numerous supporting tools, libraries, and gems.
00:08:35.120 The success of Ruby is attributed not only to the language but to its supportive community.
00:08:42.960 Thought leaders and innovators from the community created many Ruby tools.
00:08:50.639 Many gems assist with common tasks, allowing developers to create efficiently.
00:08:58.720 We organize conferences globally to foster community engagement.
00:09:06.480 We began with RubyConf in 2001 with just 37 attendees, but now we have grown significantly.
00:09:14.280 Ruby's community consists of individuals who share a mutual interest in the language.
00:09:25.560 There are no formal memberships, and anyone can contribute.
00:09:31.680 Every community member has different reasons for joining.
00:09:38.400 We require a nurturing environment to prevent community members from leaving.
00:09:44.639 Open-source projects may languish if the community fails to flourish.
00:09:57.200 If we stop engaging and providing value, we risk projects becoming abandoned.
00:10:05.360 Keep moving forward; communities must keep swimming to survive.
00:10:12.080 In the past, we've accomplished great things as a community, continuously improving.
00:10:21.680 Ruby's performance has also improved dramatically since the earlier versions.
00:10:28.480 Ruby 3 aims to be three times faster than Ruby 2 in various benchmarks.
00:10:37.680 Technological advancements and community-driven improvements have greatly enhanced Ruby.
00:10:46.680 The introduction of JIT compilers has brought further enhancements to performance.
00:10:55.000 Ruby's speed is vital for real-world applications, which has significantly improved.
00:11:01.720 As a community, we strive to enhance productivity through collaboration and contributions.
00:11:08.560 We are working on improvements for concurrency in Ruby.
00:11:16.240 We aim to provide better tools and libraries that enhance development.
00:11:25.000 It's essential to keep developers engaged and to promote Ruby in the workplace.
00:11:33.760 As more people use Ruby professionally, they contribute back to the community.
00:11:42.160 Volunteering and organizing meetups is essential for nurturing connections.
00:11:50.000 We emphasize kindness within the Ruby community; a positive attitude is key.
00:11:57.680 When providing feedback, it’s important to be constructive.
00:12:06.560 I encourage everyone to attend conferences, form friendships, and collaborate.
00:12:14.200 Remember, every small input can lead to significant change.
00:12:22.720 Together, we will keep forward momentum; the core team will create continuous value.
00:12:31.120 Thank you.