Software Development

Keynote: How to Dominate the World

Keynote: How to Dominate the World

by Yukihiro "Matz" Matsumoto

In his keynote talk titled "How to Dominate the World" at the Paris.rb Conf 2020, Yukihiro "Matz" Matsumoto explores the factors behind the success of the Ruby programming language. He reflects on Ruby's evolution, its significance in the software development community, and the lessons that can be learned for software development in general.

Key points covered in the talk include:

- Background on Ruby: Matz shares how Ruby was created in the early 90s amidst Japan's economic depression. Initially, it was a little-known scripting language until it gained popularity through frameworks like Rails. Today, Ruby is recognized among the top programming languages.

- Motivation: The core of Ruby's development was pure motivation. Matz emphasizes that genuine passion can drive the creation of a programming language and lead to long-term success.

- Defining Target Audience: Matz created Ruby primarily for himself, which emphasizes the importance of having a clear target audience for software projects. A focused audience can lead to better engagement and success.

- Community Impact: Matz underscores the critical role of community in open-source projects. Ruby’s inclusive community approach encourages participation and collaboration, which has been essential to its success.

- Software Philosophy: He discusses the philosophy of simplicity in Ruby, which has made it accessible to many developers compared to more complex alternatives. This simplicity fosters engagement and community growth.

- Guiding Principles: Establishing clear goals and community guidelines can unify efforts. Matz refers to Ruby 3’s goals for better performance and concurrency as a clear direction for future development.

- Commitment to Improvement: Matz highlights the necessity of a long-term commitment to software development and the community’s needs. He emphasizes the importance of adapting to changes and focusing on improvement to ensure sustained success.

In conclusion, Matz encourages a collective effort in the software community to continue innovating and improving technologies. His message conveys that with motivation, a clear target audience, and a supportive community, software projects can thrive and potentially "dominate the world". He emphasizes that Ruby will continue evolving, focusing on enhancing performance and maintaining backward compatibility with upcoming releases.

