Paris.rb Conf 2020

Keynote: How to Dominate the World

Paris.rb Conf 2020

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.