00:00:14 My first talk outside of Japan was in 2001 at the Linux Expo in Paris.
00:00:20 That was my first talk in English, and back then I couldn't speak English very well.
00:00:26 Actually, I'm still not very fluent, but it was much worse back then.
00:00:35 Over time, I visited Paris several times for conferences and events.
00:00:44 Back then, we didn't have Rails, so Ruby was basically an unknown scripting language.
00:00:53 It was a newborn scripting language from the Far East.
00:01:03 Paris is a very important place in the history of Ruby, especially internationally.
00:01:10 I was at the first RubyConf in Tampa, Florida, that same year.
00:01:18 At that time, Ruby was not well-known.
00:01:26 It eventually grew into a popular programming language, thanks to Rails.
00:01:34 Ruby is currently the 15th most popular language in the TIOBE index.
00:01:41 It's even higher than several popular languages like Haskell and Rust.
00:01:47 Ruby also holds a prominent position in the RedMonk index.
00:01:55 But Ruby is not just about Rails.
00:02:00 Ruby can be used as a scripting language and a systems programming language.
00:02:06 DevOps professionals also use Ruby with tools like Chef and Puppet.
00:02:13 Some developers even use Ruby for mobile applications using technologies like RubyMotion.
00:02:25 Additionally, Ruby is being explored in scientific fields and machine learning.
00:02:33 While languages like Python and R dominate in these areas, Ruby is still applicable.
00:02:39 We have alternatives like mruby for embedding Ruby in small devices.
00:02:47 Ruby can run in tiny computers with as little as 32 kilobytes of memory.
00:02:54 As a language, Ruby has become quite popular.
00:03:04 If you create open-source software, you might receive 50 or 100 stars on GitHub.
00:03:10 To dominate the world, we have to make software popular.
00:03:17 There are lessons we can learn from the history of the Ruby language.
00:03:27 The first important factor in our success is motivation.
00:03:36 I created Ruby just for fun.
00:03:43 In the early 90s, Japan was experiencing a significant economic depression.
00:03:50 I worked as a programmer on internal tools for software developers.
00:03:58 My project got canceled, and I was assigned to maintain existing tools.
00:04:06 Other employees were assigned to money-making projects.
00:04:14 I was effectively unmanaged and free to explore programming.
00:04:21 I liked programming and was interested in programming languages.
00:04:29 With the time I had, I started working on Ruby.
00:04:35 Creating a programming language offers a unique sense of freedom.
00:04:42 Not many get the opportunity to create a language.
00:04:50 For most, languages are tools to learn and use.
00:04:57 For me, a language is something to create.
00:05:06 Programming languages should guide other programmers towards better productivity.
00:05:15 All Ruby users are influenced by the language designer.
00:05:24 For me, the motivation to create Ruby was rooted in love for programming.
00:05:31 Consider the motivation behind your software project.
00:05:41 Software projects aren't achieved in a day or a week but take years.
00:05:48 For software to be successful, it requires long-lasting motivation.
00:05:56 The second factor for success is defining the target audience.
00:06:03 I created Ruby for myself—I am the target audience.
00:06:11 I wanted to program in a better programming language.
00:06:18 So, I created Ruby to satisfy my own programming needs.
00:06:26 I made it open-source for backup, not expecting others to use it.
00:06:34 But surprisingly, people liked it.
00:06:42 The key takeaway here is to have a clear target audience.
00:06:50 Different people prefer different programming languages.
00:07:00 There are enough people like me who love Ruby.
00:07:08 Defining target audiences for your software is crucial.
00:07:15 It should be concrete, not vague.
00:07:23 The third factor for success is community.
00:07:31 Many years ago, when I worked as a professional programmer, there was no community.
00:07:39 Open-source software now often thrives on community.
00:07:47 Today, software development is driven by the community.
00:07:54 GitHub has changed how we develop software.
00:08:00 You no longer need to be part of a company to contribute.
00:08:08 If you have an idea to improve a software, you can create a proposal or pull request.
00:08:16 The improvement can be driven by the community.
00:08:23 In Ruby, the philosophy is to include everyone who is willing to participate.
00:08:30 Inclusivity is the hallmark of community-driven development.
00:08:38 Imperfection allows for community involvement.
00:08:46 In the early days of Ruby, there were many bugs.
00:08:56 I remember the early communication on the Ruby mailing list.
00:09:04 The first email congratulated me on the release of Ruby.
00:09:12 Then, I received reports of bugs—one message mentioned it didn't compile!
00:09:20 The simplicity of Ruby encouraged people to engage.
00:09:28 Today, we have a lot of complexity in software development.
00:09:39 Many open-source projects fail due to their complexity.
00:09:46 The simplicity of Ruby made it accessible.
00:09:52 Netscape failed because their software was too complex and difficult to contribute to.
00:09:59 Ruby's early success came because it was significantly simpler.
00:10:08 Imperfect software invites participation.
00:10:16 Another important factor is community policy or philosophy.
00:10:25 Ruby emphasizes the joy of programming, focusing on human needs.
00:10:33 Clear goals help guide community involvement.
00:10:41 For your project, create a community and establish guiding principles.
00:10:48 For example, Ruby 3 has clear goals for better performance and concurrency.
00:10:57 Establishing a clear vision is vital for the success of any project.
00:11:06 I believe software design should primarily be guided by few people, if possible.
00:11:14 The leader must present a vision that goes beyond expectations.
00:11:22 For example, when I released Ruby, some people complained.
00:11:30 They thought they already had suitable scripting languages.
00:11:38 But time proved Ruby’s worth as a successful language.
00:11:45 Similarly, when Twitter started, people were skeptical of its format.
00:11:54 Yet Twitter has become one of the most popular social platforms.
00:12:03 It's essential for designers to present their visions consistently.
00:12:12 The success of software projects hinges on motivation, target audience, and community.
00:12:20 Software success requires long-term commitment.
00:12:28 You need a clear vision and well-defined target audiences.
00:12:36 The community plays a crucial role in this regard.
00:12:44 In recent years, software development has radically evolved.
00:12:51 Focus on improvement and adapt to social development.
00:12:59 As your software grows, understanding community involvement is key.
00:13:06 In Ruby's early stages, we concentrated on the language itself.
00:13:14 In later stages, we focused on community building.
00:13:21 We needed to establish RubyGems for packages and libraries.
00:13:29 Providing resources for the community is more important than ever.
00:13:36 Organizing communities around shared values is crucial.
00:13:43 It can be challenging to define why you love Ruby.
00:13:49 We all share a common vision of the goodness in Ruby.
00:13:56 This shared vision should be concretized to guide development.
00:14:04 Establishing community guidelines and principles leads to growth.
00:14:11 In Ruby 3, we aim for better performance and ease of development.
00:14:18 Having a unifying vision can make significant contributions towards success.
00:14:27 In summary, motivation, target audience, and community are key factors.
00:14:33 Stay committed to improvement and community-driven development.
00:14:41 This is how we can dominate the world with technology.
00:14:48 It is possible to create a bright future.
00:14:56 So let’s work together to continue innovating.
00:15:04 We will release Ruby 3 in December 2020, no matter what.
00:15:18 Ruby will remain compatible, learning from past experiences.
00:15:25 In the past, Python faced compatibility challenges with version changes.
00:15:31 We want to avoid similar issues with Ruby.
00:15:38 Our goal is to keep the community strong while improving the language.
00:15:45 We aim to integrate new features while maintaining backward compatibility.
00:15:52 This balance is crucial for the success of Ruby.
00:15:59 Ruby 3 will bring innovative features like a JIT compiler.
00:16:07 We’re working hard to improve the experience of using Ruby.
00:16:14 The next steps include enhancing tools and libraries.
00:16:21 We want to keep improving Ruby for the community.
00:16:28 We believe in the importance of good documentation.
00:16:35 Contributions to documentation and references are welcome.
00:16:42 Ruby is a welcoming community for new contributors.
00:16:50 If you are interested, look into the Ruby development on GitHub.
00:16:57 You don’t need to be an expert; everyone can contribute.
00:17:11 Thank you for your time today.
00:17:18 Do you have any questions?
00:17:24 We can take questions now.
00:17:29 Just raise your hand, and a mic will come to you.
00:17:36 Please repeat your question once you have the mic.
00:17:44 User: Three years ago, you talked about Ruby 3 being released.
00:17:52 Will it truly be three times faster compared to version 1.9?
00:17:59 Matz: Yes, for some benchmarks.
00:18:06 We’ve improved memory management and introduced a JIT compiler.
00:18:12 Some CPU-bound benchmarks show over three times faster performance.
00:18:19 For Rails applications, the improvement is less clear.
00:18:26 We are working on more accurate benchmark comparisons.
00:18:33 User: You mentioned Ruby was built with you as the target audience.
00:18:40 Have there been features added under community pressure that you didn't like?
00:18:46 Matz: Early on, I borrowed too many ideas from Perl.
00:18:53 I regret some of the naming conventions like dollar variables.
00:19:00 We are working to fix some of those early decisions.
00:19:08 User: What is your opinion on alternative Ruby implementations?
00:19:15 Matz: I appreciate alternative implementations like JRuby.
00:19:23 JRuby offers performance improvements due to the JVM.
00:19:30 Other implementations, like Opal, provide unique capabilities.
00:19:37 User: What are your thoughts on the Crystal language?
00:19:44 Matz: Crystal is a statically typed language inspired by Ruby.
00:19:50 While it has its own path, there are ideas worth exploring.
00:19:56 I hope it develops a bigger community.
00:20:03 User: What do you think about type-checking tools?
00:20:10 Matz: We are collaborating with various type-checking projects.
00:20:16 We aim for better integration and broader functionality.
00:20:23 User: Ruby is like your child, but how has it evolved over the years?
00:20:30 Matz: My vision has remained stable.
00:20:39 Ruby has absorbed influences from functional programming languages.
00:20:46 The focus on web applications was initially outside my scope.
00:20:54 The core vision of Ruby remains intact.
00:21:01 User: Will Ruby be rewritten in Rust?
00:21:07 Matz: I'm a C expert and prefer to stick with it.
00:21:13 But I encourage alternative implementations in Rust.
00:21:20 Artichoke is an example of Ruby written in Rust.
00:21:27 Thank you for your questions.